- info->term_index_s = info->rset_l->no_rset_terms;
- ct->no_rset_terms =
- info->rset_l->no_rset_terms + info->rset_r->no_rset_terms;
- ct->rset_terms = (RSET_TERM *)
- xmalloc (sizeof (*ct->rset_terms) * ct->no_rset_terms);
-
- memcpy (ct->rset_terms, info->rset_l->rset_terms,
- info->rset_l->no_rset_terms * sizeof(*ct->rset_terms));
- memcpy (ct->rset_terms + info->rset_l->no_rset_terms,
- info->rset_r->rset_terms,
- info->rset_r->no_rset_terms * sizeof(*ct->rset_terms));
- return info;
+ rnew->priv=info;
+ return rnew;
+}
+
+
+RSET rsbool_create_and( NMEM nmem, int key_size,
+ int (*cmp)(const void *p1, const void *p2),
+ RSET rset_l, RSET rset_r,
+ void (*log_item)(int logmask, const void *p, const char *txt) )
+{
+ return rsbool_create_base(rset_kind_and, nmem, key_size, cmp,
+ rset_l, rset_r, log_item);
+}
+
+RSET rsbool_create_or( NMEM nmem, int key_size,
+ int (*cmp)(const void *p1, const void *p2),
+ RSET rset_l, RSET rset_r,
+ void (*log_item)(int logmask, const void *p, const char *txt) )
+{
+ return rsbool_create_base(rset_kind_or, nmem, key_size, cmp,
+ rset_l, rset_r, log_item);
+}
+
+RSET rsbool_create_not( NMEM nmem, int key_size,
+ int (*cmp)(const void *p1, const void *p2),
+ RSET rset_l, RSET rset_r,
+ void (*log_item)(int logmask, const void *p, const char *txt) )
+{
+ return rsbool_create_base(rset_kind_not, nmem, key_size, cmp,
+ rset_l, rset_r, log_item);
+}
+
+static void r_delete (RSET ct)
+{
+ struct rset_bool_info *info = (struct rset_bool_info *) ct->priv;
+ rset_delete (info->rset_l);
+ rset_delete (info->rset_r);