4dff9cbce0ee4b64274c9101562480f4291fcd4b
[egate.git] / ccl / cclqual.c
1 /* CCL qualifiers
2  * Europagate, 1995
3  *
4  * $Log: cclqual.c,v $
5  * Revision 1.1  1995/02/13 15:15:07  adam
6  * Added handling of qualifiers. Not finished yet.
7  *
8  */
9
10 #include <stdio.h>
11 #include <stdlib.h>
12 #include <assert.h>
13 #include <string.h>
14
15 #include "cclp.h"
16
17 struct ccl_qualifiers {
18     struct ccl_qualifier *list;
19 };
20
21 void ccl_qual_add (CCL_bibset b,
22                    const char *name, int nuse, int *use, int relation,
23                    int position, int structure, int truncation,
24                    int completeness)
25 {
26     struct ccl_qualifier *new_qual;
27
28     assert (b);
29     new_qual = malloc (sizeof(*new_qual));
30     assert (new_qual);
31
32     new_qual->next = b->list;
33     b->list = new_qual;
34
35     new_qual->name = malloc (strlen(name)+1);
36     assert (new_qual->name);
37     strcpy (new_qual->name, name);
38     new_qual->nuse = nuse;
39     new_qual->use = malloc (sizeof(int)*nuse);
40     assert (new_qual->use);
41     memcpy (new_qual->use, use, sizeof(int)*nuse);
42     new_qual->relation = relation;
43     new_qual->position = position;
44     new_qual->structure = structure;
45     new_qual->truncation = truncation;
46     new_qual->completeness = completeness;
47 }
48
49 CCL_bibset ccl_qual_mk (void)
50 {
51     CCL_bibset b = malloc (sizeof(*b));
52     assert (b);
53     b->list = NULL;     
54     return b;
55 }
56
57 void ccl_qual_rm (CCL_bibset *b)
58 {
59     assert (*b);
60     *b = NULL;
61 }
62
63 struct ccl_qualifier *ccl_qual_search (CCL_bibset b, const char *name)
64 {
65     struct ccl_qualifier *q;
66
67     assert (b);
68     for (q = b->list; q; q = q->next)
69         if (strcmp (name, q->name))
70             return q;
71     return NULL;
72 }