X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fcqlutil.c;h=7dba5a766b733ffbd29f395d33d1d2ee92d9d603;hb=b756b711841bac38e5b69baa51939ca9e1c01adb;hp=168dab4c7f6093ecb9e4a3c60149719e683e71b3;hpb=2788a4851b551e1a3efb320a2878b809f2d8a9d7;p=yaz-moved-to-github.git diff --git a/src/cqlutil.c b/src/cqlutil.c index 168dab4..7dba5a7 100644 --- a/src/cqlutil.c +++ b/src/cqlutil.c @@ -1,12 +1,14 @@ /* This file is part of the YAZ toolkit. - * Copyright (C) 1995-2009 Index Data + * Copyright (C) 1995-2011 Index Data * See the file LICENSE for details. */ - /** * \file cqlutil.c * \brief Implements CQL tree node utilities. */ +#if HAVE_CONFIG_H +#include +#endif #include #include @@ -81,6 +83,19 @@ struct cql_node *cql_node_mk_boolean(NMEM nmem, const char *op) return p; } +struct cql_node *cql_node_mk_sort(NMEM nmem, const char *index, + struct cql_node *modifiers) +{ + struct cql_node *p = (struct cql_node *) nmem_malloc(nmem, sizeof(*p)); + p->which = CQL_NODE_SORT; + p->u.sort.index = 0; + if (index) + p->u.sort.index = nmem_strdup(nmem, index); + p->u.sort.modifiers = modifiers; + p->u.sort.next = 0; + return p; +} + const char *cql_uri(void) { return "info:srw/cql-context-set/1/cql-v1.2"; @@ -142,6 +157,11 @@ void cql_node_destroy(struct cql_node *cn) cql_node_destroy(cn->u.boolean.left); cql_node_destroy(cn->u.boolean.right); cql_node_destroy(cn->u.boolean.modifiers); + break; + case CQL_NODE_SORT: + cql_node_destroy(cn->u.sort.search); + cql_node_destroy(cn->u.sort.next); + cql_node_destroy(cn->u.sort.modifiers); } } @@ -183,6 +203,7 @@ int cql_strncmp(const char *s1, const char *s2, size_t n) /* * Local variables: * c-basic-offset: 4 + * c-file-style: "Stroustrup" * indent-tabs-mode: nil * End: * vim: shiftwidth=4 tabstop=8 expandtab