Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   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++/signal_system.h>
00010 
00011 #include <uc++/plugin.h>
00012 #include "gql++/connection.h"
00013 
00014 namespace GQL
00015 {
00016 
00017 class DriverPropertyInfo
00018 {
00019   public:
00020     DriverPropertyInfo(const string& nam,
00021                        const string& descr = string(),
00022                        const string& val = string(),
00023                        bool req = false,
00024                        const vector<string>& cs = vector<string>())
00025         : choices_(cs), description_(descr), name_(nam),
00026           required_(req), value_(val) { }
00027       
00028     const vector<string>& choices() const { return(choices_); }
00029     const string& description() const { return(description_); }
00030     const string& name() const { return(description_); }
00031     bool required() const { return(required_); }
00032     const string& value() const { return(value_); }
00033   private:
00034     vector<string> choices_;
00035     string description_;
00036     string name_;
00037     bool required_;
00038     string value_;
00039 };
00040 
00041 class Driver : public uC::Plugin
00042 {
00043   public:
00044     Driver(uC::PluginManager *mgr,const string& id, const string& name)
00045         : uC::Plugin(mgr), id_(id), name_(name) {
00046     }
00047     virtual ~Driver();
00048     
00049     const string& get_id() const { return(id_); }
00050     const string& get_name() const { return(name_); }
00051     int get_major_version() const { return(major_); }
00052     int get_minor_version() const { return(minor_); }
00053     virtual vector<DriverPropertyInfo> get_property_info(
00054             const string& url,
00055             const map<string, string>& props) const = 0;
00056     
00057     virtual bool accept_url(const string& str) const = 0;
00058     virtual Connection *connect(const string& url, 
00059                                 const map<string, string>& prop) = 0;
00060     
00061     SigC::Signal0<void> destroy;
00062 
00063     // From uC::Plugin
00064     virtual string name() const { return(id_); }
00065     virtual string description() const { return(name_); }
00066   protected:
00067     void set_version(int maj, int min) {
00068       minor_ = min;
00069       major_ = maj;
00070     }
00071   private:
00072     int minor_, major_;
00073     string id_, name_;
00074 };
00075 
00076 
00077 }
00078 
00079 #endif

Generated on Fri Apr 19 05:23:53 2002 for gql by doxygen1.2.15