00001
00002
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
00029
00030
00031
00032
00033
00034
00035 #include "StDbXmlWriter.h"
00036 #include "StDbTable.h"
00037
00038
00039
00040 void
00041 StDbXmlWriter::streamHeader(const char* name){
00042 *os << "<StDbName>"<<name<< endl;
00043 }
00044
00045
00046
00047 void
00048 StDbXmlWriter::streamAccessor(){
00049 *os << "<StDbAccessor>" << endl;
00050 }
00051
00052
00053
00054 void
00055 StDbXmlWriter::endAccessor(){
00056 *os << "</StDbAccessor>" << endl;
00057 }
00058
00059
00060
00061 void
00062 StDbXmlWriter::streamTail(){
00063 *os << "</StDbName>" << endl;
00064 }
00065
00066
00067
00068 void
00069 StDbXmlWriter::streamRow(int row){
00070 *os << "<TabRow>" << row << endl;
00071 }
00072
00073
00074
00075 void
00076 StDbXmlWriter::streamEndRow(){
00077 *os << "</TabRow>" << endl;
00078 }
00079
00080
00081 void
00082 StDbXmlWriter::streamTableName(const char* name){
00083 *os << "<StDbTable>"<<name << endl;
00084 }
00085
00086
00087 void
00088 StDbXmlWriter::streamEndTableName(){
00089 *os << "</StDbTable>"<< endl;
00090 }
00091
00092
00093
00094 void
00095 StDbXmlWriter::ioTable(StDbTable* table){
00096
00097 char * name = table->getName();
00098 streamTableName(name); delete [] name;
00099 streamAccessor();
00100 table->StreamAccessor((typeAcceptor*)this, false);
00101 endAccessor();
00102
00103 int k;
00104 int nrows;
00105 int* elements = table->getElementID(nrows);
00106
00107 if(!elements){
00108 elements = new int[nrows];
00109 for(k=0;k<nrows;k++)elements[k]=k;
00110 }
00111
00112 table->setRowNumber();
00113
00114 for(k=0;k<nrows;k++){
00115 streamRow(k);
00116 table->dbStreamer((typeAcceptor*)this, false);
00117 streamEndRow();
00118 }
00119 streamEndTableName();
00120 }
00121
00122
00123
00124 void
00125 StDbXmlWriter::pass(char* name, char*& i, int& len){
00126 *os << "<dbString> "<<name<<" <value> "<< i <<" </value> </dbString>" << endl;
00127 }
00128
00129
00130
00131 void
00132 StDbXmlWriter::pass(char* name, unsigned char& i, int& len){
00133 *os << "<dbUChar> "<<name<<" <value> "<< (int)i <<" </value> </dbUChar>" << endl;
00134 }
00135
00136
00137
00138 void
00139 StDbXmlWriter::pass(char* name, unsigned char*& i, int& len){
00140 *os << "<dbUCharArray> " << name << " <length> ";
00141 *os << len << " </length>" << endl;
00142 *os << "<value>" << endl;
00143
00144 int icount = 0;
00145 for(int j=0; j<len-1;j++){
00146 *os << (int)i[j] << ", ";
00147 icount++;
00148 if(icount==8){
00149 *os << endl;
00150 icount = 0;
00151 }
00152 }
00153
00154 *os << (int)i[len-1] << endl;
00155 *os << "</value> </dbUCharArray> " << endl;
00156 }
00157
00158
00159
00160
00161 void
00162 StDbXmlWriter::pass(char* name, short& i, int& len){
00163 *os << "<dbShort> "<<name<<" <value> "<< i <<" </value> </dbShort>" << endl;
00164 }
00165
00166
00167
00168 void
00169 StDbXmlWriter::pass(char* name, short*& i, int& len){
00170
00171 *os << "<dbShortArray> " << name << " <length> ";
00172 *os << len << " </length>" << endl;
00173 *os << "<value>" << endl;
00174
00175 int icount = 0;
00176 for(int j=0; j<len-1;j++){
00177 *os << i[j] << ", ";
00178 icount++;
00179 if(icount==8){
00180 *os << endl;
00181 icount = 0;
00182 }
00183 }
00184
00185 *os << i[len-1] << endl;
00186 *os << "</value> </dbShortArray> " << endl;
00187 }
00188
00189
00190
00191 void
00192 StDbXmlWriter::pass(char* name, unsigned short& i, int& len){
00193 *os << "<dbUShort> "<<name<<" <value> "<< i <<" </value> </dbUShort>" << endl;
00194 }
00195
00196
00197
00198 void
00199 StDbXmlWriter::pass(char* name, unsigned short*& i, int& len){
00200
00201 *os << "<dbUShortArray> " << name << " <length> ";
00202 *os << len << " </length>" << endl;
00203 *os << "<value>" << endl;
00204
00205 int icount = 0;
00206 for(int j=0; j<len-1;j++){
00207 *os << i[j] << ", ";
00208 icount++;
00209 if(icount==8){
00210 *os << endl;
00211 icount = 0;
00212 }
00213 }
00214
00215 *os << i[len-1] << endl;
00216 *os << "</value> </dbUShortArray> " << endl;
00217 }
00218
00219
00220
00221 void
00222 StDbXmlWriter::pass(char* name, int& i, int& len){
00223 *os << "<dbInt> "<<name<<" <value> "<< i <<" </value> </dbInt>" << endl;
00224 }
00225
00226
00227
00228 void
00229 StDbXmlWriter::pass(char* name, int*& i, int& len){
00230
00231 *os << "<dbIntArray> " << name << " <length> ";
00232 *os << len << " </length>" << endl;
00233 *os << "<value>" << endl;
00234
00235 int icount = 0;
00236 for(int j=0; j<len-1;j++){
00237 *os << i[j] << ", ";
00238 icount++;
00239 if(icount==8){
00240 *os << endl;
00241 icount = 0;
00242 }
00243 }
00244
00245 *os << i[len-1] << endl;
00246 *os << "</value> </dbIntArray> " << endl;
00247 }
00248
00249
00250
00251 void
00252 StDbXmlWriter::pass(char* name, unsigned int& i, int& len){
00253 *os << "<dbUInt> "<<name<<" <value> "<< i <<" </value> </dbUInt>" << endl;
00254 }
00255
00256
00257
00258 void
00259 StDbXmlWriter::pass(char* name, unsigned int*& i, int& len){
00260
00261 *os << "<dbUIntArray> " << name << " <length> ";
00262 *os << len << " </length>" << endl;
00263 *os << "<value>" << endl;
00264
00265 int icount = 0;
00266 for(int j=0; j<len-1;j++){
00267 *os << i[j] << ", ";
00268 icount++;
00269 if(icount==8){
00270 *os << endl;
00271 icount = 0;
00272 }
00273 }
00274
00275 *os << i[len-1] << endl;
00276 *os << "</value> </dbUIntArray> " << endl;
00277 }
00278
00279
00280
00281 void
00282 StDbXmlWriter::pass(char* name, float& i, int& len){
00283 *os << "<dbFloat> "<<name<<" <value> "<< i <<" </value> </dbFloat>" << endl;
00284 }
00285
00286
00287
00288 void
00289 StDbXmlWriter::pass(char* name, float*& i, int& len){
00290
00291 *os << "<dbFloatArray> " << name << " <length> ";
00292 *os << len << " </length>" << endl;
00293 *os << "<value>" << endl;
00294
00295 int icount = 0;
00296 for(int j=0; j<len-1;j++){
00297 *os << i[j] << ", ";
00298 icount++;
00299 if(icount==8){
00300 *os << endl;
00301 icount = 0;
00302 }
00303 }
00304
00305 *os << i[len-1] << endl;
00306 *os << "</value> </dbFloatArray> " << endl;
00307 }
00308
00309
00310
00311 void
00312 StDbXmlWriter::pass(char* name, double& i, int& len){
00313 *os << "<dbDouble> "<<name<<" <value> "<< i <<" </value> </dbDouble>" << endl;
00314 }
00315
00316
00317
00318 void
00319 StDbXmlWriter::pass(char* name, double*& i, int& len){
00320
00321 *os << "<dbDoubleArray> " << name << " <length> ";
00322 *os << len << " </length>" << endl;
00323 *os << "<value>" << endl;
00324
00325 int icount = 0;
00326 for(int j=0; j<len-1;j++){
00327 *os << i[j] << ", ";
00328 icount++;
00329 if(icount==8){
00330 *os << endl;
00331 icount = 0;
00332 }
00333 }
00334
00335 *os << i[len-1] << endl;
00336 *os << "</value> </dbDoubleArray> " << endl;
00337 }
00338
00339
00340 void
00341 StDbXmlWriter::pass(char* name, long& i, int& len){
00342 *os << "<dbLong> "<<name<<" <value> "<< i <<" </value> </dbLong>" << endl;
00343 }
00344
00345
00346
00347 void
00348 StDbXmlWriter::pass(char* name, long*& i, int& len){
00349
00350 *os << "<dbLongArray> " << name << " <length> ";
00351 *os << len << " </length>" << endl;
00352 *os << "<value>" << endl;
00353
00354 int icount = 0;
00355 for(int j=0; j<len-1;j++){
00356 *os << i[j] << ", ";
00357 icount++;
00358 if(icount==8){
00359 *os << endl;
00360 icount = 0;
00361 }
00362 }
00363
00364 *os << i[len-1] << endl;
00365 *os << "</value> </dbLongArray> " << endl;
00366 }
00367
00368
00369
00370 void
00371 StDbXmlWriter::pass(char* name, unsigned long& i, int& len){
00372 *os << "<dbULong> "<<name<<" <value> "<< i <<" </value> </dbULong>" << endl;
00373 }
00374 void
00375 StDbXmlWriter::pass(char* name, long long& i, int& len){
00376 *os << "<dbLongLong> "<<name<<" <value> "<< i <<" </value> </dbLongLong>" << endl;
00377 }
00378
00379
00380
00381 void
00382 StDbXmlWriter::pass(char* name, unsigned long*& i, int& len){
00383
00384 *os << "<dbULongArray> " << name << " <length> ";
00385 *os << len << " </length>" << endl;
00386 *os << "<value>" << endl;
00387
00388 int icount = 0;
00389 for(int j=0; j<len-1;j++){
00390 *os << i[j] << ", ";
00391 icount++;
00392 if(icount==8){
00393 *os << endl;
00394 icount = 0;
00395 }
00396 }
00397
00398 *os << i[len-1] << endl;
00399 *os << "</value> </dbULongArray> " << endl;
00400 }
00401
00402
00403 void
00404 StDbXmlWriter::pass(char* name, long long*& i, int& len){
00405
00406 *os << "<dbLongLongArray> " << name << " <length> ";
00407 *os << len << " </length>" << endl;
00408 *os << "<value>" << endl;
00409
00410 int icount = 0;
00411 for(int j=0; j<len-1;j++){
00412 *os << i[j] << ", ";
00413 icount++;
00414 if(icount==8){
00415 *os << endl;
00416 icount = 0;
00417 }
00418 }
00419
00420 *os << i[len-1] << endl;
00421 *os << "</value> </dbLongLongArray> " << endl;
00422 }
00423
00424
00425
00426
00427
00428
00429
00430
00431
00432
00433
00434
00435
00436