buildconf.sh --disable-shared --enable-static
[yazpp-moved-to-github.git] / zoom / zrs.cpp
index 39d0422..b33e27c 100644 (file)
@@ -1,59 +1,46 @@
-// $Header: /home/cvsroot/yaz++/zoom/zrs.cpp,v 1.1 2002-08-08 13:31:54 mike Exp $
+// $Header: /home/cvsroot/yaz++/zoom/zrs.cpp,v 1.7 2005-06-25 15:53:21 adam Exp $
 
 // Z39.50 Result Set class
 
-#include "zoom++.h"
+#include "zoom.h"
 
 
 namespace ZOOM {
     resultSet::resultSet(connection &c, const query &q) : owner(c) {
-       ZOOM_connection yazc = c._getYazConnection();
-       rs = ZOOM_connection_search(yazc, q._getYazQuery());
-       int errcode;
-       const char *errmsg;     // unused: carries same info as `errcode'
-       const char *addinfo;
-
-       if ((errcode = ZOOM_connection_error(yazc, &errmsg, &addinfo)) != 0) {
-           throw bib1Error(errcode, addinfo);
-       }
+        ZOOM_connection yazc = c._getYazConnection();
+        rs = ZOOM_connection_search(yazc, q._getYazQuery());
+        int errcode;
+        const char *errmsg;     // unused: carries same info as `errcode'
+        const char *addinfo;
+
+        if ((errcode = ZOOM_connection_error(yazc, &errmsg, &addinfo)) != 0) {
+            ZOOM_resultset_destroy(rs);
+            throw bib1Exception(errcode, addinfo);
+        }
     }
 
     resultSet::~resultSet() {
-       ZOOM_resultset_destroy(rs);
+        ZOOM_resultset_destroy(rs);
     }
 
-    const char *resultSet::option(const char *key) const {
-       return ZOOM_resultset_option_get(rs, key);
+    std::string resultSet::option(const std::string &key) const {
+        return ZOOM_resultset_option_get(rs, key.c_str());
     }
 
-    const char *resultSet::option(const char *key, const char *val) {
-       // ### There may be memory-management issues here.
-       const char *old = ZOOM_resultset_option_get(rs, key);
-       ZOOM_resultset_option_set(rs, key, val);
-       return old;
+    bool resultSet::option(const std::string &key, const std::string &val) {
+      ZOOM_resultset_option_set(rs, key.c_str(), val.c_str());
+        return true;
     }
 
     size_t resultSet::size() const {
-       return ZOOM_resultset_size(rs);
-    }
-
-    const record *resultSet::getRecord(size_t i) const {
-       ZOOM_record rec;
-       if ((rec = ZOOM_resultset_record(rs, i)) == 0) {
-           const char *errmsg; // unused: carries same info as `errcode'
-           const char *addinfo;
-           int errcode = ZOOM_connection_error(owner._getYazConnection(),
-                                               &errmsg, &addinfo);
-           throw bib1Error(errcode, addinfo);
-       }
-
-       // Memory management is odd here.  The ZOOM-C record we've
-       // just fetched (`rec') is owned by the ZOOM-C result-set we
-       // fetched it from (`rs'), so all we need to allocate is a
-       // ZOOM-C++ wrapper for it, which is destroyed at the
-       // appropriate time -- but the underlying (ZOOM-C) record is
-       // _not_ destroyed at that time, because it's done when the
-       // underlying result-set is deleted.
-       return new record(this, rec);
+        return ZOOM_resultset_size(rs);
     }
 }
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+