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