Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members

gql++/driver.h

Go to the documentation of this file.
00001 /* This is for emacs: -*-Mode: C++;-*- */ 00002 #if !defined(__INC_DRIVER_H) 00003 #define __INC_DRIVER_H 00004 00005 #include <vector> 00006 #include <map> 00007 #include <string> 00008 00009 #include <sigc++/sigc++.h> 00010 00011 #include <yehia/plugin.h> 00012 00013 #include "gql++/connection.h" 00014 00015 namespace GQL 00016 { 00017 00018 class DriverPropertyInfo 00019 { 00020 public: 00021 DriverPropertyInfo(const std::string& nam, 00022 const std::string& descr = std::string(), 00023 const std::string& val = std::string(), 00024 bool req = false, 00025 const std::vector<std::string>& cs = std::vector<std::string>()) 00026 : choices_(cs), description_(descr), name_(nam), 00027 required_(req), value_(val) { } 00028 00029 const std::vector<std::string>& choices() const { return(choices_); } 00030 const std::string& description() const { return(description_); } 00031 const std::string& name() const { return(description_); } 00032 bool required() const { return(required_); } 00033 const std::string& value() const { return(value_); } 00034 private: 00035 std::vector<std::string> choices_; 00036 std::string description_; 00037 std::string name_; 00038 bool required_; 00039 std::string value_; 00040 }; 00041 00042 class Driver : public Yehia::Plugin 00043 { 00044 public: 00045 Driver(Yehia::PluginManager& mgr,const std::string& id, 00046 const std::string& name) 00047 : Yehia::Plugin(mgr), id_(id), name_(name) { 00048 } 00049 virtual ~Driver(); 00050 00051 const std::string& get_id() const { return id_; } 00052 const std::string& get_name() const { return name_; } 00053 int get_major_version() const { return major_; } 00054 int get_minor_version() const { return minor_; } 00055 virtual std::vector<DriverPropertyInfo> get_property_info( 00056 const std::string& url, 00057 const std::map<std::string, std::string>& props) const = 0; 00058 00059 virtual bool accept_url(const std::string& str) const = 0; 00060 virtual Connection *connect( 00061 const std::string& url, 00062 const std::map<std::string, std::string>& prop) = 0; 00063 00064 // From Yehia::Plugin 00065 virtual std::string name() const { return id_; } 00066 virtual std::string description() const { return name_; } 00067 protected: 00068 void set_version(int maj, int min) { 00069 minor_ = min; 00070 major_ = maj; 00071 } 00072 private: 00073 int minor_, major_; 00074 std::string id_, name_; 00075 }; 00076 00077 00078 } 00079 00080 #endif

Generated on Wed Jul 28 18:38:00 2004 for gql by doxygen 1.3.7