X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=rset%2Frsbool.c;h=76d3e7d8a1eb0a809b4e68ecb739ac7382a549a4;hb=8c2b1cb07e43a08cf1e0ac844c81d4e066eacf23;hp=22260b41ce572da5c5d99b918fc1d42046358a6a;hpb=d697c51ca57a4b008e7575e6d414084fd77ed485;p=idzebra-moved-to-github.git diff --git a/rset/rsbool.c b/rset/rsbool.c index 22260b4..76d3e7d 100644 --- a/rset/rsbool.c +++ b/rset/rsbool.c @@ -1,4 +1,4 @@ -/* $Id: rsbool.c,v 1.26 2004-05-30 18:09:31 adam Exp $ +/* $Id: rsbool.c,v 1.30 2004-06-16 20:32:07 adam Exp $ Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004 Index Data Aps @@ -20,8 +20,6 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#define RSET_DEBUG 0 - #include #include #include @@ -30,8 +28,9 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include #include -/* for key_logdump. Debugging only */ -#include <../index/index.h> +#ifndef RSET_DEBUG +#define RSET_DEBUG 0 +#endif static void *r_create(RSET ct, const struct rset_control *sel, void *parms); static RSFD r_open (RSET ct, int flag); @@ -104,6 +103,7 @@ struct rset_bool_info { RSET rset_r; int term_index_s; int (*cmp)(const void *p1, const void *p2); + void (*log_item)(int logmask, const void *p, const char *txt); struct rset_bool_rfd *rfd_list; }; @@ -133,6 +133,7 @@ static void *r_create (RSET ct, const struct rset_control *sel, void *parms) if (rset_is_volatile(info->rset_l) || rset_is_volatile(info->rset_r)) ct->flags |= RSET_FLAG_VOLATILE; info->cmp = bool_parms->cmp; + info->log_item = bool_parms->log_item; info->rfd_list = NULL; info->term_index_s = info->rset_l->no_rset_terms; @@ -226,7 +227,6 @@ static int r_forward (RSET ct, RSFD rfd, void *buf, int *term_index, { struct rset_bool_info *info = ((struct rset_bool_rfd*)rfd)->info; struct rset_bool_rfd *p = (struct rset_bool_rfd *) rfd; - int cmp=0; int rc; #if RSET_DEBUG @@ -255,32 +255,6 @@ static int r_forward (RSET ct, RSFD rfd, void *buf, int *term_index, rfd, rc, p->more_l, p->more_r); #endif return rc; - - if (p->more_l && p->more_r) - cmp = (*info->cmp)(p->buf_l, p->buf_r); - else if (p->more_l) - cmp = -2; - else - cmp = 2; - if ( (cmp<0) && (p->more_l) ) - { - memcpy (buf, p->buf_l, info->key_size); - *term_index = p->term_index_l; -#if RSET_DEBUG - logf (LOG_DEBUG, "rsbool_forward returning L (cmp=%d)",cmp); -#endif - return 1; - } else if ( (cmp>0) && (p->more_r) ) - { - memcpy (buf, p->buf_r, info->key_size); - *term_index = p->term_index_r + info->term_index_s; -#if RSET_DEBUG - logf (LOG_DEBUG, "rsbool_forward returning R (cmp=%d)",cmp); -#endif - return 1; - } - /* return ( p->more_l || p->more_r); */ - return 0; } static int r_count (RSET ct) @@ -322,8 +296,8 @@ static int r_read_and (RSFD rfd, void *buf, int *term_index) #if RSET_DEBUG logf (LOG_DEBUG, "r_read_and [%p] looping: m=%d/%d c=%d t=%d", rfd, p->more_l, p->more_r, cmp, p->tail); - key_logdump(LOG_DEBUG,p->buf_l); - key_logdump(LOG_DEBUG,p->buf_r); + (*info->log_item)(LOG_DEBUG, p->buf_l, "left "); + (*info->log_item)(LOG_DEBUG, p->buf_r, "right "); #endif if (!cmp) { @@ -344,6 +318,7 @@ static int r_read_and (RSFD rfd, void *buf, int *term_index) logf (LOG_DEBUG, "r_read_and [%p] returning R m=%d/%d c=%d", rfd, p->more_l, p->more_r, cmp); key_logdump(LOG_DEBUG,buf); + (*info->log_item)(LOG_DEBUG, buf, ""); #endif return 1; } @@ -357,7 +332,7 @@ static int r_read_and (RSFD rfd, void *buf, int *term_index) #if RSET_DEBUG logf (LOG_DEBUG, "r_read_and [%p] returning L m=%d/%d c=%d", rfd, p->more_l, p->more_r, cmp); - key_logdump(LOG_DEBUG,buf); + (*info->log_item)(LOG_DEBUG, buf, ""); #endif return 1; } @@ -377,7 +352,7 @@ static int r_read_and (RSFD rfd, void *buf, int *term_index) #if RSET_DEBUG logf (LOG_DEBUG, "r_read_and returning C m=%d/%d c=%d", p->more_l, p->more_r, cmp); - key_logdump(LOG_DEBUG,buf); + (*info->log_item)(LOG_DEBUG, buf, ""); #endif return 1; } @@ -394,10 +369,11 @@ static int r_read_and (RSFD rfd, void *buf, int *term_index) #if RSET_DEBUG logf (LOG_DEBUG, "r_read_and [%p] returning R tail m=%d/%d c=%d", rfd, p->more_l, p->more_r, cmp); - key_logdump(LOG_DEBUG,buf); + (*info->log_item)(LOG_DEBUG, buf, ""); #endif return 1; - } else + } + else { #if RSET_DEBUG logf (LOG_DEBUG, "r_read_and [%p] about to forward R m=%d/%d c=%d", @@ -427,7 +403,7 @@ static int r_read_and (RSFD rfd, void *buf, int *term_index) #if RSET_DEBUG logf (LOG_DEBUG, "r_read_and [%p] returning R tail m=%d/%d c=%d", rfd, p->more_l, p->more_r, cmp); - key_logdump(LOG_DEBUG,buf); + (*info->log_item)(LOG_DEBUG, buf, ""); #endif return 1; } @@ -443,7 +419,7 @@ static int r_read_and (RSFD rfd, void *buf, int *term_index) #if RSET_DEBUG logf (LOG_DEBUG, "r_read_and [%p] returning L tail m=%d/%d c=%d", rfd, p->more_l, p->more_r, cmp); - key_logdump(LOG_DEBUG,buf); + (*info->log_item)(LOG_DEBUG, buf, ""); #endif return 1; } @@ -497,7 +473,7 @@ static int r_read_or (RSFD rfd, void *buf, int *term_index) #if RSET_DEBUG logf (LOG_DEBUG, "r_read_or returning A m=%d/%d c=%d", p->more_l, p->more_r, cmp); - key_logdump(LOG_DEBUG,buf); + (*info->log_item)(LOG_DEBUG, buf, ""); #endif return 1; } @@ -510,7 +486,7 @@ static int r_read_or (RSFD rfd, void *buf, int *term_index) #if RSET_DEBUG logf (LOG_DEBUG, "r_read_or returning B m=%d/%d c=%d", p->more_l, p->more_r, cmp); - key_logdump(LOG_DEBUG,buf); + (*info->log_item)(LOG_DEBUG, buf, ""); #endif return 1; } @@ -523,7 +499,7 @@ static int r_read_or (RSFD rfd, void *buf, int *term_index) #if RSET_DEBUG logf (LOG_DEBUG, "r_read_or returning C m=%d/%d c=%d", p->more_l, p->more_r, cmp); - key_logdump(LOG_DEBUG,buf); + (*info->log_item)(LOG_DEBUG, buf, ""); #endif return 1; } @@ -555,15 +531,17 @@ static int r_read_not (RSFD rfd, void *buf, int *term_index) return 1; } else if (cmp > 1) + { #if 0 p->more_r = rset_read (info->rset_r, p->rfd_r, p->buf_r, &p->term_index_r); #else - p->more_r = rset_forward( - info->rset_r, p->rfd_r, - p->buf_r, &p->term_index_r, - (info->cmp), p->buf_l); + p->more_r = rset_forward( + info->rset_r, p->rfd_r, + p->buf_r, &p->term_index_r, + (info->cmp), p->buf_l); #endif + } else { memcpy (buf, p->buf_l, info->key_size);