Omit YLOG_LOG msg
[yazpp-moved-to-github.git] / src / yaz-cql2rpn.cpp
index f8ca22b..3ebf3f5 100644 (file)
@@ -2,12 +2,14 @@
  * Copyright (c) 1998-2004, Index Data.
  * See the file LICENSE for details.
  * 
- * $Id: yaz-cql2rpn.cpp,v 1.6 2004-12-13 20:50:54 adam Exp $
+ * $Id: yaz-cql2rpn.cpp,v 1.12 2007-01-12 10:15:06 adam Exp $
  */
 
 #include <yaz/log.h>
 #include <yaz/pquery.h>
-#include <yaz++/cql2rpn.h>
+#include <yazpp/cql2rpn.h>
+
+using namespace yazpp_1;
 
 Yaz_cql2rpn::Yaz_cql2rpn()
 {
@@ -17,62 +19,78 @@ Yaz_cql2rpn::Yaz_cql2rpn()
 Yaz_cql2rpn::~Yaz_cql2rpn()
 {
     if (m_transform)
-       cql_transform_close(m_transform);
+        cql_transform_close(m_transform);
 }
 
 void Yaz_cql2rpn::set_pqf_file(const char *fname)
 {
     if (!m_transform)
-       m_transform = cql_transform_open_fname(fname);
+        m_transform = cql_transform_open_fname(fname);
+}
+
+
+bool Yaz_cql2rpn::parse_spec_file(const char *fname, int *error)
+{
+    *error = 0;
+    cql_transform_close(m_transform);
+    m_transform = cql_transform_open_fname(fname);
+    return m_transform ? true : false;
 }
 
 int Yaz_cql2rpn::query_transform(const char *cql_query, 
-                                Z_RPNQuery **rpnquery, ODR o,
-                                char **addinfop)
+                                 Z_RPNQuery **rpnquery, ODR o,
+                                 char **addinfop)
 {
     const char *addinfo = 0;
     if (!m_transform)
-       return -3;
+        return -3;
     CQL_parser cp = cql_parser_create();
 
     int r = cql_parser_string(cp, cql_query);
     if (r)
     {
-       yaz_log(YLOG_LOG, "CQL Parse Error");
-       r = 10;
+        r = 10;
     }
     else
     {
-       char rpn_buf[1024];
-       r = cql_transform_buf(m_transform, cql_parser_result(cp), 
-                             rpn_buf, sizeof(rpn_buf)-1);
-       if (!r)
-       {
-           YAZ_PQF_Parser pp = yaz_pqf_create();
+        char rpn_buf[10240];
+        r = cql_transform_buf(m_transform, cql_parser_result(cp), 
+                              rpn_buf, sizeof(rpn_buf)-1);
+        if (!r)
+        {
+            YAZ_PQF_Parser pp = yaz_pqf_create();
 
-           *rpnquery = yaz_pqf_parse(pp, o, rpn_buf);
-           if (!*rpnquery)
-           {
-               size_t off;
-               const char *pqf_msg;
-               int code = yaz_pqf_error(pp, &pqf_msg, &off);
-               yaz_log(YLOG_WARN, "PQF Parser Error %s (code %d)",
-                       pqf_msg, code);
-               r = -1;
-           }
-           yaz_pqf_destroy(pp);
-       }
-       else
-       {
-           r = cql_transform_error(m_transform, &addinfo);
-           yaz_log(YLOG_LOG, "CQL Transform Error %d %s", r,
-                   addinfo ? addinfo : "");
-       }
-    }  
+            *rpnquery = yaz_pqf_parse(pp, o, rpn_buf);
+            if (!*rpnquery)
+            {
+                size_t off;
+                const char *pqf_msg;
+                int code = yaz_pqf_error(pp, &pqf_msg, &off);
+                yaz_log(YLOG_WARN, "PQF Parser Error %s (code %d)",
+                        pqf_msg, code);
+                r = -1;
+            }
+            yaz_pqf_destroy(pp);
+        }
+        else
+        {
+            r = cql_transform_error(m_transform, &addinfo);
+            yaz_log(YLOG_LOG, "CQL Transform Error %d %s", r,
+                    addinfo ? addinfo : "");
+        }
+    }   
     cql_parser_destroy(cp);
     if (addinfo)
-       *addinfop = odr_strdup(o, addinfo);
+        *addinfop = odr_strdup(o, addinfo);
     else
-       *addinfop = 0;
+        *addinfop = 0;
     return r;
 }
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+