+static RSET rsbool_create_base( const struct rset_control *ctrl,
+ 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) )
+{
+ RSET rnew=rset_create_base(ctrl, nmem);
+ struct rset_bool_info *info;
+ info = (struct rset_bool_info *) nmem_malloc(rnew->nmem,sizeof(*info));
+ info->key_size = key_size;
+ info->rset_l = rset_l;
+ info->rset_r = rset_r;
+ info->cmp = cmp;
+ info->log_item = log_item;
+ info->rfd_list = NULL;
+ info->free_list = NULL;
+
+ 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;
+
+ assert (info->rfd_list == NULL);
+ rset_delete (info->rset_l);
+ rset_delete (info->rset_r);
+}
+
+#if 0