Fix return values for cql_to_ccl_buf
[yaz-moved-to-github.git] / include / yaz / cql.h
index c9df2ac..60d9d5c 100644 (file)
@@ -243,6 +243,34 @@ void cql_to_xml_stdio(struct cql_node *cn, FILE *f);
 YAZ_EXPORT
 int cql_to_xml_buf(struct cql_node *cn, char *out, int max);
 
+/** \brief converts CQL tree to CCL and writes to user-defined stream
+    \param cn CQL node (tree)
+    \param pr print function
+    \param client_data data to be passed to pr function
+ */
+YAZ_EXPORT
+int cql_to_ccl(struct cql_node *cn, 
+               void (*pr)(const char *buf, void *client_data),
+               void *client_data);
+
+/** \brief converts CQL tree to CCL and writes to file
+    \param cn CQL node (tree)
+    \param f file handle
+ */
+YAZ_EXPORT
+void cql_to_ccl_stdio(struct cql_node *cn, FILE *f);
+
+/** \brief converts CQL tree to CCL and writes result to buffer
+    \param cn CQL node (tree)
+    \param out buffer
+    \param max size of buffer (max chars to write)
+    \retval 0 OK
+    \retval -1 conversion error
+    \retval -2 buffer too small (truncated)
+ */
+YAZ_EXPORT
+int cql_to_ccl_buf(struct cql_node *cn, char *out, int max);
+
 /** \brief stream handle for file (used by cql_to_xml_stdio) */
 YAZ_EXPORT
 void cql_fputs(const char *buf, void *client_data);
@@ -386,6 +414,47 @@ int cql_strcmp(const char *s1, const char *s2);
 YAZ_EXPORT
 int cql_strncmp(const char *s1, const char *s2, size_t n);
 
+/** \brief converts CQL sortby to sortkeys (ala versions 1.1)
+    \param cn CQL tree
+    \param pr print function
+    \param client_data data to be passed to pr function
+    
+    This will take CQL_NODE_SORT entries and conver them to
+
+    path,schema,ascending,caseSensitive,missingValue
+    items..
+
+    One for each sort keys. Where
+
+    path is string index for sorting
+
+    schema is schema for sort index
+
+    ascending is a boolean (0=false, 1=true). Default is true.
+
+    caseSensitive is a boolean. Default is false.
+
+    missingValue is a string and one of 'abort', 'highValue', 'lowValue',
+    or 'omit'. Default is 'highValue'.
+
+    See also
+    http://www.loc.gov/standards/sru/sru1-1archive/search-retrieve-operation.html#sort
+*/
+YAZ_EXPORT
+int cql_sortby_to_sortkeys(struct cql_node *cn,
+                           void (*pr)(const char *buf, void *client_data),
+                           void *client_data);
+
+/** \brief converts CQL sortby to sortkeys .. 
+    \param cn CQL tree
+    \param out result buffer
+    \param max size of buffer (allocated)
+    \retval 0 OK
+    \retval -1 ERROR
+*/
+YAZ_EXPORT
+int cql_sortby_to_sortkeys_buf(struct cql_node *cn, char *out, int max);
+
 YAZ_END_CDECL
 
 #endif