X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=include%2Fyaz%2Fcql.h;h=ceb5abfd95d2759d92e4a5760cd339ca8f2ee6f1;hb=ffc156e81106f536a43f949379cee95b16e0c957;hp=33c72953ee4b271f15e007540ebc6acf6d493469;hpb=4c176312acdc3444c9afc820f76a393e64668e52;p=yaz-moved-to-github.git diff --git a/include/yaz/cql.h b/include/yaz/cql.h index 33c7295..ceb5abf 100644 --- a/include/yaz/cql.h +++ b/include/yaz/cql.h @@ -1,11 +1,30 @@ -/* $Id: cql.h,v 1.11 2005-01-15 19:47:09 adam Exp $ - Copyright (C) 1995-2005, Index Data ApS - Index Data Aps - -This file is part of the YAZ toolkit. - -See the file LICENSE. -*/ +/* + * Copyright (c) 1995-2007, Index Data + * All rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Index Data nor the names of its contributors + * may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +/* $Id: cql.h,v 1.18 2007-03-21 10:12:09 adam Exp $ */ /** \file cql.h \brief Header with public definitions about CQL. @@ -81,30 +100,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; @@ -153,7 +172,7 @@ struct cql_node *cql_node_mk_sc(NMEM nmem, const char *index, */ YAZ_EXPORT struct cql_node *cql_apply_prefix(NMEM nmem, struct cql_node *cn, - const char *prefix, const char *uri); + const char *prefix, const char *uri); /** * This function creates a boolean node. @@ -241,10 +260,10 @@ void cql_transform_close(cql_transform_t ct); * transformation handle. The result is written to a user-defined stream. */ YAZ_EXPORT -void cql_transform_pr(cql_transform_t ct, - struct cql_node *cn, - void (*pr)(const char *buf, void *client_data), - void *client_data); +int cql_transform(cql_transform_t ct, + struct cql_node *cn, + void (*pr)(const char *buf, void *client_data), + void *client_data); /** * Performs a CQL transform to PQF given a CQL node tree and a CQL @@ -279,9 +298,31 @@ const char *cql_strerror(int code); * Returns the standard CQL context set URI. */ YAZ_EXPORT -const char *cql_uri(); +const char *cql_uri(void); + +/** + * 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 + */ +