Added handling of qualifiers. Not finished yet.
[egate.git] / ccl / ccl.h
1 /* CCL - public header file
2  * Europagate, 1995
3  *
4  * $Log: ccl.h,v $
5  * Revision 1.2  1995/02/13 15:15:06  adam
6  * Added handling of qualifiers. Not finished yet.
7  *
8  * Revision 1.1  1995/02/13  12:35:20  adam
9  * First version of CCL. Qualifiers aren't handled yet.
10  *
11  */
12
13 #define CCL_ERR_OK                0
14 #define CCL_ERR_TERM_EXPECTED     1
15 #define CCL_ERR_RP_EXPECTED       2
16 #define CCL_ERR_SETNAME_EXPECTED  3
17 #define CCL_ERR_OP_EXPECTED       4
18 #define CCL_ERR_BAD_RP            5
19 #define CCL_ERR_UNKNOWN_QUAL      6
20 #define CCL_ERR_DOBBLE_QUAL       7
21 #define CCL_ERR_EQ_EXPECTED       8
22
23 struct ccl_rpn_attr {
24     struct ccl_rpn_attr *next;
25     int type;
26     int value;
27 };
28
29 struct ccl_rpn_node {
30     enum rpn_node_kind { AND, OR, NOT, TERM, SET, PROX } kind;
31     union {
32         struct ccl_rpn_node *p[2];
33         struct {
34             char *term;
35             struct ccl_rpn_attr *attr_list;
36         } t;
37         char *setname;
38     } u;
39 };
40
41 typedef struct ccl_qualifiers *CCL_bibset;
42
43
44 struct ccl_rpn_node *ccl_find_str (CCL_bibset bibset,
45                                    const char *str, int *error, int *pos);
46 char *ccl_err_msg (int ccl_errno);
47 void ccl_rpn_delete (struct ccl_rpn_node *rpn);
48 void ccl_qual_add (CCL_bibset b,
49                    const char *name,
50                    int nuse, int *use,
51                    int relation,   
52 /*                          -1  none
53                              0  ordered
54                            1-6  relation (<, <=, =, >=, >, <>)
55  */
56                    int position,
57 /*                          -1  none
58                              1  first in field
59                              2  first in sub field
60                              3  any position in field
61  */
62                    int structure,
63 /*                          -1  none
64                              0  word/phrase auto select
65                              1  phrase
66                              2  word
67                              3  key
68                              4  year
69                              5  date (normalized)
70                              6  word list 
71                            100  date (un-normalized)
72                            101  name (normalized)
73                            102  name (un-normalized)
74  */                            
75                    int truncation,
76                    int completeness);
77 CCL_bibset ccl_qual_mk (void);
78 void ccl_qual_rm (CCL_bibset *b);
79
80 #define CCL_TRUNC_L      1
81 #define CCL_TRUNC_R      2
82 #define CCL_TRUNC_LR     4
83 #define CCL_TRUNC_NONE   8
84 #define CCL_TRUNC_HASH   16
85 #define CCL_TRUNC_REG    32
86