X-Git-Url: http://git.indexdata.com/?p=yazpp-moved-to-github.git;a=blobdiff_plain;f=zoom%2Fmaster-header;h=488093741e75cfbe9f8359e1901431935d0ecc83;hp=c88bcd879a6348e093ded8c16bb174999237c432;hb=63caccd96329d38750b23c1962bc6a37e7d3c7b5;hpb=cc95c9a4185e03db7684c1fb46dce4ca0c5cdf87 diff --git a/zoom/master-header b/zoom/master-header index c88bcd8..4880937 100644 --- a/zoom/master-header +++ b/zoom/master-header @@ -1,12 +1,14 @@ -// $Id: master-header,v 1.10 2002-11-13 11:48:07 mike Exp $ +// $Id: master-header,v 1.17 2003-09-24 18:07:31 adam Exp $ // // ZOOM C++ Binding. // The ZOOM homepage is at http://zoom.z3950.org/ // -// Derived from version 1.0g at -// http://zoom.z3950.org/bind/cplusplus/zoom-1.0g.hh +// Derived from version 1.3a at +// http://zoom.z3950.org/bind/cplusplus/zoom-1.3a.hh #include // for size_t +#include + */* * * This is a bit stupid. The fact that our ZOOM-C++ implementation is @@ -24,105 +26,130 @@ namespace ZOOM { class YAZ_EXPORT resultSet; class YAZ_EXPORT record; - const char *option (const char *key); - const char *option (const char *key, const char *val); - class YAZ_EXPORT connection { * ZOOM_connection c; * friend class resultSet; // so it can use _getYazConnection() * ZOOM_connection _getYazConnection () const { return c; } + // connections are non-copyable. + connection (const connection &); + connection &operator= (const connection &); public: - connection (const char *hostname, int portnum); + connection (); + connection (const std::string &hostname, int portnum); ~connection (); - const char *option (const char *key) const; - const char *option (const char *key, const char *val); + void connect (const std::string &hostname, int portnum); + std::string option (const std::string &key) const; + bool option (const std::string &key, const std::string &val); }; class query { - // pure virtual class: derive concrete subclasses from it. + // base class for all query types * friend class resultSet; // so it can use _getYazQuery() * ZOOM_query _getYazQuery () const { return q; } * protected: * ZOOM_query q; public: + query (); virtual ~query (); }; class YAZ_EXPORT prefixQuery : public query { public: - prefixQuery (const char *pqn); + prefixQuery (const std::string &pqn); ~prefixQuery (); }; class YAZ_EXPORT CCLQuery : public query { public: - CCLQuery (const char *ccl, void *qualset); + CCLQuery (const std::string &ccl, void *qualset); ~CCLQuery (); }; class YAZ_EXPORT resultSet { * connection &owner; * ZOOM_resultset rs; +* friend class record; // for _getYazResultSet() & _getYazConnection() +* ZOOM_resultset _getYazResultSet () const { return rs; } +* ZOOM_connection _getYazConnection () const { +* return owner._getYazConnection(); } + // resultSets are non-copyable. + resultSet (const resultSet &); + resultSet &operator= (const resultSet &); public: resultSet (connection &c, const query &q); ~resultSet (); - const char *option (const char *key) const; - const char *option (const char *key, const char *val); + std::string option (const std::string &key) const; + bool option (const std::string &key, const std::string &val); size_t size () const; - const record *getRecord (size_t i) const; }; class YAZ_EXPORT record { -* const resultSet *owner; +* const resultSet &owner; * ZOOM_record r; -* friend class resultSet; // so it can use this constructor -* record::record (const resultSet *rs, ZOOM_record rec): -* owner (rs), r (rec) {} public: - ~record (); - enum syntax { - UNKNOWN, GRS1, SUTRS, USMARC, UKMARC, XML + class YAZ_EXPORT syntax { + public: + enum value { + UNKNOWN, GRS1, SUTRS, USMARC, UKMARC, XML + }; +* private: +* enum value val; +* public: + syntax (value rs); + operator std::string () const; + bool operator== (const syntax &s) const; + bool operator== (value rs) const; + operator value () const; }; - record *clone () const; + + record (resultSet &rs, size_t num); + ~record (); syntax recsyn () const; - const char *render () const; - const char *rawdata () const; + std::string render () const; + std::string rawdata () const; }; + // Base exception class; from which all other ZOOM exceptions + // are derived. Other classes that use this as their base + // class may want to provide their own errcode() and errmsg() + // functions -- hence they are made virtual. class YAZ_EXPORT exception { * protected: * int code; public: exception (int code); - int errcode () const; - const char *errmsg () const; + virtual ~exception (); + virtual int errcode () const; + virtual std::string errmsg () const; }; - class YAZ_EXPORT systemException: public exception { + // systemException could be thrown for timeouts, protocol errors, + // network outages. + class YAZ_EXPORT systemException : public exception { public: - systemException (); - const char *errmsg () const; + systemException (); // Uses value of system `errno' + systemException (int code); +* virtual std::string errmsg () const; // Why do I have to repeat this? }; + // bib1Exception::errcode() returns a code from the + // Bib-1 Diagnostic Set. class YAZ_EXPORT bib1Exception: public exception { -* const char *info; +* std::string info; public: * ~bib1Exception (); - bib1Exception (int errcode, const char *addinfo); - const char *errmsg () const; - const char *addinfo () const; + bib1Exception (int code, const std::string &addinfo); +* virtual std::string errmsg () const; // Why do I have to repeat this? + std::string addinfo () const; }; - class YAZ_EXPORT queryException: public exception { -* const char *q; + class YAZ_EXPORT queryException : public exception { +* std::string q; public: * ~queryException (); - enum { - PREFIX = 1, - CCL = 2 - }; - queryException (int qtype, const char *source); - const char *errmsg () const; - const char *addinfo () const; + enum { PREFIX, CCL }; + queryException (int qtype, const std::string &source); +* virtual std::string errmsg () const; // Why do I have to repeat this? + std::string addinfo () const; }; }