RDBColumnTmplt.h
00001 #ifndef RDBColumnTmplt_h
00002 #define RDBColumnTmplt_h
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #include <sstream>
00029 #include <string>
00030 #include <utility>
00031
00032 #include <rdbxx/RDBColumn.h>
00033
00034 using namespace std;
00035
00037 template <class Tmplt0, class Tmplt1, class Tmplt2>
00038 class RDBColumnTmplt : public RDBColumn {
00039 public:
00041
00042
00043 RDBColumnTmplt( const string& name="", const string& def="" ) throw ( RDBErr );
00045 RDBColumnTmplt( const RDBColumnTmplt<Tmplt0,Tmplt1,Tmplt2>& rdbcolumntmplt );
00047 ~RDBColumnTmplt( void );
00048
00050 RDBColumn& operator=( const RDBColumnTmplt<Tmplt0,Tmplt1,Tmplt2>& rdbcolumntmplt );
00052 virtual RDBColumn& operator=( const Tmplt0& data ) throw ( RDBErr );
00054 virtual RDBColumn& operator=( const Tmplt1& data ) throw ( RDBErr );
00056 virtual RDBColumn& operator=( const Tmplt2& data ) throw ( RDBErr );
00058
00060
00061
00062 virtual void advanceIdx( void );
00064 virtual void rewind( void );
00066
00068
00069 virtual void setGroup( bool group );
00071 virtual void setGroupValue( void );
00073 virtual int newGroup( void );
00075
00077
00078
00079 virtual bool setData( const Tmplt0& data ) throw ( RDBErr );
00081 virtual bool setData( const Tmplt1& data ) throw ( RDBErr );
00083 virtual bool setData( const Tmplt2& data ) throw ( RDBErr );
00085
00087
00088
00089 virtual void mapData( Tmplt0 data[], const size_t nelems ) throw ( RDBErr );
00091
00092
00094
00095
00096 void* getData( void );
00098 virtual bool getData( Tmplt0& data ) throw( RDBErr );
00100 virtual bool getData( Tmplt1& data ) throw( RDBErr );
00102 virtual bool getData( Tmplt2& data ) throw( RDBErr );
00104 virtual double getDataDouble( void ) throw ( RDBErr );
00106 virtual long getDataLong( void ) throw ( RDBErr );
00108 virtual string getDataString( void ) throw ( RDBErr );
00110
00111 protected:
00113 virtual istream& read( istream& is ) throw ( RDBErr );
00115 virtual ostream& write( ostream& os ) const;
00117 void cleanup( void );
00118
00120 Tmplt0* _data;
00122 size_t _idx;
00124 size_t _nelems;
00126 bool _mine;
00127
00129 Tmplt0 _groupvalue;
00130
00131 };
00132
00133 #ifndef RDBColumnTmplt_cc
00134 #include <rdbxx/RDBColumnTmplt.cc>
00135 #endif
00136
00137
00138
00139
00140
00142 typedef RDBColumnTmplt<double,long,string> RDBDoubleColumn;
00144 typedef RDBColumnTmplt<long,string,double> RDBLongColumn;
00146 typedef RDBColumnTmplt<string,double,long> RDBStringColumn;
00147
00148 #endif