/*
* CCL - header file
*
- * $Id: ccl.h,v 1.11 2001-11-27 22:38:50 adam Exp $
+ * $Id: ccl.h,v 1.18 2004-09-29 20:37:50 adam Exp $
*
* Old Europagate Log:
*
#include <yaz/yconfig.h>
#include <stdio.h>
+#include <yaz/xmalloc.h>
+#include <yaz/wrbuf.h>
YAZ_BEGIN_CDECL
struct ccl_rpn_attr *next;
char *set;
int type;
- int value;
+ int kind;
+#define CCL_RPN_ATTR_NUMERIC 1
+#define CCL_RPN_ATTR_STRING 2
+ union {
+ int numeric;
+ char *str;
+ } value;
};
#define CCL_RPN_AND 1
struct ccl_rpn_node {
int kind;
union {
- struct ccl_rpn_node *p[2];
+ struct ccl_rpn_node *p[3];
struct {
char *term;
struct ccl_rpn_attr *attr_list;
#define CCL_BIB1_STR_AND_LIST (-2)
#define CCL_BIB1_STR_OR_LIST (-3)
#define CCL_BIB1_REL_ORDER (-1)
+#define CCL_BIB1_REL_PORDER (-2)
#define CCL_BIB1_TRU_CAN_LEFT (-1)
#define CCL_BIB1_TRU_CAN_RIGHT (-2)
/* Delete token list */
YAZ_EXPORT void ccl_token_del (struct ccl_token *list);
+/* Add single token after node at */
+YAZ_EXPORT struct ccl_token *ccl_token_add (struct ccl_token *at);
+
/* Parse CCL Find command - NULL-terminated string */
YAZ_EXPORT struct ccl_rpn_node *ccl_find_str (CCL_bibset bibset,
const char *str, int *error, int *pos);
int *attr);
YAZ_EXPORT void ccl_qual_add_set (CCL_bibset b, const char *name, int no,
- int *attr, char **attsets);
+ int *type, int *value, char **svalue,
+ char **attsets);
YAZ_EXPORT void ccl_qual_add_special (CCL_bibset bibset,
const char *n, const char *v);
/* Read CCL qualifier list spec from file inf */
YAZ_EXPORT int ccl_qual_fname (CCL_bibset bibset, const char *fname);
-/* Add CCL qualifier by using single-line spec */
-YAZ_EXPORT void ccl_qual_fitem (CCL_bibset bibset, const char *cp,
+/* Add CCL qualifier as buf spec (multiple lines). */
+YAZ_EXPORT void ccl_qual_buf(CCL_bibset bibset, const char *buf);
+
+/* Add CCL qualifier as line spec. Note: line is _modified_ */
+YAZ_EXPORT void ccl_qual_line(CCL_bibset bibset, char *line);
+
+/* Add CCL qualifier by using qual_name + value pair */
+YAZ_EXPORT void ccl_qual_fitem (CCL_bibset bibset, const char *value,
const char *qual_name);
/* Make CCL qualifier set */
YAZ_EXPORT const char *ccl_qual_search_special (CCL_bibset b,
const char *name);
+YAZ_EXPORT void ccl_pquery (WRBUF w, struct ccl_rpn_node *p);
+
#ifndef ccl_assert
#define ccl_assert(x) ;
#endif