X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=zoom%2Fzrs.cpp;h=e290cb29b32cc2f1b15934e37ad7a0c54f97cce8;hb=6807f0e768d9578ceefca99fd1b59d98a9d4005a;hp=39d042296409ea45dc5c78b3d4f9261f90f3597a;hpb=8e0f7888835eb1a84882b440209ec125ce5856c1;p=yazpp-moved-to-github.git diff --git a/zoom/zrs.cpp b/zoom/zrs.cpp index 39d0422..e290cb2 100644 --- a/zoom/zrs.cpp +++ b/zoom/zrs.cpp @@ -1,8 +1,8 @@ -// $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.5 2003-07-02 10:25:13 adam Exp $ // Z39.50 Result Set class -#include "zoom++.h" +#include "zoom.h" namespace ZOOM { @@ -14,7 +14,7 @@ namespace ZOOM { const char *addinfo; if ((errcode = ZOOM_connection_error(yazc, &errmsg, &addinfo)) != 0) { - throw bib1Error(errcode, addinfo); + throw bib1Exception(errcode, addinfo); } } @@ -22,38 +22,16 @@ namespace ZOOM { 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); - } }