- info = (struct rset_bool_info *) xmalloc (sizeof(*info));
- info->key_size = bool_parms->key_size;
- info->rset_l = bool_parms->rset_l;
- info->rset_r = bool_parms->rset_r;
- if (rset_is_volatile(info->rset_l) || rset_is_volatile(info->rset_r))
- ct->flags |= RSET_FLAG_VOLATILE;
- info->cmp = bool_parms->cmp;
- info->rfd_list = NULL;
-
- 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;
+RSET rsbool_create_and( NMEM nmem, const struct key_control *kcontrol,
+ RSET rset_l, RSET rset_r)
+{
+ return rsbool_create_base(rset_kind_and, nmem, kcontrol,
+ rset_l, rset_r);
+}
+
+RSET rsbool_create_or( NMEM nmem, const struct key_control *kcontrol,
+ RSET rset_l, RSET rset_r)
+{
+ return rsbool_create_base(rset_kind_or, nmem, kcontrol,
+ rset_l, rset_r);
+}
+
+RSET rsbool_create_not( NMEM nmem, const struct key_control *kcontrol,
+ RSET rset_l, RSET rset_r)
+{
+ return rsbool_create_base(rset_kind_not, nmem, kcontrol,
+ rset_l, rset_r);
+}
+
+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);