X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=rset%2Frsbool.c;h=d4683fa1c860e8c3602d86d410d9e22b303f44bb;hb=2cd05dfd682c368fd3bd73912144344d2954325f;hp=318ac45dcc6758bba34210ec5ebd4bb07cf99489;hpb=c8b510c1c66a9119ede10b63975fc5f7f1ea49f5;p=idzebra-moved-to-github.git diff --git a/rset/rsbool.c b/rset/rsbool.c index 318ac45..d4683fa 100644 --- a/rset/rsbool.c +++ b/rset/rsbool.c @@ -1,4 +1,4 @@ -/* $Id: rsbool.c,v 1.54 2005-04-26 10:09:38 adam Exp $ +/* $Id: rsbool.c,v 1.57 2005-05-24 20:40:15 adam Exp $ Copyright (C) 1995-2005 Index Data ApS @@ -83,12 +83,12 @@ static const struct rset_control control_not = r_write, }; -struct rset_bool_info { +struct rset_private { RSET rset_l; RSET rset_r; }; -struct rset_bool_rfd { +struct rfd_private { zint hits; RSFD rfd_l; RSFD rfd_r; @@ -102,19 +102,24 @@ struct rset_bool_rfd { }; static RSET rsbool_create_base(const struct rset_control *ctrl, - NMEM nmem, const struct key_control *kcontrol, + NMEM nmem, + struct rset_key_control *kcontrol, int scope, RSET rset_l, RSET rset_r) { - RSET rnew = rset_create_base(ctrl, nmem, kcontrol, scope,0); - struct rset_bool_info *info; - info = (struct rset_bool_info *) nmem_malloc(rnew->nmem,sizeof(*info)); + RSET children[2], rnew; + struct rset_private *info; + + children[0] = rset_l; + children[1] = rset_r; + rnew = rset_create_base(ctrl, nmem, kcontrol, scope, 0, 2, children); + info = (struct rset_private *) nmem_malloc(rnew->nmem, sizeof(*info)); info->rset_l = rset_l; info->rset_r = rset_r; rnew->priv = info; return rnew; } -RSET rsbool_create_and( NMEM nmem, const struct key_control *kcontrol, +RSET rsbool_create_and( NMEM nmem, struct rset_key_control *kcontrol, int scope, RSET rset_l, RSET rset_r) { return rsbool_create_base(&control_and, nmem, kcontrol, @@ -122,34 +127,29 @@ RSET rsbool_create_and( NMEM nmem, const struct key_control *kcontrol, rset_l, rset_r); } -RSET rsbool_create_or( NMEM nmem, const struct key_control *kcontrol, - int scope, RSET rset_l, RSET rset_r) +RSET rsbool_create_or(NMEM nmem, struct rset_key_control *kcontrol, + int scope, RSET rset_l, RSET rset_r) { return rsbool_create_base(&control_or, nmem, kcontrol, scope, rset_l, rset_r); } -RSET rsbool_create_not( NMEM nmem, const struct key_control *kcontrol, - int scope, RSET rset_l, RSET rset_r) +RSET rsbool_create_not(NMEM nmem, struct rset_key_control *kcontrol, + int scope, RSET rset_l, RSET rset_r) { return rsbool_create_base(&control_not, nmem, kcontrol, scope, rset_l, rset_r); } -static void r_delete (RSET ct) +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); } - -static RSFD r_open (RSET ct, int flag) +static RSFD r_open(RSET ct, int flag) { - struct rset_bool_info *info = (struct rset_bool_info *) ct->priv; + struct rset_private *info = (struct rset_private *) ct->priv; RSFD rfd; - struct rset_bool_rfd *p; - + struct rfd_private *p; if (flag & RSETF_WRITE) { @@ -158,7 +158,7 @@ static RSFD r_open (RSET ct, int flag) } rfd = rfd_create_base(ct); if (rfd->priv) - p = (struct rset_bool_rfd *)rfd->priv; + p = (struct rfd_private *)rfd->priv; else { p = nmem_malloc(ct->nmem,sizeof(*p)); rfd->priv = p; @@ -179,21 +179,17 @@ static RSFD r_open (RSET ct, int flag) static void r_close (RSFD rfd) { - /* struct rset_bool_info *info = (struct rset_bool_info*)(rfd->rset->priv); */ - struct rset_bool_rfd *prfd=(struct rset_bool_rfd *)rfd->priv; + struct rfd_private *prfd=(struct rfd_private *)rfd->priv; rset_close (prfd->rfd_l); rset_close (prfd->rfd_r); - rfd_delete_base(rfd); } - - static int r_forward(RSFD rfd, void *buf, TERMID *term, const void *untilbuf) { - struct rset_bool_rfd *p = (struct rset_bool_rfd *)rfd->priv; - const struct key_control *kctrl=rfd->rset->keycontrol; + struct rfd_private *p = (struct rfd_private *)rfd->priv; + const struct rset_key_control *kctrl=rfd->rset->keycontrol; if ( p->more_l && ((kctrl->cmp)(untilbuf,p->buf_l)>=rfd->rset->scope) ) p->more_l = rset_forward(p->rfd_l, p->buf_l, &p->term_l, untilbuf); @@ -221,8 +217,8 @@ static int r_forward(RSFD rfd, void *buf, TERMID *term, static int r_read_and(RSFD rfd, void *buf, TERMID *term) { - struct rset_bool_rfd *p=(struct rset_bool_rfd *)rfd->priv; - const struct key_control *kctrl=rfd->rset->keycontrol; + struct rfd_private *p=(struct rfd_private *)rfd->priv; + const struct rset_key_control *kctrl=rfd->rset->keycontrol; while (p->more_l || p->more_r) { @@ -352,8 +348,8 @@ static int r_read_and(RSFD rfd, void *buf, TERMID *term) static int r_read_or (RSFD rfd, void *buf, TERMID *term) { - struct rset_bool_rfd *p = (struct rset_bool_rfd *)rfd->priv; - const struct key_control *kctrl = rfd->rset->keycontrol; + struct rfd_private *p = (struct rfd_private *)rfd->priv; + const struct rset_key_control *kctrl = rfd->rset->keycontrol; while (p->more_l || p->more_r) { @@ -417,8 +413,8 @@ static int r_read_or (RSFD rfd, void *buf, TERMID *term) static int r_read_not(RSFD rfd, void *buf, TERMID *term) { - struct rset_bool_rfd *p = (struct rset_bool_rfd *)rfd->priv; - const struct key_control *kctrl = rfd->rset->keycontrol; + struct rfd_private *p = (struct rfd_private *)rfd->priv; + const struct rset_key_control *kctrl = rfd->rset->keycontrol; while (p->more_l || p->more_r) { @@ -478,7 +474,7 @@ static int r_write(RSFD rfd, const void *buf) static void r_pos(RSFD rfd, double *current, double *total) { - struct rset_bool_rfd *p = (struct rset_bool_rfd *)rfd->priv; + struct rfd_private *p = (struct rfd_private *)rfd->priv; double lcur, ltot; double rcur, rtot; double r; @@ -511,7 +507,7 @@ static void r_pos(RSFD rfd, double *current, double *total) static void r_get_terms(RSET ct, TERMID *terms, int maxterms, int *curterm) { - struct rset_bool_info *info = (struct rset_bool_info *) ct->priv; + struct rset_private *info = (struct rset_private *) ct->priv; rset_getterms(info->rset_l, terms, maxterms, curterm); rset_getterms(info->rset_r, terms, maxterms, curterm); }