+
+ zebraSet->rset = rpn_search (zh, output->mem, rpn,
+ zebraSet->num_bases,
+ zebraSet->basenames, zebraSet->name,
+ zebraSet);
+ zh->hits = zebraSet->hits;
+ if (zebraSet->rset)
+ zebraSet->rpn = rpn;
+ zebraSet->locked = 0;
+ return zebraSet;
+}
+
+void resultSetAddTerm (ZebraHandle zh, ZebraSet s, int reg_type,
+ const char *db, int set,
+ int use, const char *term)
+{
+ if (!s->nmem)
+ s->nmem = nmem_create ();
+ if (!s->term_entries)
+ {
+ int i;
+ s->term_entries_max = 1000;
+ s->term_entries =
+ nmem_malloc (s->nmem, s->term_entries_max *
+ sizeof(*s->term_entries));
+ for (i = 0; i < s->term_entries_max; i++)
+ s->term_entries[i].term = 0;
+ }
+ if (s->hits < s->term_entries_max)
+ {
+ s->term_entries[s->hits].reg_type = reg_type;
+ s->term_entries[s->hits].db = nmem_strdup (s->nmem, db);
+ s->term_entries[s->hits].set = set;
+ s->term_entries[s->hits].use = use;
+ s->term_entries[s->hits].term = nmem_strdup (s->nmem, term);
+ }
+ (s->hits)++;
+}
+
+
+const char *zebra_resultSetTerms (ZebraHandle zh, const char *setname,
+ int no, int *count, int *no_max)
+{
+ ZebraSet s = resultSetGet (zh, setname);
+
+ *count = 0;
+ *no_max = 0;
+ if (!s || !s->rset)
+ return 0;
+ *no_max = s->rset->no_rset_terms;
+ if (no < 0 || no >= *no_max)
+ return 0;
+ *count = s->rset->rset_terms[no]->count;
+ return s->rset->rset_terms[no]->name;
+}
+
+
+ZebraSet resultSetAdd (ZebraHandle zh, const char *name, int ov)
+{
+ ZebraSet s;
+ int i;
+
+ for (s = zh->sets; s; s = s->next)