38 #include <rdbxx/RDBErr.h> 46 friend istream& operator>>( istream& is,
RDBColumn& col );
49 friend istream& operator>>( istream& is,
RDBColumn* col );
51 friend ostream& operator<<( ostream& os,
const RDBColumn& col );
53 friend ostream& operator<<( ostream& os,
const RDBColumn* col );
59 enum Just { LEFT=
'<', RIGHT=
'>' };
62 enum Type { MONTH=
'M', NUMERIC=
'N', STRING=
'S' };
64 enum Err { NOERR=0, LOSTPRECISION=EDOM, NONNUMERIC=EINVAL, OUTOFRANGE=ERANGE, NODATA=ENODATA };
65 enum Status { CMOG=0x01, CEOG=0x02, CBOG=0x04 };
71 RDBColumn(
const string& name=
"",
const string& def=
"" );
81 virtual RDBColumn& operator=(
const double& data ) = 0;
83 virtual RDBColumn& operator=(
const long& data ) = 0;
85 virtual RDBColumn& operator=(
const string& data ) = 0;
90 virtual void advanceIdx(
void ) = 0;
93 virtual void rewind(
void ) = 0;
98 virtual void setGroup(
bool group );
102 bool getGroup(
void )
const;
104 virtual void setGroupValue(
void ) = 0;
106 virtual int newGroup(
void ) = 0;
111 void setName(
const string& name );
114 void setDef(
const string& def );
116 void setWidth(
const long width );
122 void setDesc(
const string& desc );
124 void setPrecision(
const int precision );
126 void setThrow(
const bool t=
true );
128 void setErrNo(
const int no=0 );
130 virtual bool setData(
const double& data ) = 0;
132 virtual bool setData(
const long& data ) = 0;
134 virtual bool setData(
const string& data ) = 0;
139 virtual void mapData(
double data[],
const size_t nelems=1 );
142 virtual void mapData(
long data[],
const size_t nelems=1 );
144 virtual void mapData(
string data[],
const size_t nelems=1 );
149 string getName(
void )
const;
152 string getDef(
void );
156 long getWidth(
void )
const;
162 string getDesc(
void )
const;
164 int getPrecision(
void )
const;
166 bool getThrow(
void )
const;
168 char* getErr(
void )
const;
170 int getErrNo(
void )
const;
172 virtual void* getData(
void ) = 0;
174 virtual bool getData(
double& data ) = 0;
176 virtual bool getData(
long& data ) = 0;
178 virtual bool getData(
string& data ) = 0;
180 virtual double getDataDouble(
void ) = 0;
182 virtual long getDataLong(
void ) = 0;
184 virtual string getDataString(
void ) = 0;
189 void convert(
const double& idata,
double& odata );
191 void convert(
const double& idata,
long& odata );
193 void convert(
const double& idata,
string& odata );
195 void convert(
const long& idata,
double& odata );
197 void convert(
const long& idata,
long& odata );
199 void convert(
const long& idata,
string& odata );
201 void convert(
const string& idata,
double& odata );
203 void convert(
const string& idata,
long& odata );
205 void convert(
const string& idata,
string& odata );
208 virtual istream& read( istream& is ) = 0;
210 virtual istream& extract( istream& is,
double& data );
212 virtual istream& extract( istream& is,
long& data );
214 virtual istream& extract( istream& is,
string& data );
216 virtual ostream& write( ostream& os )
const = 0;
218 virtual ostream& insert( ostream& os,
double& data )
const;
220 virtual ostream& insert( ostream& os,
long& data )
const;
222 virtual ostream& insert( ostream& os,
string& data )
const;
bool _throw
State of the exception throwing behavior.
Just
Acceptable column justifications.
stringstream _strstrm
Used for numeric to string conversion.
bool _changed
Indicates state for the definition field.
bool _initgroup
Group been initialized.
Err
Possible error conditions.
RDBColumn::Type _type
Data type.
RDBColumn::Just _just
Justification.
int _precision
Precision used for stream output or numeric to string conversion.
Type
Acceptable column types.
bool _group
This is a group column.
Provides interface for general column related methods.