allow RPN to CQL conversion with Yaz_cql2rpn class YPP-13
authorAdam Dickmeiss <adam@indexdata.dk>
Wed, 9 Apr 2014 13:24:17 +0000 (15:24 +0200)
committerAdam Dickmeiss <adam@indexdata.dk>
Wed, 9 Apr 2014 13:24:17 +0000 (15:24 +0200)
include/yazpp/cql2rpn.h
src/yaz-cql2rpn.cpp

index 211e3da..6f4d820 100644 (file)
@@ -37,6 +37,7 @@ class YAZ_EXPORT Yaz_cql2rpn {
     bool parse_spec_file(const char *fname, int *error);
     int query_transform(const char *cql, Z_RPNQuery **rpnquery, ODR o,
                         char **addinfop);
+    int rpn2cql_transform(Z_RPNQuery *q, WRBUF cql, ODR o, char **addinfop);
  private:
     cql_transform_t m_transform;
 };
index 7e1900c..d61d34c 100644 (file)
@@ -11,6 +11,7 @@
 #include <yaz/pquery.h>
 #include <yaz/sortspec.h>
 #include <yazpp/cql2rpn.h>
+#include <yaz/rpn2cql.h>
 
 using namespace yazpp_1;
 
@@ -40,6 +41,20 @@ bool Yaz_cql2rpn::parse_spec_file(const char *fname, int *error)
     return m_transform ? true : false;
 }
 
+int Yaz_cql2rpn::rpn2cql_transform(Z_RPNQuery *q, WRBUF cql, ODR o,
+                                   char **addinfop)
+{
+    int r = cql_transform_rpn2cql_wrbuf(m_transform, cql, q);
+    *addinfop = 0;
+    if (r)
+    {
+        const char *addinfo = 0;
+        r = cql_transform_error(m_transform, &addinfo);
+        *addinfop = odr_strdup_null(o, addinfo);
+    }
+    return r;
+}
+
 int Yaz_cql2rpn::query_transform(const char *cql_query,
                                  Z_RPNQuery **rpnquery, ODR o,
                                  char **addinfop)