+static void add_rec (struct rset_rel_info *info, double score, void *key)
+{
+ int idx, i, j;
+
+ for (i = 0; i<info->no_rec; i++)
+ {
+ idx = info->sort_idx[i];
+ if (score <= info->score_buf[idx])
+ break;
+ }
+ if (i == 0)
+ {
+ if (info->no_rec == info->max_rec)
+ return;
+ for (j = info->no_rec; j > 0; --j)
+ info->sort_idx[j] = info->sort_idx[j-1];
+ idx = info->sort_idx[j] = info->no_rec;
+ ++(info->no_rec);
+ }
+ else
+ {
+ idx = info->sort_idx[0];
+
+ --i;
+ for (j = 0; j < i; ++j)
+ info->sort_idx[j] = info->sort_idx[j+1];
+ info->sort_idx[j] = idx;
+
+ }
+ memcpy (info->key_buf + idx*info->key_size, key, info->key_size);
+ info->score_buf[idx] = score;
+}
+