Implemented rset_dup.
[idzebra-moved-to-github.git] / rset / rset.c
1 /*
2  * Copyright (C) 1994-1998, Index Data I/S 
3  * All rights reserved.
4  * Sebastian Hammer, Adam Dickmeiss
5  *
6  * $Log: rset.c,v $
7  * Revision 1.10  1998-02-10 11:56:46  adam
8  * Implemented rset_dup.
9  *
10  * Revision 1.9  1996/10/29 13:55:21  adam
11  * Include of zebrautl.h instead of alexutil.h.
12  *
13  * Revision 1.8  1995/12/11 09:15:23  adam
14  * New set types: sand/sor/snot - ranked versions of and/or/not in
15  * ranked/semi-ranked result sets.
16  * Note: the snot not finished yet.
17  * New rset member: flag.
18  * Bug fix: r_delete in rsrel.c did free bad memory block.
19  *
20  * Revision 1.7  1995/10/12  12:41:56  adam
21  * Private info (buf) moved from struct rset_control to struct rset.
22  * Bug fixes in relevance.
23  *
24  * Revision 1.6  1995/09/08  14:52:41  adam
25  * Work on relevance feedback.
26  *
27  * Revision 1.5  1995/09/07  13:58:43  adam
28  * New parameter: result-set file descriptor (RSFD) to support multiple
29  * positions within the same result-set.
30  * Boolean operators: and, or, not implemented.
31  *
32  * Revision 1.4  1995/09/06  16:11:56  adam
33  * More work on boolean sets.
34  *
35  * Revision 1.3  1995/09/04  15:20:39  adam
36  * More work on temp sets. is_open member removed.
37  *
38  * Revision 1.2  1995/09/04  12:33:56  adam
39  * Various cleanup. YAZ util used instead.
40  *
41  * Revision 1.1  1994/11/04  13:21:28  quinn
42  * Working.
43  *
44  */
45
46 #include <stdio.h>
47 #include <zebrautl.h>
48
49 #include <rset.h>
50
51 RSET rset_create(const rset_control *sel, void *parms)
52 {
53     RSET rnew;
54
55     logf (LOG_DEBUG, "rs_create(%s)", sel->desc);
56     rnew = xmalloc(sizeof(*rnew));
57     rnew->control = sel;
58     rnew->flags = 0;
59     rnew->count = 1;
60     rnew->buf = (*sel->f_create)(sel, parms, &rnew->flags);
61     return rnew;
62 }
63
64 void rset_delete (RSET rs)
65 {
66     (rs->count)--;
67     if (!rs->count)
68         (*rs->control->f_delete)(rs);
69     xfree(rs);
70 }
71
72 RSET rset_dup (RSET rs)
73 {
74     (rs->count)++;
75     return rs;
76 }