New method result set method rs_hits that returns the number of
[idzebra-moved-to-github.git] / rset / rsnull.c
1 /*
2  * Copyright (C) 1994-1995, Index Data I/S 
3  * All rights reserved.
4  * Sebastian Hammer, Adam Dickmeiss
5  *
6  * $Log: rsnull.c,v $
7  * Revision 1.9  1997-12-18 10:54:25  adam
8  * New method result set method rs_hits that returns the number of
9  * hits in result-set (if known). The ranked result set returns real
10  * number of hits but only when not combined with other operands.
11  *
12  * Revision 1.8  1996/10/29 13:55:24  adam
13  * Include of zebrautl.h instead of alexutil.h.
14  *
15  * Revision 1.7  1995/12/11 09:15:25  adam
16  * New set types: sand/sor/snot - ranked versions of and/or/not in
17  * ranked/semi-ranked result sets.
18  * Note: the snot not finished yet.
19  * New rset member: flag.
20  * Bug fix: r_delete in rsrel.c did free bad memory block.
21  *
22  * Revision 1.6  1995/10/12  12:41:57  adam
23  * Private info (buf) moved from struct rset_control to struct rset.
24  * Bug fixes in relevance.
25  *
26  * Revision 1.5  1995/10/10  14:00:04  adam
27  * Function rset_open changed its wflag parameter to general flags.
28  *
29  * Revision 1.4  1995/10/06  14:38:06  adam
30  * New result set method: r_score.
31  * Local no (sysno) and score is transferred to retrieveCtrl.
32  *
33  * Revision 1.3  1995/09/08  14:52:42  adam
34  * Work on relevance feedback.
35  *
36  * Revision 1.2  1995/09/07  13:58:43  adam
37  * New parameter: result-set file descriptor (RSFD) to support multiple
38  * positions within the same result-set.
39  * Boolean operators: and, or, not implemented.
40  *
41  * Revision 1.1  1995/09/06  10:35:44  adam
42  * Null set implemented.
43  *
44  */
45
46 #include <stdio.h>
47 #include <rsnull.h>
48 #include <zebrautl.h>
49
50 static void *r_create(const struct rset_control *sel, void *parms,
51                       int *flags);
52 static RSFD r_open (RSET ct, int flag);
53 static void r_close (RSFD rfd);
54 static void r_delete (RSET ct);
55 static void r_rewind (RSFD rfd);
56 static int r_count (RSET ct);
57 static int r_hits (RSET ct, void *oi);
58 static int r_read (RSFD rfd, void *buf);
59 static int r_write (RSFD rfd, const void *buf);
60 static int r_score (RSFD rfd, int *score);
61
62 static const rset_control control = 
63 {
64     "null",
65     r_create,
66     r_open,
67     r_close,
68     r_delete,
69     r_rewind,
70     r_count,
71     r_hits,
72     r_read,
73     r_write,
74     r_score
75 };
76
77 const rset_control *rset_kind_null = &control;
78
79 static void *r_create(const struct rset_control *sel, void *parms,
80                       int *flags)
81 {
82     return NULL;
83 }
84
85 static RSFD r_open (RSET ct, int flag)
86 {
87     if (flag & RSETF_WRITE)
88     {
89         logf (LOG_FATAL, "NULL set type is read-only");
90         return NULL;
91     }
92     return "";
93 }
94
95 static void r_close (RSFD rfd)
96 {
97 }
98
99 static void r_delete (RSET ct)
100 {
101 }
102
103 static void r_rewind (RSFD rfd)
104 {
105     logf (LOG_DEBUG, "rsnull_rewind");
106 }
107
108 static int r_count (RSET ct)
109 {
110     return 0;
111 }
112
113 static int r_hits (RSET ct, void *oi)
114 {
115     return 0;
116 }
117
118 static int r_read (RSFD rfd, void *buf)
119 {
120     return 0;
121 }
122
123 static int r_write (RSFD rfd, const void *buf)
124 {
125     logf (LOG_FATAL, "NULL set type is read-only");
126     return -1;
127 }
128
129 static int r_score (RSFD rfd, int *score)
130 {
131     *score = -1;
132     return -1;
133 }
134