00001 #ifndef open_fields_h
00002 #define open_fields_h
00003
00004 #include <time.h>
00005 #include <vector>
00006 #include <map>
00007 #include <string>
00008
00009
00010
00011
00012
00013 using namespace std;
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 enum fieldTypes
00028 {
00029 shortType, longType, longlongType, floatType, doubleType,
00030 stringType, currencyType, dateTimeType, boolType
00031 };
00032
00033 struct currency
00034 {
00035 double amount;
00036 };
00037
00038
00039 class basicField
00040 {
00041 protected:
00042 bool m_bIsNull;
00043 bool m_bIsEditable;
00044 string m_strTable;
00045 string m_strName;
00046 string m_strFormatMask;
00047 string m_strServerMask;
00048 string m_strFormatted;
00049 fieldTypes m_fieldType;
00050 int m_iSize;
00051
00052 public:
00053
00054 basicField();
00055 basicField( bool isNull, bool isEditable, string name, string table );
00056 virtual ~basicField();
00057
00058
00059 basicField & operator = ( basicField & input );
00060
00061
00062 basicField & setNull( bool bNull = true );
00063 basicField & setIsEditable( bool bEditable = true );
00064 basicField & setName( string strName );
00065 basicField & setTable( string strTable );
00066 basicField & setFormatMask( string strFormatMask );
00067 basicField & setSvrFormatMask( string strFormatMask );
00068 basicField & setSize( int iSize );
00069
00070
00071 bool isNull( void );
00072 bool isEditable( void );
00073 int getSize( void );
00074 string & getName( void );
00075 string & getTable( void );
00076 fieldTypes getType( void );
00077 virtual string & format();
00078 virtual string & svrFormat();
00079 };
00080
00081
00082 typedef vector< basicField * > fieldVector;
00083
00084
00085 typedef map< string, basicField * > fieldMap;
00086
00087
00088
00089 class shortField: public basicField
00090 {
00091 short m_field;
00092
00093 public:
00094
00095 shortField( short value, bool isNull, bool isEditable,
00096 string name, string table );
00097 ~shortField();
00098
00099 shortField & operator = ( shortField & input );
00100
00101
00102 short & get( void );
00103 void set( short );
00104
00105
00106 string & format();
00107 string & svrFormat();
00108 };
00109
00110
00111 class longField: public basicField
00112 {
00113 long m_field;
00114
00115 public:
00116
00117 longField( long value, bool isNull, bool isEditable,
00118 string name, string table );
00119 ~longField();
00120
00121
00122 longField & operator = ( longField & input );
00123
00124
00125 long & get( void );
00126 void set( long );
00127
00128
00129 string & format();
00130 string & svrFormat();
00131 };
00132
00133
00134 class longlongField: public basicField
00135 {
00136 long long m_field;
00137
00138 public:
00139
00140 longlongField( long long value, bool isNull, bool isEditable,
00141 string name, string table );
00142 ~longlongField();
00143
00144
00145 longlongField & operator = ( longlongField & input );
00146
00147
00148 long long & get( void );
00149 void set( long long );
00150
00151
00152 string & format();
00153 string & svrFormat();
00154 };
00155
00156
00157
00158 class doubleField: public basicField
00159 {
00160 double m_field;
00161
00162 public:
00163
00164 doubleField( double value, bool isNull, bool isEditable,
00165 string name, string table );
00166 ~doubleField();
00167
00168 doubleField & operator = ( doubleField & input );
00169
00170
00171 double & get( void );
00172 void set( double );
00173
00174
00175 string & format();
00176 string & svrFormat();
00177 };
00178
00179
00180 class floatField: public basicField
00181 {
00182 float m_field;
00183
00184 public:
00185
00186 floatField( float value, bool isNull, bool isEditable,
00187 string name, string table );
00188 ~floatField();
00189
00190 floatField & operator = ( floatField & input );
00191
00192
00193 float & get( void );
00194 void set( float );
00195
00196 string & format();
00197 string & svrFormat();
00198 };
00199
00200
00201 class stringField: public basicField
00202 {
00203 string m_field;
00204
00205 public:
00206
00207 stringField( string value, bool isNull, bool isEditable,
00208 string name, string table );
00209 ~stringField();
00210
00211 stringField & operator = ( stringField & input );
00212
00213
00214 string & get( void );
00215 void set( string );
00216
00217
00218 string & format();
00219 string & svrFormat();
00220 };
00221
00222 class currencyField: public basicField
00223 {
00224 currency m_field;
00225
00226 public:
00227
00228 currencyField( currency value, bool isNull, bool isEditable,
00229 string name, string table );
00230 ~currencyField();
00231
00232 currencyField & operator = ( currencyField & input );
00233
00234
00235 currency & get( void );
00236 void set( currency );
00237
00238
00239 string & format();
00240 string & svrFormat();
00241 };
00242
00243 class dateTimeField: public basicField
00244 {
00245 tm m_field;
00246
00247 public:
00248
00249 dateTimeField( tm value, bool isNull, bool isEditable,
00250 string name, string table );
00251 ~dateTimeField();
00252
00253
00254 dateTimeField & operator = ( dateTimeField & input );
00255
00256
00257 tm & get( void );
00258 void set( tm );
00259
00260
00261 string & format();
00262 string & svrFormat();
00263 };
00264
00265 class boolField: public basicField
00266 {
00267 bool m_field;
00268
00269 public:
00270
00271 boolField( bool value, bool isNull, bool isEditable,
00272 string name, string table );
00273 ~boolField();
00274
00275
00276 boolField & operator = ( boolField & input );
00277
00278
00279 bool & get( void );
00280 void set( bool );
00281
00282
00283 string & format();
00284 string & svrFormat();
00285 };
00286
00287 #endif
00288