Updated copyright headers.
[yazpp-moved-to-github.git] / src / yaz-z-query.cpp
index f149b38..31d0733 100644 (file)
@@ -1,11 +1,9 @@
-/*
- * Copyright (c) 1998-2005, Index Data.
+/* This file is part of the yazpp toolkit.
+ * Copyright (C) 1998-2008 Index Data and Mike Taylor
  * See the file LICENSE for details.
- * 
- * $Id: yaz-z-query.cpp,v 1.20 2006-06-19 13:12:07 adam Exp $
  */
 
-#include <yaz/logrpn.h>
+#include <yaz/querytowrbuf.h>
 #include <yazpp/z-query.h>
 #include <yaz/pquery.h>
 #include <assert.h>
@@ -63,7 +61,7 @@ int Yaz_Z_Query::set_rpn(const char *rpn)
     odr_reset(odr_encode);
     Z_Query *query = (Z_Query*) odr_malloc(odr_encode, sizeof(*query));
     query->which = Z_Query_type_1;
-    query->u.type_1 = p_query_rpn(odr_encode, PROTO_Z3950, rpn);
+    query->u.type_1 = p_query_rpn(odr_encode, rpn);
     if (!query->u.type_1)
         return -1;
     if (!z_Query(odr_encode, &query, 0, 0))
@@ -101,7 +99,7 @@ Z_Query *Yaz_Z_Query::get_Z_Query()
     return query;
 }
 
-void Yaz_Z_Query::print(char *str, int len)
+void Yaz_Z_Query::print(char *str, size_t len)
 {
     Z_Query *query;
     *str = 0;
@@ -110,18 +108,16 @@ void Yaz_Z_Query::print(char *str, int len)
     odr_setbuf(odr_decode, m_buf, m_len, 0);
     if (!z_Query(odr_decode, &query, 0, 0))
         return;
-    WRBUF wbuf = zquery2pquery(query);
-    if (wbuf)
+    WRBUF wbuf = wrbuf_alloc();
+    yaz_query_to_wrbuf(wbuf, query);
+    if (wrbuf_len(wbuf) > len-1)
     {
-        if (wrbuf_len(wbuf) > len-1)
-        {
-            memcpy(str, wrbuf_buf(wbuf), len-1);
-            str[len-1] = '\0';
-        }
-        else
-            strcpy(str, wrbuf_buf(wbuf));
-        wrbuf_free(wbuf,1);
+        memcpy(str, wrbuf_buf(wbuf), len-1);
+        str[len-1] = '\0';
     }
+    else
+        strcpy(str, wrbuf_cstr(wbuf));
+    wrbuf_destroy(wbuf);
     odr_reset(odr_decode);
 }
 
@@ -136,13 +132,6 @@ int Yaz_Z_Query::match(const Yaz_Z_Query *other)
     return 1;
 }
 
-WRBUF Yaz_Z_Query::zquery2pquery(Z_Query *q)
-{
-    WRBUF w = wrbuf_alloc();
-    wrbuf_put_zquery(w, q);
-    return w;
-}
-
 /*
  * Local variables:
  * c-basic-offset: 4