1 /* $Id: cql.h,v 1.2 2003-02-14 18:49:23 adam Exp $
2 Copyright (C) 2002-2003
5 This file is part of the YAZ toolkit.
10 #ifndef CQL_H_INCLUDED
11 #define CQL_H_INCLUDED
14 typedef struct cql_parser *CQL_parser;
19 * creates a CQL parser.
21 * Returns CQL parser or NULL if parser could not be created.
23 CQL_parser cql_parser_create(void);
29 * Destroy CQL parser. This function does nothing if
30 * NULL pointer is received.
32 void cql_parser_destroy(CQL_parser cp);
37 * @str: A query string to be parsed.
39 * Parses a CQL query string.
41 * Returns 0 if parsing was succesful; non-zero (error code) if
44 int cql_parser_string(CQL_parser cp, const char *str);
49 * @getbyte: Handler to read one character (for parsing).
50 * @ungetbyte: Handler to unread one byte (for parsing).
51 * @client_data: User data associated with getbyte/ungetbyte handlers.
53 * Parses a CQL query from a user defined stream.
55 * Returns 0 if parsing was succesful; non-zero (error code) if
58 int cql_parser_stream(CQL_parser cp,
59 int (*getbyte)(void *client_data),
60 void (*ungetbyte)(int b, void *client_data),
66 * @f: FILE handler in read mode.
68 * Parses a CQL query from a file.
70 * Returns 0 if parsing was succesful; non-zero (error code) if
73 int cql_parser_stdio(CQL_parser cp, FILE *f);
76 #define CQL_NODE_BOOL 2
77 #define CQL_NODE_MOD 3
85 struct cql_node *modifiers;
86 struct cql_node *prefixes;
90 struct cql_node *left;
91 struct cql_node *right;
92 struct cql_node *modifiers;
93 struct cql_node *prefixes;
98 struct cql_node *next;
103 struct cql_properties;
105 struct cql_buf_write_info {
111 void cql_buf_write_handler (const char *b, void *client_data);
113 void cql_node_print(struct cql_node *cn);
114 struct cql_node *cql_node_mk_sc(const char *index,
115 const char *relation,
117 struct cql_node *cql_node_mk_boolean(const char *op);
118 void cql_node_destroy(struct cql_node *cn);
119 struct cql_node *cql_node_prefix(struct cql_node *n, const char *prefix,
121 struct cql_node *cql_node_mk_mod(const char *name,
124 struct cql_node *cql_node_dup (struct cql_node *cp);
125 struct cql_node *cql_parser_result(CQL_parser cp);
127 void cql_to_xml(struct cql_node *cn,
128 void (*pr)(const char *buf, void *client_data),
130 void cql_to_xml_stdio(struct cql_node *cn, FILE *f);
131 int cql_to_xml_buf(struct cql_node *cn, char *out, int max);
133 struct cql_node *cql_node_mk_proxargs(const char *relation,
134 const char *distance,
136 const char *ordering);
139 void cql_fputs(const char *buf, void *client_data);
141 typedef struct cql_transform_t_ *cql_transform_t;
143 cql_transform_t cql_transform_open_FILE (FILE *f);
144 cql_transform_t cql_transform_open_fname(const char *fname);
145 void cql_transform_close(cql_transform_t ct);
147 void cql_transform_pr(cql_transform_t ct,
149 void (*pr)(const char *buf, void *client_data),
152 int cql_transform_FILE(cql_transform_t ct,
153 struct cql_node *cn, FILE *f);
155 int cql_transform_buf(cql_transform_t ct,
156 struct cql_node *cn, char *out, int max);
157 int cql_transform_error(cql_transform_t ct, const char **addinfo);
161 11 Unsupported query type (XCQL vs CQL)
162 12 Too many characters in query
163 13 Unbalanced or illegal use of parentheses
164 14 Unbalanced or illegal use of quotes
165 15 Illegal or unsupported index set
166 16 Illegal or unsupported index
167 17 Illegal or unsupported combination of index and index set
168 18 Illegal or unsupported combination of indexes
169 19 Illegal or unsupported relation
170 20 Illegal or unsupported relation modifier
171 21 Illegal or unsupported combination of relation modifers
172 22 Illegal or unsupported combination of relation and index
173 23 Too many characters in term
174 24 Illegal combination of relation and term
175 25 Special characters not quoted in term
176 26 Non special character escaped in term
177 27 Empty term unsupported
178 28 Masking character not supported
179 29 Masked words too short
180 30 Too many masking characters in term
181 31 Anchoring character not supported
182 32 Anchoring character in illegal or unsupported position
183 33 Combination of proximity/adjacency and masking characters not supported
184 34 Combination of proximity/adjacency and anchoring characters not supported
185 35 Terms only exclusion (stop) words
186 36 Term in invalid format for index or relation
187 37 Illegal or unsupported boolean operator
188 38 Too many boolean operators in query
189 39 Proximity not supported
190 40 Illegal or unsupported proximity relation
191 41 Illegal or unsupported proximity distance
192 42 Illegal or unsupported proximity unit
193 43 Illegal or unsupported proximity ordering
194 44 Illegal or unsupported combination of proximity modifiers
195 45 Index set name (prefix) assigned to multiple identifiers