00001 /*************************************************************************** 00002 * 00003 * $Id: dbStruct.hh,v 1.9 2000/01/27 05:54:35 porter Exp $ 00004 * 00005 * Author: R. Jeff Porter 00006 *************************************************************************** 00007 * 00008 * Description: Simple dictionary for XML file tags 00009 * 00010 *************************************************************************** 00011 * 00012 * $Log: dbStruct.hh,v $ 00013 * Revision 1.9 2000/01/27 05:54:35 porter 00014 * Updated for compiling on CC5 + HPUX-aCC + KCC (when flags are reset) 00015 * Fixed reConnect()+transaction model mismatch 00016 * added some in-code comments 00017 * 00018 * Revision 1.8 1999/12/28 21:31:42 porter 00019 * added 'using std::vector' and 'using std::list' for Solaris CC5 compilation. 00020 * Also fixed some warnings arising from the CC5 compiles 00021 * 00022 * Revision 1.7 1999/12/07 21:25:25 porter 00023 * some fixes for linux warnings 00024 * 00025 * Revision 1.6 1999/12/03 17:03:24 porter 00026 * added multi-row support for the Xml reader & writer 00027 * 00028 * Revision 1.5 1999/09/30 02:06:13 porter 00029 * add StDbTime to better handle timestamps, modify SQL content (mysqlAccessor) 00030 * allow multiple rows (StDbTable), & Added the comment sections at top of 00031 * each header and src file 00032 * 00033 **************************************************************************/ 00034 #ifndef DBSTRUCT_HH 00035 #define DBSTRUCT_HH 00036 00037 #include <vector> 00038 00039 00040 class basic { 00041 00042 public: 00043 00044 virtual ~basic(){}; 00045 char startKey[20]; 00046 char endKey[20]; 00047 int istart; 00048 int iend; 00049 virtual void setStartKey(const char* key){ strcpy(startKey,key); }; 00050 virtual void setEndKey(const char* key){ strcpy(endKey,key); }; 00051 00052 00053 }; 00054 00055 class stsize : public basic { 00056 00057 public: 00058 int isize; 00059 stsize(): isize(0) { setStartKey("<length>"); 00060 setEndKey("</length>") ;}; 00061 00062 00063 }; 00064 00065 class datav : public basic { 00066 00067 public: 00068 char* data; 00069 datav() { setStartKey("<value>"); 00070 setEndKey("</value>") ;}; 00071 00072 00073 }; 00074 00075 class elem : public basic { 00076 00077 public: 00078 00079 datav val; 00080 char* name; 00081 char* type; 00082 stsize size; 00083 00084 elem() { setStartKey("<db"); 00085 setEndKey("</db") ;}; 00086 00087 }; 00088 00089 #ifdef ST_NO_TEMPLATE_DEF_ARGS 00090 typedef vector<elem*, allocator<elem*> > elemVec; 00091 #else 00092 #if !defined(ST_NO_NAMESPACES) 00093 using std::vector; 00094 #endif 00095 typedef vector<elem*> elemVec; 00096 #endif 00097 00098 class accessor : public basic { 00099 00100 public: 00101 00102 elemVec e; 00103 int nelems; 00104 00105 accessor() { setStartKey("<StDbAccessor>"); 00106 setEndKey("</StDbAccessor>");}; 00107 virtual ~accessor(){}; 00108 00109 00110 }; 00111 00112 00113 class dbRow : public accessor { 00114 00115 public: 00116 00117 int rowNumber; 00118 int rowID; 00119 00120 dbRow() { setStartKey("<TabRow>"); 00121 setEndKey("</TabRow>"); }; 00122 virtual ~dbRow(){}; 00123 }; 00124 00125 #ifdef ST_NO_TEMPLATE_DEF_ARGS 00126 typedef vector<dbRow*, allocator<dbRow*> > rowVec; 00127 #else 00128 typedef vector<dbRow*> rowVec; 00129 #endif 00130 00131 class dbTable : public basic { 00132 00133 public: 00134 00135 accessor a; 00136 rowVec row; 00137 int curRow; 00138 int numRows; 00139 // elemVec e; 00140 // int nelems; 00141 char* name; 00142 00143 dbTable() { setStartKey("<StDbTable>"); 00144 setEndKey("</StDbTable>");}; 00145 virtual ~dbTable(){}; 00146 00147 }; 00148 00149 00150 #endif 00151 00152 00153 00154 00155 00156 00157