X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=include%2Fyaz%2Fcql.h;h=d745ad0df8fcb3fa2577c613b46db7b1d4f7c0cd;hb=f9828584ad6d0f66eb85b2e6d8bca5a29d569dcb;hp=73c242e63a5f29678a02dbdabe6c0cc967d6c8de;hpb=f53079fadcadb1eeef45e1e6d254801d984d6068;p=yaz-moved-to-github.git diff --git a/include/yaz/cql.h b/include/yaz/cql.h index 73c242e..d745ad0 100644 --- a/include/yaz/cql.h +++ b/include/yaz/cql.h @@ -1,5 +1,5 @@ -/* $Id: cql.h,v 1.9 2004-10-03 22:34:07 adam Exp $ - Copyright (C) 2002-2004 +/* $Id: cql.h,v 1.13 2005-06-27 22:03:59 adam Exp $ + Copyright (C) 1995-2005, Index Data ApS Index Data Aps This file is part of the YAZ toolkit. @@ -14,7 +14,7 @@ See the file LICENSE. #ifndef CQL_H_INCLUDED #define CQL_H_INCLUDED #include -#include +#include YAZ_BEGIN_CDECL @@ -81,30 +81,30 @@ struct cql_node { /** node type */ int which; union { - /** which == CQL_NODE_ST */ + /** which == CQL_NODE_ST */ struct { - /** CQL index */ + /** CQL index */ char *index; - /** CQL index URI or NULL if no URI */ - char *index_uri; - /** Search term */ + /** CQL index URI or NULL if no URI */ + char *index_uri; + /** Search term */ char *term; - /** relation */ + /** relation */ char *relation; - /** relation URL or NULL if no relation URI) */ - char *relation_uri; - /** relation modifiers */ + /** relation URL or NULL if no relation URI) */ + char *relation_uri; + /** relation modifiers */ struct cql_node *modifiers; } st; - /** which == CQL_NODE_BOOL */ + /** which == CQL_NODE_BOOL */ struct { /** operator name "and", "or", ... */ char *value; - /** left operand */ + /** left operand */ struct cql_node *left; - /** right operand */ + /** right operand */ struct cql_node *right; - /** modifiers (NULL for no list) */ + /** modifiers (NULL for no list) */ struct cql_node *modifiers; } boolean; } u; @@ -141,10 +141,8 @@ void cql_node_print(struct cql_node *cn); * This function creates a search clause node (st). */ YAZ_EXPORT -struct cql_node *cql_node_mk_sc(const char *index, - const char *relation, - const char *term); - +struct cql_node *cql_node_mk_sc(NMEM nmem, const char *index, + const char *relation, const char *term); /** * This function applies a prefix+uri to "unresolved" index and relation @@ -154,15 +152,14 @@ struct cql_node *cql_node_mk_sc(const char *index, * is NULL. */ YAZ_EXPORT -struct cql_node *cql_apply_prefix(struct cql_node *cn, - const char *prefix, - const char *uri); +struct cql_node *cql_apply_prefix(NMEM nmem, struct cql_node *cn, + const char *prefix, const char *uri); /** * This function creates a boolean node. */ YAZ_EXPORT -struct cql_node *cql_node_mk_boolean(const char *op); +struct cql_node *cql_node_mk_boolean(NMEM nmem, const char *op); /** * Destroys a node and its children. @@ -174,7 +171,7 @@ void cql_node_destroy(struct cql_node *cn); * Duplicate a node (returns a copy of supplied node) . */ YAZ_EXPORT -struct cql_node *cql_node_dup (struct cql_node *cp); +struct cql_node *cql_node_dup (NMEM nmem, struct cql_node *cp); /** * This function returns the parse tree of the most recently parsed @@ -284,7 +281,29 @@ const char *cql_strerror(int code); YAZ_EXPORT const char *cql_uri(); +/** + * Compares two CQL strings (for relations, operators, etc) + * (unfortunately defined as case-insensitive unlike XML etc) + */ +YAZ_EXPORT +int cql_strcmp(const char *s1, const char *s2); + +/** + * Compares two CQL strings at most n bytes + * (unfortunately defined as case-insensitive unlike XML etc) + */ +YAZ_EXPORT +int cql_strncmp(const char *s1, const char *s2, size_t n); + YAZ_END_CDECL #endif /* CQL_H_INCLUDED */ +/* + * Local variables: + * c-basic-offset: 4 + * indent-tabs-mode: nil + * End: + * vim: shiftwidth=4 tabstop=8 expandtab + */ +