X-Git-Url: http://lists.indexdata.com/cgi-bin?a=blobdiff_plain;f=include%2Fyaz%2Fcql.h;h=c9df2ac1704bb7e98fb3e86e648413dac53c3a98;hb=262800f89e3280c5b594faf6eea2c98e988ee2cb;hp=2c924708d76475fafd1a55801abb80fa071c7f76;hpb=ed51c750eb5540c5a3a34ef3beb0c043a6e65f7c;p=yaz-moved-to-github.git diff --git a/include/yaz/cql.h b/include/yaz/cql.h index 2c92470..c9df2ac 100644 --- a/include/yaz/cql.h +++ b/include/yaz/cql.h @@ -100,6 +100,9 @@ int cql_parser_stdio(CQL_parser cp, FILE *f); #define CQL_NODE_ST 1 /** \brief Node type: boolean */ #define CQL_NODE_BOOL 2 +/** \brief Node type: sortby single spec */ +#define CQL_NODE_SORT 3 + /** \brief CQL parse tree (node) */ struct cql_node { @@ -134,6 +137,16 @@ struct cql_node { /** modifiers (NULL for no list) */ struct cql_node *modifiers; } boolean; + /** which == CQL_NODE_SORT */ + struct { + char *index; + /** next spec */ + struct cql_node *next; + /** modifiers (NULL for no list) */ + struct cql_node *modifiers; + /** search node */ + struct cql_node *search; + } sort; } u; }; @@ -178,6 +191,11 @@ struct cql_node *cql_apply_prefix(NMEM nmem, struct cql_node *cn, YAZ_EXPORT struct cql_node *cql_node_mk_boolean(NMEM nmem, const char *op); +/** \brief creates a sort single spec node. */ +YAZ_EXPORT +struct cql_node *cql_node_mk_sort(NMEM nmem, const char *index, + struct cql_node *modifiers); + /** \brief destroys a node and its children. */ YAZ_EXPORT void cql_node_destroy(struct cql_node *cn); @@ -193,6 +211,13 @@ struct cql_node *cql_node_dup (NMEM nmem, struct cql_node *cp); YAZ_EXPORT struct cql_node *cql_parser_result(CQL_parser cp); +/** \brief returns the sortby tree of the most recently parsed CQL query. + \param cp CQL parser + \returns CQL node or NULL for failure +*/ +YAZ_EXPORT +struct cql_node *cql_parser_sort_result(CQL_parser cp); + /** \brief converts CQL tree to XCQL and writes to user-defined stream \param cn CQL node (tree) \param pr print function