X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;ds=sidebyside;f=include%2Fyaz%2Fccl.h;h=7724ace2d41ad45943d1288f1f44eced3f26d1aa;hb=e4baade57ba02d625ecd6452b0f4383b24c25f2d;hp=5970e4fe003e9b1ea3e36e0bf65b4b555ea7a2a2;hpb=cb9bad819f13e44d7af6753bfa1bc8274ca37b9b;p=yaz-moved-to-github.git diff --git a/include/yaz/ccl.h b/include/yaz/ccl.h index 5970e4f..7724ace 100644 --- a/include/yaz/ccl.h +++ b/include/yaz/ccl.h @@ -45,7 +45,7 @@ /* * 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: * @@ -87,6 +87,8 @@ #include #include +#include +#include YAZ_BEGIN_CDECL @@ -110,7 +112,13 @@ struct ccl_rpn_attr { 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 @@ -124,7 +132,7 @@ struct ccl_rpn_attr { 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; @@ -174,6 +182,7 @@ typedef struct ccl_qualifiers *CCL_bibset; #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) @@ -243,6 +252,9 @@ YAZ_EXPORT struct ccl_token *ccl_token_simple (const char *command); /* 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); @@ -276,7 +288,8 @@ YAZ_EXPORT void ccl_qual_add (CCL_bibset b, const char *name, int no, 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); @@ -290,8 +303,14 @@ YAZ_EXPORT void ccl_qual_file (CCL_bibset bibset, FILE *inf); /* 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 */ @@ -324,6 +343,8 @@ YAZ_EXPORT char *ccl_strdup (const char *str); 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