// $Header: /home/cvsroot/yaz++/zoom/master-header,v 1.1 2002-08-08 13:31:54 mike 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 #include // for size_t */* * * This is a bit stupid. The fact that our ZOOM-C++ implementation is * * based on the ZOOM-C implementation is our Dirty Little Secret, and * * there is in principle no reason why client code need be bothered * * with it. Except of course that the public class declarations in * * C++ have to lay their private parts out for the world to see * * (oo-er). Hence the inclusion of * */ *#include * namespace ZOOM { // Forward declarations for type names. class query; class resultSet; class record; const char *option (const char *key); const char *option (const char *key, const char *val); int errcode (); char *errmsg (); char *addinfo (); class connection { * ZOOM_connection c; public: connection (const char *hostname, int portnum); // ### I would like to add a ``throw (ZOOM::error)'' clause // here, but it looks like G++ 2.95.2 doesn't recognise it. ~connection (); const char *option (const char *key) const; const char *option (const char *key, const char *val); * ZOOM_connection _getYazConnection() const { return c; } // package-private }; class query { // pure virtual class: derive concrete subclasses from it. * protected: * ZOOM_query q; public: virtual ~query (); * ZOOM_query _getYazQuery() const { return q; } // package-private }; class prefixQuery : public query { public: prefixQuery (const char *pqn); ~prefixQuery(); }; class CCLQuery : public query { public: CCLQuery (const char *ccl, void *qualset); ~CCLQuery(); }; class resultSet { * connection &owner; * ZOOM_resultset rs; public: resultSet (connection &c, const query &q); ~resultSet (); const char *option (const char *key) const; const char *option (const char *key, const char *val); size_t size () const; const record *getRecord (size_t i) const; }; class record { * const resultSet *owner; * ZOOM_record r; public: * record::record(const resultSet *rs, ZOOM_record rec): * owner(rs), r(rec) {} ~record (); enum syntax { UNKNOWN, GRS1, SUTRS, USMARC, UKMARC, XML }; record *clone () const; syntax recsyn () const; const char *render () const; const char *rawdata () const; }; class error { * protected: * int code; public: error (int code); int errcode () const; const char *errmsg () const; }; class systemError: public error { public: systemError (); int errcode () const; const char *errmsg () const; }; class bib1Error: public error { * const char *info; public: * ~bib1Error(); bib1Error (int errcode, const char *addinfo); int errcode () const; const char *errmsg () const; const char *addinfo () const; }; class queryError: public error { * const char *q; public: * ~queryError(); static const int PREFIX = 1; static const int CCL = 2; queryError (int qtype, const char *source); int errcode () const; const char *errmsg () const; const char *addinfo () const; }; }