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

gql++/mod-result-set.h

Go to the documentation of this file.
00001 /* This is for emacs: -*-Mode: C++;-*- */
00002 #if !defined(__INC_MODRESULTSET_H)
00003 #define __INC_MODRESULTSET_H
00004 
00005 #include <vector>
00006 
00007 #include <gql++/result-set.h>
00008 #include <gql++/result-set-metadata.h>
00009 
00010 namespace GQL
00011 {
00012 
00013 class ModResultSetMetaData : public ResultSetMetaData
00014 {
00015   public:
00016     ModResultSetMetaData(int cols);
00017     virtual ~ModResultSetMetaData();
00018     
00019     virtual int column_count() const { return ncols_; }
00020     virtual std::string get_column_label(int i) const {
00021       return col_labels_[i].empty() ? col_names_[i] : col_labels_[i];
00022     }
00023     virtual std::string get_column_name(int i) const {
00024       return col_names_[i];
00025     }
00026     virtual const SQLType& get_column_type(int i) const {
00027       return col_types_[i];
00028     }
00029     
00030     void set_column_label(int i, const std::string& s);
00031     void set_column_name(int i, const std::string& s);
00032     void set_column_type(int i, const SQLType& type);
00033     void set_column_info(int i, const SQLType& type, 
00034                          const std::string& name,
00035                          const std::string& label = std::string());
00036   private:
00037     int ncols_;
00038     std::string *col_labels_;
00039     std::string *col_names_;
00040     SQLType *col_types_;
00041 };
00042  
00043 class ModResultSet : public ResultSet
00044 {
00045   public:
00046     ModResultSet(Connection *conn, int cols);
00047     virtual ~ModResultSet();
00048     
00049     virtual bool next() throw(SQLException);
00050     
00051     virtual SQLObject *get(int col, SQLObject *obj) const throw(SQLException);
00052     virtual const ResultSetMetaData *get_meta_data() const;
00053 
00061     void append(const char *const*tuple);
00062     
00068     void append(std::string **tuple);
00069     void set_meta_data(ResultSetMetaData *metadata);
00070   private:
00071     int cols_;
00072     int rowno_;
00073     std::vector<std::string **> rows_;
00074     ResultSetMetaData *metadata_;
00075 };
00076 
00077 }
00078 
00079 #endif

Generated on Thu May 1 18:08:01 2003 for gql by doxygen1.3