X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=rset%2Frsnull.c;h=578dc7cad293b3ce8ff01b5ab56889df9ed09708;hb=ce3907338568fce46c5751e7e1091a5ad1c8e291;hp=79613d8cddb76c8c408112389ec34956626808bb;hpb=e127268c91736bf5a116cbc24653da4b845ca046;p=idzebra-moved-to-github.git diff --git a/rset/rsnull.c b/rset/rsnull.c index 79613d8..578dc7c 100644 --- a/rset/rsnull.c +++ b/rset/rsnull.c @@ -4,7 +4,15 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: rsnull.c,v $ - * Revision 1.8 1996-10-29 13:55:24 adam + * Revision 1.10 1998-03-05 08:36:28 adam + * New result set model. + * + * Revision 1.9 1997/12/18 10:54:25 adam + * New method result set method rs_hits that returns the number of + * hits in result-set (if known). The ranked result set returns real + * number of hits but only when not combined with other operands. + * + * Revision 1.8 1996/10/29 13:55:24 adam * Include of zebrautl.h instead of alexutil.h. * * Revision 1.7 1995/12/11 09:15:25 adam @@ -42,18 +50,16 @@ #include #include -static void *r_create(const struct rset_control *sel, void *parms, - int *flags); +static void *r_create(RSET ct, const struct rset_control *sel, void *parms); static RSFD r_open (RSET ct, int flag); static void r_close (RSFD rfd); static void r_delete (RSET ct); static void r_rewind (RSFD rfd); static int r_count (RSET ct); -static int r_read (RSFD rfd, void *buf); +static int r_read (RSFD rfd, void *buf, int *term_index); static int r_write (RSFD rfd, const void *buf); -static int r_score (RSFD rfd, int *score); -static const rset_control control = +static const struct rset_control control = { "null", r_create, @@ -64,14 +70,22 @@ static const rset_control control = r_count, r_read, r_write, - r_score }; -const rset_control *rset_kind_null = &control; +const struct rset_control *rset_kind_null = &control; -static void *r_create(const struct rset_control *sel, void *parms, - int *flags) +static void *r_create(RSET ct, const struct rset_control *sel, void *parms) { + rset_null_parms *null_parms = parms; + + ct->no_rset_terms = 1; + ct->rset_terms = xmalloc (sizeof(*ct->rset_terms)); + if (parms) + ct->rset_terms[0] = null_parms->rset_term; + else + ct->rset_terms[0] = rset_term_create ("term", -1, "rank-0"); + ct->rset_terms[0]->nn = 0; + return NULL; } @@ -91,6 +105,8 @@ static void r_close (RSFD rfd) static void r_delete (RSET ct) { + rset_term_destroy (ct->rset_terms[0]); + xfree (ct->rset_terms); } static void r_rewind (RSFD rfd) @@ -103,8 +119,9 @@ static int r_count (RSET ct) return 0; } -static int r_read (RSFD rfd, void *buf) +static int r_read (RSFD rfd, void *buf, int *term_index) { + *term_index = -1; return 0; } @@ -114,9 +131,3 @@ static int r_write (RSFD rfd, const void *buf) return -1; } -static int r_score (RSFD rfd, int *score) -{ - *score = -1; - return -1; -} -