New set types: sand/sor/snot - ranked versions of and/or/not in
[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.7  1995-12-11 09:15:25  adam
8  * New set types: sand/sor/snot - ranked versions of and/or/not in
9  * ranked/semi-ranked result sets.
10  * Note: the snot not finished yet.
11  * New rset member: flag.
12  * Bug fix: r_delete in rsrel.c did free bad memory block.
13  *
14  * Revision 1.6  1995/10/12  12:41:57  adam
15  * Private info (buf) moved from struct rset_control to struct rset.
16  * Bug fixes in relevance.
17  *
18  * Revision 1.5  1995/10/10  14:00:04  adam
19  * Function rset_open changed its wflag parameter to general flags.
20  *
21  * Revision 1.4  1995/10/06  14:38:06  adam
22  * New result set method: r_score.
23  * Local no (sysno) and score is transferred to retrieveCtrl.
24  *
25  * Revision 1.3  1995/09/08  14:52:42  adam
26  * Work on relevance feedback.
27  *
28  * Revision 1.2  1995/09/07  13:58:43  adam
29  * New parameter: result-set file descriptor (RSFD) to support multiple
30  * positions within the same result-set.
31  * Boolean operators: and, or, not implemented.
32  *
33  * Revision 1.1  1995/09/06  10:35:44  adam
34  * Null set implemented.
35  *
36  */
37
38 #include <stdio.h>
39 #include <rsnull.h>
40 #include <alexutil.h>
41
42 static void *r_create(const struct rset_control *sel, void *parms,
43                       int *flags);
44 static RSFD r_open (RSET ct, int flag);
45 static void r_close (RSFD rfd);
46 static void r_delete (RSET ct);
47 static void r_rewind (RSFD rfd);
48 static int r_count (RSET ct);
49 static int r_read (RSFD rfd, void *buf);
50 static int r_write (RSFD rfd, const void *buf);
51 static int r_score (RSFD rfd, int *score);
52
53 static const rset_control control = 
54 {
55     "null",
56     r_create,
57     r_open,
58     r_close,
59     r_delete,
60     r_rewind,
61     r_count,
62     r_read,
63     r_write,
64     r_score
65 };
66
67 const rset_control *rset_kind_null = &control;
68
69 static void *r_create(const struct rset_control *sel, void *parms,
70                       int *flags)
71 {
72     return NULL;
73 }
74
75 static RSFD r_open (RSET ct, int flag)
76 {
77     if (flag & RSETF_WRITE)
78     {
79         logf (LOG_FATAL, "NULL set type is read-only");
80         return NULL;
81     }
82     return "";
83 }
84
85 static void r_close (RSFD rfd)
86 {
87 }
88
89 static void r_delete (RSET ct)
90 {
91 }
92
93 static void r_rewind (RSFD rfd)
94 {
95     logf (LOG_DEBUG, "rsnull_rewind");
96 }
97
98 static int r_count (RSET ct)
99 {
100     return 0;
101 }
102
103 static int r_read (RSFD rfd, void *buf)
104 {
105     return 0;
106 }
107
108 static int r_write (RSFD rfd, const void *buf)
109 {
110     logf (LOG_FATAL, "NULL set type is read-only");
111     return -1;
112 }
113
114 static int r_score (RSFD rfd, int *score)
115 {
116     *score = -1;
117     return -1;
118 }
119