[GRASS-SVN] r47354 - grass/trunk/lib/vector/diglib
svn_grass at osgeo.org
svn_grass at osgeo.org
Tue Aug 2 08:40:27 EDT 2011
Author: mmetz
Date: 2011-08-02 05:40:27 -0700 (Tue, 02 Aug 2011)
New Revision: 47354
Modified:
grass/trunk/lib/vector/diglib/cindex.c
Log:
faster insertion
Modified: grass/trunk/lib/vector/diglib/cindex.c
===================================================================
--- grass/trunk/lib/vector/diglib/cindex.c 2011-08-02 12:38:26 UTC (rev 47353)
+++ grass/trunk/lib/vector/diglib/cindex.c 2011-08-02 12:40:27 UTC (rev 47354)
@@ -208,22 +208,19 @@
ci->cat = G_realloc(ci->cat, ci->a_cats * 3 * sizeof(int));
}
- /* Find position */
- for (position = 0; position < ci->n_cats; position++) {
- if (ci->cat[position][0] >= cat) {
- break;
+ /* Find position and move on the way */
+ for (position = ci->n_cats; position > 0; position--) {
+ if (ci->cat[position - 1][0] < cat ||
+ (ci->cat[position - 1][0] == cat && ci->cat[position - 1][1] <= type)) {
+ break;
}
+ ci->cat[position][0] = ci->cat[position - 1][0];
+ ci->cat[position][1] = ci->cat[position - 1][1];
+ ci->cat[position][2] = ci->cat[position - 1][2];
}
G_debug(4, "position = %d", position);
- /* Move */
- for (i = ci->n_cats; i > position; i--) {
- ci->cat[i][0] = ci->cat[i - 1][0];
- ci->cat[i][1] = ci->cat[i - 1][1];
- ci->cat[i][2] = ci->cat[i - 1][2];
- }
-
ci->cat[position][0] = cat;
ci->cat[position][1] = type;
ci->cat[position][2] = line;
More information about the grass-commit
mailing list