Main Page   Class Hierarchy   File List  

openFields.h

00001 #ifndef open_fields_h
00002 #define open_fields_h
00003 
00004 #include <time.h> // for struct tm
00005 #include <vector> // for direct ordinal access
00006 #include <map>    // for key map associative access
00007 #include <string>
00008 
00009 /*
00010   openFields.h
00011   Defines interface to reusable field class template.
00012 */
00013 using namespace std;
00014 /*
00015   The folowing typenames are supported:
00016 
00017   Numeric: short, long, double, float
00018 
00019   String:  string
00020 
00021   Money:   currency - defined type to eleviate comparison problems with double
00022 
00023   Date & Time: tm struct from time.h
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 // this is that class returned by the recordset
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     // assignment
00059   basicField & operator = ( basicField & input );
00060 
00061   // Sets
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   // Gets
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 // typedef a vector of fields
00082 typedef vector< basicField * > fieldVector;
00083 
00084 // typedef a map of fields
00085 typedef map< string, basicField * > fieldMap;
00086 
00087 
00088 // shortType
00089 class shortField: public basicField
00090 {
00091   short m_field;
00092 
00093 public:
00094   // construction / destruction
00095   shortField( short value, bool isNull, bool isEditable,
00096               string name, string table );
00097   ~shortField();
00098   // assignment
00099   shortField & operator = ( shortField & input );
00100 
00101   // access
00102   short & get( void );
00103   void set( short );
00104 
00105   // formatting
00106   string & format();
00107   string & svrFormat();
00108 };
00109 
00110 // longType
00111 class longField: public basicField
00112 {
00113   long  m_field;
00114 
00115 public:
00116   // construction / destruction
00117   longField( long value, bool isNull, bool isEditable,
00118               string name, string table );
00119   ~longField();
00120 
00121   // assignment
00122   longField & operator = ( longField & input );
00123 
00124   // access
00125   long & get( void );
00126   void set( long );
00127 
00128   // formatting
00129   string & format();
00130   string & svrFormat();
00131 };
00132 
00133 // longType
00134 class longlongField: public basicField
00135 {
00136   long long  m_field;
00137 
00138 public:
00139   // construction / destruction
00140   longlongField( long long value, bool isNull, bool isEditable,
00141               string name, string table );
00142   ~longlongField();
00143 
00144   // assignment
00145   longlongField & operator = ( longlongField & input );
00146 
00147   // access
00148   long long & get( void );
00149   void set( long long );
00150 
00151   // formatting
00152   string & format();
00153   string & svrFormat();
00154 };
00155 
00156 
00157 // doubleType
00158 class doubleField: public basicField
00159 {
00160   double  m_field;
00161 
00162 public:
00163   // construction / destruction
00164   doubleField( double value, bool isNull, bool isEditable,
00165                string name, string table );
00166   ~doubleField();
00167   // assignment
00168   doubleField & operator = ( doubleField & input );
00169 
00170   // access
00171   double & get( void );
00172   void set( double );
00173 
00174   // formatting
00175   string & format();
00176   string & svrFormat();
00177 };
00178 
00179 // floatType
00180 class floatField: public basicField
00181 {
00182   float  m_field;
00183 
00184 public:
00185   // construction / destruction
00186   floatField( float value, bool isNull, bool isEditable,
00187                string name, string table );
00188   ~floatField();
00189   // assignment
00190   floatField & operator = ( floatField & input );
00191 
00192   // access
00193   float & get( void );
00194   void set( float );
00195   // formatting
00196   string & format();
00197   string & svrFormat();
00198 };
00199 
00200 // stringType
00201 class stringField: public basicField
00202 {
00203   string   m_field;
00204 
00205 public:
00206   // construction / destruction
00207   stringField( string value, bool isNull, bool isEditable,
00208                string name, string table );
00209   ~stringField();
00210   // assignment
00211   stringField & operator = ( stringField & input );
00212 
00213   // access
00214   string & get( void );
00215   void set( string );
00216 
00217   // formatting
00218   string & format();
00219   string & svrFormat();
00220 };
00221 
00222 class currencyField: public basicField
00223 {
00224   currency  m_field;
00225 
00226 public:
00227   // construction / destruction
00228   currencyField( currency value, bool isNull, bool isEditable,
00229                string name, string table );
00230   ~currencyField();
00231   // assignment
00232   currencyField & operator = ( currencyField & input );
00233 
00234   // Gets
00235   currency & get( void );
00236   void set( currency );
00237 
00238   // formatting
00239   string & format();
00240   string & svrFormat();
00241 };
00242 
00243 class dateTimeField: public basicField
00244 {
00245   tm  m_field;
00246 
00247 public:
00248   // construction / destruction
00249   dateTimeField( tm value, bool isNull, bool isEditable,
00250                  string name, string table );
00251   ~dateTimeField();
00252 
00253   // assignment
00254   dateTimeField & operator = ( dateTimeField & input );
00255 
00256   // access
00257   tm & get( void );
00258   void set( tm  );
00259 
00260   // formatting
00261   string & format();
00262   string & svrFormat();
00263 };
00264 
00265 class boolField: public basicField
00266 {
00267   bool  m_field;
00268 
00269 public:
00270   // construction / destruction
00271   boolField( bool value, bool isNull, bool isEditable,
00272                string name, string table );
00273   ~boolField();
00274 
00275   // assignment
00276   boolField & operator = ( boolField & input );
00277 
00278   // access
00279   bool & get( void );
00280   void set( bool );
00281 
00282   // formatting
00283   string & format();
00284   string & svrFormat();
00285 };
00286 
00287 #endif
00288 

Generated on Tue Jan 20 09:06:56 2004 for OpenTools by doxygen1.2.18