00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef _columntypes_h
00018 #define _columntypes_h
00019
00020 #include <spl/types.h>
00021 #include <spl/Debug.h>
00022
00023 #ifdef _WINDOWS
00024 #include <spl/configwin32.h>
00025 #else
00026 #include <spl/autoconf/config.h>
00027 #endif
00028
00029 #include <spl/collection/Vector.h>
00030 #include <spl/data/RecordSet.h>
00031 #include <spl/Variant.h>
00032
00039 class Int8Column : public IColumn
00040 {
00041 protected:
00042 Vector<int8> m_data;
00043
00044 public:
00045 Int8Column(const String& name);
00046 virtual ~Int8Column();
00047
00048 virtual int Count() const;
00049 virtual int Type() const;
00050 virtual IColumn *Clone() const;
00051
00052 virtual void Append( int8 i );
00053 virtual void Append( int16 i );
00054 virtual void Append( int32 i );
00055 virtual void Append( int64 i );
00056 virtual void Append( Decimal i );
00057 virtual void Append( float32 i );
00058 virtual void Append( float64 i );
00059 virtual void Append( bool i );
00060 virtual void Append( DateTime i );
00061 virtual void Append( Date i );
00062 virtual void Append( const String& str );
00063 virtual void AppendParse( const char *data, const int len);
00064 virtual void Append( void *data, int len );
00065 virtual void Append( IColumn *col, const int row );
00066 virtual void AppendNull( );
00067
00068 virtual int8 GetByte(const int row);
00069 virtual int16 GetInt16(const int row);
00070 virtual int32 GetInt32(const int row);
00071 virtual int64 GetInt64(const int row);
00072 virtual Decimal GetDecimal(const int row);
00073 virtual float32 GetFloat32(const int row);
00074 virtual float64 GetFloat64(const int row);
00075 virtual bool GetBit(const int row);
00076 virtual DateTime GetTimeStamp(const int row);
00077 virtual Date GetDate(const int row);
00078 virtual DateTime GetDateTime(const int row);
00079 virtual StringPtr GetChar(const int row);
00080 virtual StringPtr GetVarchar(const int row);
00081 virtual Variant GetVariant(const int row);
00082
00083 #if defined(DEBUG)
00084 virtual void CheckMem() const;
00085 virtual void ValidateMem() const;
00086 #endif
00087 };
00088
00089 class Int16Column : public IColumn
00090 {
00091 protected:
00092 Vector<int16> m_data;
00093
00094 public:
00095 Int16Column(const String& name);
00096 virtual ~Int16Column();
00097
00098 virtual int Count() const;
00099 virtual int Type() const;
00100 virtual IColumn *Clone() const;
00101
00102 virtual void Append( int8 i );
00103 virtual void Append( int16 i );
00104 virtual void Append( int32 i );
00105 virtual void Append( int64 i );
00106 virtual void Append( Decimal i );
00107 virtual void Append( float32 i );
00108 virtual void Append( float64 i );
00109 virtual void Append( bool i );
00110 virtual void Append( DateTime i );
00111 virtual void Append( Date i );
00112 virtual void Append( const String& str );
00113 virtual void AppendParse( const char * data, const int len);
00114 virtual void Append( void *data, int len );
00115 virtual void Append( IColumn *col, const int row );
00116 virtual void AppendNull( );
00117
00118 virtual int8 GetByte(const int row);
00119 virtual int16 GetInt16(const int row);
00120 virtual int32 GetInt32(const int row);
00121 virtual int64 GetInt64(const int row);
00122 virtual Decimal GetDecimal(const int row);
00123 virtual float32 GetFloat32(const int row);
00124 virtual float64 GetFloat64(const int row);
00125 virtual bool GetBit(const int row);
00126 virtual DateTime GetTimeStamp(const int row);
00127 virtual Date GetDate(const int row);
00128 virtual DateTime GetDateTime(const int row);
00129 virtual StringPtr GetChar(const int row);
00130 virtual StringPtr GetVarchar(const int row);
00131 virtual Variant GetVariant(const int row);
00132
00133 #if defined(DEBUG)
00134 virtual void CheckMem() const;
00135 virtual void ValidateMem() const;
00136 #endif
00137 };
00138
00139 class Int32Column : public IColumn
00140 {
00141 protected:
00142 Vector<int32> m_data;
00143
00144 public:
00145 Int32Column(const String& name);
00146 virtual ~Int32Column();
00147
00148 virtual int Count() const;
00149 virtual int Type() const;
00150 virtual IColumn *Clone() const;
00151
00152 virtual void Append( int8 i );
00153 virtual void Append( int16 i );
00154 virtual void Append( int32 i );
00155 virtual void Append( int64 i );
00156 virtual void Append( Decimal i );
00157 virtual void Append( float32 i );
00158 virtual void Append( float64 i );
00159 virtual void Append( bool i );
00160 virtual void Append( DateTime i );
00161 virtual void Append( Date i );
00162 virtual void Append( const String& str );
00163 virtual void AppendParse( const char * data, const int len);
00164 virtual void Append( void *data, int len );
00165 virtual void Append( IColumn *col, const int row );
00166 virtual void AppendNull( );
00167
00168 virtual int8 GetByte(const int row);
00169 virtual int16 GetInt16(const int row);
00170 virtual int32 GetInt32(const int row);
00171 virtual int64 GetInt64(const int row);
00172 virtual Decimal GetDecimal(const int row);
00173 virtual float32 GetFloat32(const int row);
00174 virtual float64 GetFloat64(const int row);
00175 virtual bool GetBit(const int row);
00176 virtual DateTime GetTimeStamp(const int row);
00177 virtual Date GetDate(const int row);
00178 virtual DateTime GetDateTime(const int row);
00179 virtual StringPtr GetChar(const int row);
00180 virtual StringPtr GetVarchar(const int row);
00181 virtual Variant GetVariant(const int row);
00182
00183 #if defined(DEBUG)
00184 virtual void CheckMem() const;
00185 virtual void ValidateMem() const;
00186 #endif
00187 };
00188
00189 class Int64Column : public IColumn
00190 {
00191 protected:
00192 Vector<int64> m_data;
00193
00194 public:
00195 Int64Column(const String& name);
00196 virtual ~Int64Column();
00197
00198 virtual int Count() const;
00199 virtual int Type() const;
00200 virtual IColumn *Clone() const;
00201
00202 virtual void Append( int8 i );
00203 virtual void Append( int16 i );
00204 virtual void Append( int32 i );
00205 virtual void Append( int64 i );
00206 virtual void Append( Decimal i );
00207 virtual void Append( float32 i );
00208 virtual void Append( float64 i );
00209 virtual void Append( bool i );
00210 virtual void Append( DateTime i );
00211 virtual void Append( Date i );
00212 virtual void Append( const String& str );
00213 virtual void AppendParse( const char * data, const int len);
00214 virtual void Append( void *data, int len );
00215 virtual void Append( IColumn *col, const int row );
00216 virtual void AppendNull( );
00217
00218 virtual int8 GetByte(const int row);
00219 virtual int16 GetInt16(const int row);
00220 virtual int32 GetInt32(const int row);
00221 virtual int64 GetInt64(const int row);
00222 virtual Decimal GetDecimal(const int row);
00223 virtual float32 GetFloat32(const int row);
00224 virtual float64 GetFloat64(const int row);
00225 virtual bool GetBit(const int row);
00226 virtual DateTime GetTimeStamp(const int row);
00227 virtual Date GetDate(const int row);
00228 virtual DateTime GetDateTime(const int row);
00229 virtual StringPtr GetChar(const int row);
00230 virtual StringPtr GetVarchar(const int row);
00231 virtual Variant GetVariant(const int row);
00232
00233 #if defined(DEBUG)
00234 virtual void CheckMem() const;
00235 virtual void ValidateMem() const;
00236 #endif
00237 };
00238
00239 class Float32Column : public IColumn
00240 {
00241 protected:
00242 Vector<float32> m_data;
00243
00244 public:
00245 Float32Column(const String& name);
00246 virtual ~Float32Column();
00247 virtual int Count() const;
00248 virtual int Type() const;
00249 virtual IColumn *Clone() const;
00250
00251 virtual void Append( int8 i );
00252 virtual void Append( int16 i );
00253 virtual void Append( int32 i );
00254 virtual void Append( int64 i );
00255 virtual void Append( Decimal i );
00256 virtual void Append( float32 i );
00257 virtual void Append( float64 i );
00258 virtual void Append( bool i );
00259 virtual void Append( DateTime i );
00260 virtual void Append( Date i );
00261 virtual void Append( const String& str );
00262 virtual void AppendParse( const char * data, const int len);
00263 virtual void Append( void *data, int len );
00264 virtual void Append( IColumn *col, const int row );
00265 virtual void AppendNull( );
00266
00267 virtual int8 GetByte(const int row);
00268 virtual int16 GetInt16(const int row);
00269 virtual int32 GetInt32(const int row);
00270 virtual int64 GetInt64(const int row);
00271 virtual Decimal GetDecimal(const int row);
00272 virtual float32 GetFloat32(const int row);
00273 virtual float64 GetFloat64(const int row);
00274 virtual bool GetBit(const int row);
00275 virtual DateTime GetTimeStamp(const int row);
00276 virtual Date GetDate(const int row);
00277 virtual DateTime GetDateTime(const int row);
00278 virtual StringPtr GetChar(const int row);
00279 virtual StringPtr GetVarchar(const int row);
00280 virtual Variant GetVariant(const int row);
00281
00282 #if defined(DEBUG)
00283 virtual void CheckMem() const;
00284 virtual void ValidateMem() const;
00285 #endif
00286 };
00287
00288 class Float64Column : public IColumn
00289 {
00290 protected:
00291 Vector<float64> m_data;
00292
00293 public:
00294 Float64Column(const String& name);
00295 virtual ~Float64Column();
00296
00297 virtual int Count() const;
00298 virtual int Type() const;
00299 virtual IColumn *Clone() const;
00300
00301 virtual void Append( int8 i );
00302 virtual void Append( int16 i );
00303 virtual void Append( int32 i );
00304 virtual void Append( int64 i );
00305 virtual void Append( Decimal i );
00306 virtual void Append( float32 i );
00307 virtual void Append( float64 i );
00308 virtual void Append( bool i );
00309 virtual void Append( DateTime i );
00310 virtual void Append( Date i );
00311 virtual void Append( const String& str );
00312 virtual void AppendParse( const char * data, const int len);
00313 virtual void Append( void *data, int len );
00314 virtual void Append( IColumn *col, const int row );
00315 virtual void AppendNull( );
00316
00317 virtual int8 GetByte(const int row);
00318 virtual int16 GetInt16(const int row);
00319 virtual int32 GetInt32(const int row);
00320 virtual int64 GetInt64(const int row);
00321 virtual Decimal GetDecimal(const int row);
00322 virtual float32 GetFloat32(const int row);
00323 virtual float64 GetFloat64(const int row);
00324 virtual bool GetBit(const int row);
00325 virtual DateTime GetTimeStamp(const int row);
00326 virtual Date GetDate(const int row);
00327 virtual DateTime GetDateTime(const int row);
00328 virtual StringPtr GetChar(const int row);
00329 virtual StringPtr GetVarchar(const int row);
00330 virtual Variant GetVariant(const int row);
00331
00332 #if defined(DEBUG)
00333 virtual void CheckMem() const;
00334 virtual void ValidateMem() const;
00335 #endif
00336 };
00337
00338 class DecimalColumn : public IColumn
00339 {
00340 protected:
00341 Vector<Decimal> m_data;
00342
00343 public:
00344 DecimalColumn(const String& name, const int maxlen);
00345 virtual ~DecimalColumn();
00346
00347 virtual int Count() const;
00348 virtual int Type() const;
00349 virtual IColumn *Clone() const;
00350
00351 virtual void Append( int8 i );
00352 virtual void Append( int16 i );
00353 virtual void Append( int32 i );
00354 virtual void Append( int64 i );
00355 virtual void Append( Decimal i );
00356 virtual void Append( float32 i );
00357 virtual void Append( float64 i );
00358 virtual void Append( bool i );
00359 virtual void Append( DateTime i );
00360 virtual void Append( Date i );
00361 virtual void Append( const String& str );
00362 virtual void AppendParse( const char * data, const int len);
00363 virtual void Append( void *data, int len );
00364 virtual void Append( IColumn *col, const int row );
00365 virtual void AppendNull( );
00366
00367 virtual int8 GetByte(const int row);
00368 virtual int16 GetInt16(const int row);
00369 virtual int32 GetInt32(const int row);
00370 virtual int64 GetInt64(const int row);
00371 virtual Decimal GetDecimal(const int row);
00372 virtual float32 GetFloat32(const int row);
00373 virtual float64 GetFloat64(const int row);
00374 virtual bool GetBit(const int row);
00375 virtual DateTime GetTimeStamp(const int row);
00376 virtual Date GetDate(const int row);
00377 virtual DateTime GetDateTime(const int row);
00378 virtual StringPtr GetChar(const int row);
00379 virtual StringPtr GetVarchar(const int row);
00380 virtual Variant GetVariant(const int row);
00381
00382 #if defined(DEBUG)
00383 virtual void CheckMem() const;
00384 virtual void ValidateMem() const;
00385 #endif
00386 };
00387
00388 class BitColumn : public IColumn
00389 {
00390 protected:
00391 Vector<bool> m_data;
00392
00393 public:
00394 BitColumn(const String& name);
00395 virtual ~BitColumn();
00396
00397 virtual int Count() const;
00398 virtual int Type() const;
00399 virtual IColumn *Clone() const;
00400
00401 virtual void Append( int8 i );
00402 virtual void Append( int16 i );
00403 virtual void Append( int32 i );
00404 virtual void Append( int64 i );
00405 virtual void Append( Decimal i );
00406 virtual void Append( float32 i );
00407 virtual void Append( float64 i );
00408 virtual void Append( bool i );
00409 virtual void Append( DateTime i );
00410 virtual void Append( Date i );
00411 virtual void Append( const String& str );
00412 virtual void AppendParse( const char * data, const int len);
00413 virtual void Append( void *data, int len );
00414 virtual void Append( IColumn *col, const int row );
00415 virtual void AppendNull( );
00416
00417 virtual int8 GetByte(const int row);
00418 virtual int16 GetInt16(const int row);
00419 virtual int32 GetInt32(const int row);
00420 virtual int64 GetInt64(const int row);
00421 virtual Decimal GetDecimal(const int row);
00422 virtual float32 GetFloat32(const int row);
00423 virtual float64 GetFloat64(const int row);
00424 virtual bool GetBit(const int row);
00425 virtual DateTime GetTimeStamp(const int row);
00426 virtual Date GetDate(const int row);
00427 virtual DateTime GetDateTime(const int row);
00428 virtual StringPtr GetChar(const int row);
00429 virtual StringPtr GetVarchar(const int row);
00430 virtual Variant GetVariant(const int row);
00431
00432 #if defined(DEBUG)
00433 virtual void CheckMem() const;
00434 virtual void ValidateMem() const;
00435 #endif
00436 };
00437
00438 class TimeStampColumn : public IColumn
00439 {
00440 protected:
00441 Vector<DateTime> m_data;
00442
00443 public:
00444 TimeStampColumn(const String& name);
00445 virtual ~TimeStampColumn();
00446
00447 virtual int Count() const;
00448 virtual int Type() const;
00449 virtual IColumn *Clone() const;
00450
00451 virtual void Append( int8 i );
00452 virtual void Append( int16 i );
00453 virtual void Append( int32 i );
00454 virtual void Append( int64 i );
00455 virtual void Append( Decimal i );
00456 virtual void Append( float32 i );
00457 virtual void Append( float64 i );
00458 virtual void Append( bool i );
00459 virtual void Append( DateTime i );
00460 virtual void Append( Date i );
00461 virtual void Append( const String& str );
00462 virtual void AppendParse( const char * data, const int len);
00463 virtual void Append( void *data, int len );
00464 virtual void Append( IColumn *col, const int row );
00465 virtual void AppendNull( );
00466
00467 virtual int8 GetByte(const int row);
00468 virtual int16 GetInt16(const int row);
00469 virtual int32 GetInt32(const int row);
00470 virtual int64 GetInt64(const int row);
00471 virtual Decimal GetDecimal(const int row);
00472 virtual float32 GetFloat32(const int row);
00473 virtual float64 GetFloat64(const int row);
00474 virtual bool GetBit(const int row);
00475 virtual DateTime GetTimeStamp(const int row);
00476 virtual Date GetDate(const int row);
00477 virtual DateTime GetDateTime(const int row);
00478 virtual StringPtr GetChar(const int row);
00479 virtual StringPtr GetVarchar(const int row);
00480 virtual Variant GetVariant(const int row);
00481
00482 #if defined(DEBUG)
00483 virtual void CheckMem() const;
00484 virtual void ValidateMem() const;
00485 #endif
00486 };
00487
00488 class DateColumn : public IColumn
00489 {
00490 protected:
00491 Vector<Date> m_data;
00492
00493 public:
00494 DateColumn(const String& name);
00495 virtual ~DateColumn();
00496
00497 virtual int Count() const;
00498 virtual int Type() const;
00499 virtual IColumn *Clone() const;
00500
00501 virtual void Append( int8 i );
00502 virtual void Append( int16 i );
00503 virtual void Append( int32 i );
00504 virtual void Append( int64 i );
00505 virtual void Append( Decimal i );
00506 virtual void Append( float32 i );
00507 virtual void Append( float64 i );
00508 virtual void Append( bool i );
00509 virtual void Append( DateTime i );
00510 virtual void Append( Date i );
00511 virtual void Append( const String& str );
00512 virtual void AppendParse( const char * data, const int len);
00513 virtual void Append( void *data, int len );
00514 virtual void Append( IColumn *col, const int row );
00515 virtual void AppendNull( );
00516
00517 virtual int8 GetByte(const int row);
00518 virtual int16 GetInt16(const int row);
00519 virtual int32 GetInt32(const int row);
00520 virtual int64 GetInt64(const int row);
00521 virtual Decimal GetDecimal(const int row);
00522 virtual float32 GetFloat32(const int row);
00523 virtual float64 GetFloat64(const int row);
00524 virtual bool GetBit(const int row);
00525 virtual DateTime GetTimeStamp(const int row);
00526 virtual Date GetDate(const int row);
00527 virtual DateTime GetDateTime(const int row);
00528 virtual StringPtr GetChar(const int row);
00529 virtual StringPtr GetVarchar(const int row);
00530 virtual Variant GetVariant(const int row);
00531
00532 #if defined(DEBUG)
00533 virtual void CheckMem() const;
00534 virtual void ValidateMem() const;
00535 #endif
00536 };
00537
00538 class DateTimeColumn : public IColumn
00539 {
00540 protected:
00541 Vector<DateTime> m_data;
00542
00543 public:
00544 DateTimeColumn(const String& name);
00545 virtual ~DateTimeColumn();
00546
00547 virtual int Count() const;
00548 virtual int Type() const;
00549 virtual IColumn *Clone() const;
00550
00551 virtual void Append( int8 i );
00552 virtual void Append( int16 i );
00553 virtual void Append( int32 i );
00554 virtual void Append( int64 i );
00555 virtual void Append( Decimal i );
00556 virtual void Append( float32 i );
00557 virtual void Append( float64 i );
00558 virtual void Append( bool i );
00559 virtual void Append( DateTime i );
00560 virtual void Append( Date i );
00561 virtual void Append( const String& str );
00562 virtual void AppendParse( const char * data, const int len);
00563 virtual void Append( void *data, int len );
00564 virtual void Append( IColumn *col, const int row );
00565 virtual void AppendNull( );
00566
00567 virtual int8 GetByte(const int row);
00568 virtual int16 GetInt16(const int row);
00569 virtual int32 GetInt32(const int row);
00570 virtual int64 GetInt64(const int row);
00571 virtual Decimal GetDecimal(const int row);
00572 virtual float32 GetFloat32(const int row);
00573 virtual float64 GetFloat64(const int row);
00574 virtual bool GetBit(const int row);
00575 virtual DateTime GetTimeStamp(const int row);
00576 virtual Date GetDate(const int row);
00577 virtual DateTime GetDateTime(const int row);
00578 virtual StringPtr GetChar(const int row);
00579 virtual StringPtr GetVarchar(const int row);
00580 virtual Variant GetVariant(const int row);
00581
00582 #if defined(DEBUG)
00583 virtual void CheckMem() const;
00584 virtual void ValidateMem() const;
00585 #endif
00586 };
00587
00588 struct chars255
00589 {
00590 char chars[255];
00591 };
00592
00593 inline void ValidateType(chars255& uri)
00594 {
00595 }
00596
00597 class CharColumn : public IColumn
00598 {
00599 protected:
00600 Vector<struct chars255> m_data;
00601
00602 public:
00603 CharColumn(const String& name, const int maxlen);
00604 virtual ~CharColumn();
00605
00606 virtual int Count() const;
00607 virtual int Type() const;
00608 virtual IColumn *Clone() const;
00609
00610 virtual void Append( int8 i );
00611 virtual void Append( int16 i );
00612 virtual void Append( int32 i );
00613 virtual void Append( int64 i );
00614 virtual void Append( Decimal i );
00615 virtual void Append( float32 i );
00616 virtual void Append( float64 i );
00617 virtual void Append( bool i );
00618 virtual void Append( DateTime i );
00619 virtual void Append( Date i );
00620 virtual void Append( const String& str );
00621 virtual void AppendParse( const char * data, const int len);
00622 virtual void Append( void *data, int len );
00623 virtual void Append( IColumn *col, const int row );
00624 virtual void AppendNull( );
00625
00626 virtual int8 GetByte(const int row);
00627 virtual int16 GetInt16(const int row);
00628 virtual int32 GetInt32(const int row);
00629 virtual int64 GetInt64(const int row);
00630 virtual Decimal GetDecimal(const int row);
00631 virtual float32 GetFloat32(const int row);
00632 virtual float64 GetFloat64(const int row);
00633 virtual bool GetBit(const int row);
00634 virtual DateTime GetTimeStamp(const int row);
00635 virtual Date GetDate(const int row);
00636 virtual DateTime GetDateTime(const int row);
00637 virtual StringPtr GetChar(const int row);
00638 virtual StringPtr GetVarchar(const int row);
00639 virtual Variant GetVariant(const int row);
00640
00641 #if defined(DEBUG)
00642 virtual void CheckMem() const;
00643 virtual void ValidateMem() const;
00644 #endif
00645 };
00646
00647 class VarCharColumn : public IColumn
00648 {
00649 protected:
00650 Vector<StringPtr> m_data;
00651
00652 public:
00653 VarCharColumn(const String& name, const int maxlen);
00654 virtual ~VarCharColumn();
00655
00656 virtual int Count() const;
00657 virtual int Type() const;
00658 virtual IColumn *Clone() const;
00659
00660 virtual void Append( int8 i );
00661 virtual void Append( int16 i );
00662 virtual void Append( int32 i );
00663 virtual void Append( int64 i );
00664 virtual void Append( Decimal i );
00665 virtual void Append( float32 i );
00666 virtual void Append( float64 i );
00667 virtual void Append( bool i );
00668 virtual void Append( DateTime i );
00669 virtual void Append( Date i );
00670 virtual void Append( const String& str );
00671 virtual void AppendParse( const char * data, const int len);
00672 virtual void Append( void *data, int len );
00673 virtual void Append( IColumn *col, const int row );
00674 virtual void AppendNull( );
00675
00676 virtual int8 GetByte(const int row);
00677 virtual int16 GetInt16(const int row);
00678 virtual int32 GetInt32(const int row);
00679 virtual int64 GetInt64(const int row);
00680 virtual Decimal GetDecimal(const int row);
00681 virtual float32 GetFloat32(const int row);
00682 virtual float64 GetFloat64(const int row);
00683 virtual bool GetBit(const int row);
00684 virtual DateTime GetTimeStamp(const int row);
00685 virtual Date GetDate(const int row);
00686 virtual DateTime GetDateTime(const int row);
00687 virtual StringPtr GetChar(const int row);
00688 virtual StringPtr GetVarchar(const int row);
00689 virtual Variant GetVariant(const int row);
00690
00691 #if defined(DEBUG)
00692 virtual void CheckMem() const;
00693 virtual void ValidateMem() const;
00694 #endif
00695 };
00696
00699 #endif