Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound 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 Thu May 1 18:08:01 2003 for gql by doxygen1.3