changeset 4933:44a0e7606f7a HEAD

Use seq_range_array_remove_range() instead of slowly iterating ourself.
author Timo Sirainen <tss@iki.fi>
date Wed, 20 Dec 2006 16:45:39 +0200
parents f38f3f11a93f
children 5ffaf2d47671
files src/plugins/fts-squat/squat-uidlist.c
diffstat 1 files changed, 10 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/src/plugins/fts-squat/squat-uidlist.c	Wed Dec 20 16:44:40 2006 +0200
+++ b/src/plugins/fts-squat/squat-uidlist.c	Wed Dec 20 16:45:39 2006 +0200
@@ -45,7 +45,7 @@
 
 	ARRAY_TYPE(seq_range) *result;
 
-	uint32_t filter_pos;
+	uint32_t filter_uid_pos;
 };
 
 struct squat_uidlist {
@@ -976,14 +976,16 @@
 static void
 squat_uidlist_get_add_uid(struct squat_uidlist_get_context *ctx, uint32_t uid)
 {
-	if (ctx->filter_pos == 0) {
+	if (ctx->filter_uid_pos == 0) {
 		seq_range_array_add(ctx->result, 0, uid);
 		return;
 	}
 
-	for (; ctx->filter_pos < uid; ctx->filter_pos++)
-		seq_range_array_remove(ctx->result, ctx->filter_pos);
-	ctx->filter_pos++;
+	if (ctx->filter_uid_pos < uid) {
+		seq_range_array_remove_range(ctx->result,
+					     ctx->filter_uid_pos, uid-1);
+	}
+	ctx->filter_uid_pos = uid+1;
 }
 
 static int
@@ -1053,15 +1055,15 @@
 	memset(&ctx, 0, sizeof(ctx));
 	ctx.uidlist = uidlist;
 	ctx.result = result;
-	ctx.filter_pos = 1;
+	ctx.filter_uid_pos = 1;
 
 	if (squat_uidlist_get_ctx(&ctx, uid_list_idx) < 0)
 		return -1;
 
 	range = array_get(ctx.result, &count);
 	if (count > 0) {
-		for (; ctx.filter_pos <= range[count-1].seq2; ctx.filter_pos++)
-			seq_range_array_remove(result, ctx.filter_pos);
+		seq_range_array_remove_range(result, ctx.filter_uid_pos,
+					     range[count-1].seq2);
 	}
 	return 0;
 }