X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=include%2Fyaz%2Fccl.h;h=2f984e8ab02a5d295146348fca8b4baf8989c92f;hb=7057699040b614f56be178f3672b4a2b95301d5f;hp=5c8909f16a3793de9f81d97b5cc6c6ec98baddd3;hpb=c126b2a625462f95475f00efdfdf9ce41a0e9c79;p=yaz-moved-to-github.git diff --git a/include/yaz/ccl.h b/include/yaz/ccl.h index 5c8909f..2f984e8 100644 --- a/include/yaz/ccl.h +++ b/include/yaz/ccl.h @@ -46,7 +46,29 @@ * CCL - header file * * $Log: ccl.h,v $ - * Revision 1.2 2000-01-31 13:15:21 adam + * Revision 1.9 2001-03-07 13:24:40 adam + * Member and_not in Z_Operator is kept for backwards compatibility. + * Added support for definition of CCL operators in field spec file. + * + * Revision 1.8 2000/11/16 09:58:02 adam + * Implemented local AttributeSet setting for CCL field maps. + * + * Revision 1.7 2000/11/01 14:47:00 adam + * Added CCL support for WIN32. + * + * Revision 1.6 2000/10/17 19:50:28 adam + * Implemented and-list and or-list for CCL module. + * + * Revision 1.5 2000/05/02 17:19:58 adam + * Removed MINUS token. + * + * Revision 1.4 2000/03/14 09:06:11 adam + * Added POSIX threads support for frontend server. + * + * Revision 1.3 2000/02/08 10:39:53 adam + * Added a few functions to set name of operands, etc. + * + * Revision 1.2 2000/01/31 13:15:21 adam * Removed uses of assert(3). Cleanup of ODR. CCL parser update so * that some characters are not surrounded by spaces in resulting term. * ILL-code updates. @@ -111,9 +133,10 @@ #ifndef CCL_H #define CCL_H -#ifdef __cplusplus -extern "C" { -#endif +#include +#include + +YAZ_BEGIN_CDECL /* CCL error numbers */ #define CCL_ERR_OK 0 @@ -133,6 +156,7 @@ extern "C" { /* attribute pair (type, value) */ struct ccl_rpn_attr { struct ccl_rpn_attr *next; + char *set; int type; int value; }; @@ -195,6 +219,8 @@ typedef struct ccl_qualifiers *CCL_bibset; #define CCL_BIB1_COM 6 #define CCL_BIB1_STR_WP (-1) +#define CCL_BIB1_STR_AND_LIST (-2) +#define CCL_BIB1_STR_OR_LIST (-3) #define CCL_BIB1_REL_ORDER (-1) #define CCL_BIB1_TRU_CAN_LEFT (-1) @@ -213,8 +239,7 @@ typedef struct ccl_qualifiers *CCL_bibset; #define CCL_TOK_AND 8 #define CCL_TOK_OR 9 #define CCL_TOK_NOT 10 -#define CCL_TOK_MINUS 11 -#define CCL_TOK_SET 12 +#define CCL_TOK_SET 11 /* CCL token */ struct ccl_token { @@ -242,7 +267,7 @@ struct ccl_parser { /* current bibset */ CCL_bibset bibset; - + char *ccl_token_and; char *ccl_token_or; char *ccl_token_not; @@ -253,73 +278,94 @@ struct ccl_parser { typedef struct ccl_parser *CCL_parser; /* Generate tokens from command string - obeys all CCL opererators */ -struct ccl_token *ccl_parser_tokenize (CCL_parser cclp, +YAZ_EXPORT struct ccl_token *ccl_parser_tokenize (CCL_parser cclp, const char *command); -struct ccl_token *ccl_tokenize (const char *command); +YAZ_EXPORT struct ccl_token *ccl_tokenize (const char *command); /* Generate tokens from command string - oebeys only simple tokens and quoted strings */ -struct ccl_token *ccl_token_simple (const char *command); +YAZ_EXPORT struct ccl_token *ccl_token_simple (const char *command); /* Delete token list */ -void ccl_token_del (struct ccl_token *list); +YAZ_EXPORT void ccl_token_del (struct ccl_token *list); /* Parse CCL Find command - NULL-terminated string */ -struct ccl_rpn_node *ccl_find_str (CCL_bibset bibset, +YAZ_EXPORT struct ccl_rpn_node *ccl_find_str (CCL_bibset bibset, const char *str, int *error, int *pos); /* Parse CCL Find command - Tokens read by ccl_tokenize */ -struct ccl_rpn_node *ccl_find (CCL_bibset abibset, struct ccl_token *list, +YAZ_EXPORT struct ccl_rpn_node *ccl_find (CCL_bibset abibset, struct ccl_token *list, int *error, const char **pos); +/* Parse CCL Find command */ +YAZ_EXPORT struct ccl_rpn_node *ccl_parser_find (CCL_parser cclp, struct ccl_token *list); + +/* Set various OPs */ +YAZ_EXPORT void ccl_parser_set_op_and (CCL_parser p, const char *op); +YAZ_EXPORT void ccl_parser_set_op_or (CCL_parser p, const char *op); +YAZ_EXPORT void ccl_parser_set_op_not (CCL_parser p, const char *op); +YAZ_EXPORT void ccl_parser_set_op_set (CCL_parser p, const char *op); + +YAZ_EXPORT void ccl_parser_set_case (CCL_parser p, int case_sensitivity_flag); + /* Return english-readable error message */ -const char *ccl_err_msg (int ccl_errno); +YAZ_EXPORT const char *ccl_err_msg (int ccl_errno); /* Delete RPN tree returned by ccl_find */ -void ccl_rpn_delete (struct ccl_rpn_node *rpn); +YAZ_EXPORT void ccl_rpn_delete (struct ccl_rpn_node *rpn); /* Dump RPN tree in readable format to fd_out */ -void ccl_pr_tree (struct ccl_rpn_node *rpn, FILE *fd_out); +YAZ_EXPORT void ccl_pr_tree (struct ccl_rpn_node *rpn, FILE *fd_out); /* Add CCL qualifier */ -void ccl_qual_add (CCL_bibset b, const char *name, int no, int *attr); +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); /* Read CCL qualifier list spec from file inf */ -void ccl_qual_file (CCL_bibset bibset, FILE *inf); +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 */ -void ccl_qual_fitem (CCL_bibset bibset, const char *cp, const char *qual_name); +YAZ_EXPORT void ccl_qual_fitem (CCL_bibset bibset, const char *cp, const char *qual_name); /* Make CCL qualifier set */ -CCL_bibset ccl_qual_mk (void); +YAZ_EXPORT CCL_bibset ccl_qual_mk (void); /* Delete CCL qualifier set */ -void ccl_qual_rm (CCL_bibset *b); +YAZ_EXPORT void ccl_qual_rm (CCL_bibset *b); /* Char-to-upper function */ extern int (*ccl_toupper)(int c); /* String utilities */ -int ccl_stricmp (const char *s1, const char *s2); -int ccl_memicmp (const char *s1, const char *s2, size_t n); +YAZ_EXPORT int ccl_stricmp (const char *s1, const char *s2); +YAZ_EXPORT int ccl_memicmp (const char *s1, const char *s2, size_t n); /* Search for qualifier 'name' in set 'b'. */ -struct ccl_rpn_attr *ccl_qual_search (CCL_parser cclp, const char *name, +YAZ_EXPORT struct ccl_rpn_attr *ccl_qual_search (CCL_parser cclp, const char *name, size_t len); /* Create CCL parser */ -CCL_parser ccl_parser_create (void); +YAZ_EXPORT CCL_parser ccl_parser_create (void); /* Destroy CCL parser */ -void ccl_parser_destroy (CCL_parser p); +YAZ_EXPORT void ccl_parser_destroy (CCL_parser p); + +YAZ_EXPORT char *ccl_strdup (const char *str); + +YAZ_EXPORT const char *ccl_qual_search_special (CCL_bibset b, + const char *name); #ifndef ccl_assert #define ccl_assert(x) ; #endif -#ifdef __cplusplus -} -#endif +YAZ_END_CDECL #endif