home *** CD-ROM | disk | FTP | other *** search
/ Chip 1997 October / Chip_1997-10_cd.bin / tema / sybase / powerj / hpp.z / WDATAVRF.HPP < prev    next >
C/C++ Source or Header  |  1996-06-10  |  21KB  |  786 lines

  1.  
  2. #ifndef _WDATAVRF_HPP_INCLUDED
  3. #define _WDATAVRF_HPP_INCLUDED
  4.  
  5. //------------------------------------------------------------------------
  6. //
  7. // WDataValueReference
  8. //
  9. // This class represents data values and is only of interest to
  10. // implementors of new data access models (i.e. subclasses of WDataSource).
  11. //
  12. //
  13. // How reference objects are created:
  14. //
  15. //     The WDVFactory class knows how to create objects of a given type.
  16. //     To create an object you thus call WDVFactory::Allocate, passing
  17. //     in the ID of the type you are interested in creating.  You can also
  18. //     optionally pass in a pointer to an existing WDataValueReference
  19. //     object, which will then be used to initialize the new object.
  20. //
  21. //     To create the new objects, WDVFactory stores prototype objects
  22. //     internally, and then calls the Clone method on the appropriate
  23. //     prototype object.
  24. //
  25. //------------------------------------------------------------------------
  26.  
  27. #ifndef _WOBJECT_HPP_INCLUDED
  28. #include "wobject.hpp"
  29. #endif
  30. #ifndef _WEVENT_HPP_INCLUDED
  31. #include "wevent.hpp"
  32. #endif
  33. #ifndef _WDATAOBJ_HPP_INCLUDED
  34. #include "wdataobj.hpp"
  35. #endif
  36. #ifndef _WVECTOR_HPP_INCLUDED
  37. #include "wvector.hpp"
  38. #endif
  39.  
  40. #define WDV_CONVERSION_METHODS \
  41.                                \
  42.         virtual WBool GetCHAR( WString & s, WDataValue *val ) const; \
  43.         virtual WBool SetCHAR( const WString & string, WDataValue *val ); \
  44.         virtual WBool GetSSHORT( SWORD & s, WDataValue *val ) const; \
  45.         virtual WBool SetSSHORT( SWORD s, WDataValue *val ); \
  46.         virtual WBool GetUSHORT( UWORD & u, WDataValue *val ) const;\
  47.         virtual WBool SetUSHORT( UWORD u, WDataValue *val );\
  48.         virtual WBool GetSLONG( SDWORD & s, WDataValue *val ) const;\
  49.         virtual WBool SetSLONG( SDWORD s, WDataValue *val );\
  50.         virtual WBool GetULONG( UDWORD & u, WDataValue *val ) const;\
  51.         virtual WBool SetULONG( UDWORD u, WDataValue *val );\
  52.         virtual WBool GetFLOAT( SFLOAT & s, WDataValue *val ) const;\
  53.         virtual WBool SetFLOAT( SFLOAT f, WDataValue *val );\
  54.         virtual WBool GetDOUBLE( SDOUBLE & d, WDataValue *val ) const;\
  55.         virtual WBool SetDOUBLE( SDOUBLE d, WDataValue *val );\
  56.         virtual WBool GetBIT( UCHAR & c, WDataValue *val ) const;\
  57.         virtual WBool SetBIT( UCHAR c, WDataValue *val );\
  58.         virtual WBool GetSTINYINT( SCHAR & c, WDataValue *val ) const;\
  59.         virtual WBool SetSTINYINT( SCHAR c, WDataValue *val );\
  60.         virtual WBool GetUTINYINT( UCHAR & c, WDataValue *val ) const;\
  61.         virtual WBool SetUTINYINT( UCHAR c, WDataValue *val );\
  62.         virtual WBool GetBINARY( WBuffer & b, WDataValue *val ) const;\
  63.         virtual WBool SetBINARY( const WBuffer & buf, WDataValue *val );\
  64.         virtual WBool GetBOOKMARK( BOOKMARK & m, WDataValue *val ) const;\
  65.         virtual WBool SetBOOKMARK( BOOKMARK mark, WDataValue *val );  \
  66.         virtual WBool CopyInto( const WDataValueReference & ref ); \
  67.         virtual WBool Clear();
  68.  
  69.  
  70. //
  71. // WDataValueReference -- Abstract class for reference-counted
  72. //                        values.
  73. //
  74.  
  75. class WCMCLASS WDataValueReference : public WReferenceObject {
  76.  
  77.     friend class WDVFactory;
  78.  
  79.     private:
  80.  
  81.         WDataValueReference( const WDataValueReference & tr );
  82.         WDataValueReference & operator=( const WDataValueReference & tr );
  83.  
  84.     protected:
  85.  
  86.         WDataValueReference();
  87.  
  88.     public:
  89.  
  90.         virtual ~WDataValueReference();
  91.  
  92.         virtual WLong Reference();
  93.         virtual WLong Unreference();
  94.         virtual WLong Reference( WDataValue *val );
  95.         virtual WLong Unreference( WDataValue *val );
  96.  
  97.         virtual WNativeDataType GetType() const = 0;
  98.         virtual WBool           SetType( WNativeDataType type,
  99.                                          WDataValue *val );
  100.  
  101.         virtual WDataValueReference *Clone( WDataValueReference *ref=NULL,
  102.                                             WDataValue *master=NULL ) const = 0;
  103.  
  104.         virtual WInt  GetSize() const = 0;
  105.         virtual WBool SetSize( WInt newSize );
  106.  
  107.         virtual WInt  GetLength() const;
  108.         virtual WBool SetLength( WInt newLength );
  109.  
  110.         virtual void *GetData() const = 0;
  111.         virtual WBool SetData( void *data, WBool copyOld=FALSE );
  112.  
  113.         virtual WBool Clear();
  114.  
  115.         virtual WBool AcquireDataResponsibility();
  116.  
  117.         virtual WBool DetachReferences( WDataValue *exceptFor );
  118.  
  119.         virtual int operator==( const WDataValueReference & other ) const; 
  120.         virtual int operator<( const WDataValueReference & other ) const; 
  121.         virtual int operator<=( const WDataValueReference & other ) const; 
  122.         virtual int operator!=( const WDataValueReference & other ) const; 
  123.         virtual int operator>( const WDataValueReference & other ) const; 
  124.         virtual int operator>=( const WDataValueReference & other ) const; 
  125.  
  126.         WColumnDataType GetColumnType() const { return _columnType; }
  127.         WBool           SetColumnType( WColumnDataType t ) { _columnType = t; return TRUE; }
  128.  
  129.         virtual WBool GetDATE( DATE_STRUCT & d, WDataValue *val ) const;
  130.         virtual WBool SetDATE( const DATE_STRUCT & d, WDataValue *val );
  131.  
  132.         virtual WBool GetTIME( TIME_STRUCT & t, WDataValue *val ) const;
  133.         virtual WBool SetTIME( const TIME_STRUCT & t, WDataValue *val );
  134.  
  135.         virtual WBool GetTIMESTAMP( TIMESTAMP_STRUCT & t, WDataValue *val ) const;
  136.         virtual WBool SetTIMESTAMP( const TIMESTAMP_STRUCT & t, WDataValue *val );
  137.  
  138.         // The following methods all have default implementations
  139.         // that return an error.  Override as appropriate.
  140.  
  141.         WDV_CONVERSION_METHODS
  142.  
  143.     protected:
  144.  
  145.         enum {
  146.             WDVSLong  = 0x01,
  147.             WDVULong  = 0x02,
  148.             WDVDouble = 0x04,
  149.             WDVChar   = 0x08
  150.         };
  151.  
  152.         WDataValueReference **GetRef( WDataValue *val ) const;
  153.  
  154.         wllist_header _refList;
  155.  
  156.         WColumnDataType _columnType;
  157. };
  158.  
  159. //
  160. // WDVFloatRef 
  161. //
  162.  
  163. class WCMCLASS WDVFloatRef : public WDataValueReference {
  164.  
  165.     friend class WDVFactory;
  166.  
  167.     private:
  168.  
  169.         WDVFloatRef( const WDVFloatRef & );
  170.         WDVFloatRef & operator=( const WDVFloatRef & );
  171.  
  172.     protected:
  173.  
  174.         WDVFloatRef();
  175.  
  176.     public:
  177.  
  178.         ~WDVFloatRef();
  179.  
  180.         virtual WDataValueReference *Clone( WDataValueReference *ref=NULL,
  181.                                             WDataValue *master=NULL ) const;
  182.  
  183.         virtual WNativeDataType GetType() const;
  184.  
  185.         virtual WInt  GetSize() const;
  186.  
  187.         virtual void *GetData() const;
  188.         virtual WBool SetData( void *newData, WBool copyOld=FALSE );
  189.  
  190.         WDV_CONVERSION_METHODS
  191.  
  192.     protected:
  193.  
  194.         WFloat  _float;
  195.         WFloat *_pFloat;
  196. };
  197.  
  198. //
  199. // WDVDoubleRef 
  200. //
  201.  
  202. class WCMCLASS WDVDoubleRef : public WDataValueReference {
  203.  
  204.     friend class WDVFactory;
  205.  
  206.     private:
  207.  
  208.         WDVDoubleRef( const WDVDoubleRef & );
  209.         WDVDoubleRef & operator=( const WDVDoubleRef & );
  210.  
  211.     protected:
  212.  
  213.         WDVDoubleRef();
  214.  
  215.     public:
  216.  
  217.         ~WDVDoubleRef();
  218.  
  219.         virtual WDataValueReference *Clone( WDataValueReference *ref=NULL,
  220.                                             WDataValue *master=NULL ) const;
  221.  
  222.         virtual WNativeDataType GetType() const;
  223.  
  224.         virtual WInt  GetSize() const;
  225.  
  226.         virtual void *GetData() const;
  227.         virtual WBool SetData( void *newData, WBool copyOld=FALSE );
  228.  
  229.         WDV_CONVERSION_METHODS
  230.  
  231.     protected:
  232.  
  233.         WDouble  _double;
  234.         WDouble *_pDouble;
  235. };
  236.  
  237. //
  238. // WDVCharRef 
  239. //
  240.  
  241. class WCMCLASS WDVCharRef : public WDataValueReference {
  242.  
  243.     friend class WDVFactory;
  244.  
  245.     private:
  246.  
  247.         WDVCharRef( const WDVCharRef & );
  248.         WDVCharRef & operator=( const WDVCharRef & );
  249.  
  250.     protected:
  251.  
  252.         WDVCharRef();
  253.  
  254.     public:
  255.  
  256.         ~WDVCharRef();
  257.  
  258.         virtual WDataValueReference *Clone( WDataValueReference *ref=NULL,
  259.                                             WDataValue *master=NULL ) const;
  260.  
  261.         virtual WNativeDataType GetType() const;
  262.  
  263.         virtual WInt  GetSize() const;
  264.         virtual WBool SetSize( WInt newSize );
  265.  
  266.         virtual WInt  GetLength() const;
  267.         virtual WBool SetLength( WInt newLength );
  268.  
  269.         virtual void *GetData() const;
  270.         virtual WBool SetData( void *newData, WBool copyOld=FALSE );
  271.  
  272.         virtual WBool AcquireDataResponsibility();
  273.  
  274.         virtual WBool GetDATE( DATE_STRUCT & d, WDataValue *val ) const;
  275.         virtual WBool SetDATE( const DATE_STRUCT & d, WDataValue *val );
  276.  
  277.         virtual WBool GetTIME( TIME_STRUCT & t, WDataValue *val ) const;
  278.         virtual WBool SetTIME( const TIME_STRUCT & t, WDataValue *val );
  279.  
  280.         virtual WBool GetTIMESTAMP( TIMESTAMP_STRUCT & t, WDataValue *val ) const;
  281.         virtual WBool SetTIMESTAMP( const TIMESTAMP_STRUCT & t, WDataValue *val );
  282.  
  283.         WDV_CONVERSION_METHODS
  284.  
  285.     protected:
  286.  
  287.         #define WDVCharBufSize 128
  288.  
  289.         WAnsiChar  *_pString;
  290.         WAnsiChar  *_string;
  291.         WULong      _size;     // including nullchar
  292.         WAnsiChar   _defaultBuffer[ WDVCharBufSize ];
  293. };
  294.  
  295. //
  296. // WDVBinaryRef
  297. //
  298.  
  299. class WCMCLASS WDVBinaryRef : public WDataValueReference {
  300.  
  301.     friend class WDVFactory;
  302.  
  303.     private:
  304.  
  305.         WDVBinaryRef( const WDVBinaryRef & );
  306.         WDVBinaryRef & operator=( const WDVBinaryRef & );
  307.  
  308.     protected:
  309.  
  310.         WDVBinaryRef();
  311.  
  312.     public:
  313.  
  314.         ~WDVBinaryRef();
  315.  
  316.         virtual WDataValueReference *Clone( WDataValueReference *ref=NULL,
  317.                                             WDataValue *master=NULL ) const;
  318.  
  319.         virtual WNativeDataType GetType() const;
  320.  
  321.         virtual WInt  GetSize() const;
  322.         virtual WBool SetSize( WInt newSize );
  323.  
  324.         virtual WInt  GetLength() const;
  325.         virtual WBool SetLength( WInt newLength );
  326.  
  327.         virtual void *GetData() const;
  328.         virtual WBool SetData( void *newData, WBool copyOld=FALSE );
  329.  
  330.         virtual WBool AcquireDataResponsibility();
  331.  
  332.         WDV_CONVERSION_METHODS
  333.  
  334.     protected:
  335.  
  336.         WByte   *_pData;
  337.         WByte   *_data;
  338.         WULong   _size; 
  339.         WULong   _length;
  340. };
  341.  
  342. //
  343. // WDVSLongRef 
  344. //
  345.  
  346. class WCMCLASS WDVSLongRef : public WDataValueReference {
  347.  
  348.     friend class WDVFactory;
  349.  
  350.     private:
  351.  
  352.         WDVSLongRef( const WDVSLongRef & );
  353.         WDVSLongRef & operator=( const WDVSLongRef & );
  354.  
  355.     protected:
  356.  
  357.         WDVSLongRef();
  358.  
  359.     public:
  360.  
  361.         ~WDVSLongRef();
  362.  
  363.         virtual WDataValueReference *Clone( WDataValueReference *ref=NULL,
  364.                                             WDataValue *master=NULL ) const;
  365.  
  366.         virtual WNativeDataType GetType() const;
  367.  
  368.         virtual WInt  GetSize() const;
  369.  
  370.         virtual void *GetData() const;
  371.         virtual WBool SetData( void *newData, WBool copyOld=FALSE );
  372.  
  373.         WDV_CONVERSION_METHODS
  374.  
  375.     protected:
  376.  
  377.         WLong  _long;
  378.         WLong *_pLong;
  379. };
  380.  
  381. //
  382. // WDVULongRef
  383. //
  384.  
  385. class WCMCLASS WDVULongRef : public WDataValueReference {
  386.  
  387.     friend class WDVFactory;
  388.  
  389.     private:
  390.  
  391.         WDVULongRef( const WDVULongRef & );
  392.         WDVULongRef & operator=( const WDVULongRef & );
  393.  
  394.     protected:
  395.  
  396.         WDVULongRef();
  397.  
  398.     public:
  399.  
  400.         ~WDVULongRef();
  401.  
  402.         virtual WDataValueReference *Clone( WDataValueReference *ref=NULL,
  403.                                             WDataValue *master=NULL ) const;
  404.  
  405.         virtual WNativeDataType GetType() const;
  406.  
  407.         virtual WInt  GetSize() const;
  408.  
  409.         virtual void *GetData() const;
  410.         virtual WBool SetData( void *newData, WBool copyOld=FALSE );
  411.  
  412.         WDV_CONVERSION_METHODS
  413.  
  414.     protected:
  415.  
  416.         WULong  _ulong;
  417.         WULong *_pULong;
  418. };
  419.  
  420. //
  421. // WDVSShortRef
  422. //
  423.  
  424. class WCMCLASS WDVSShortRef : public WDataValueReference {
  425.  
  426.     friend class WDVFactory;
  427.  
  428.     private:
  429.  
  430.         WDVSShortRef( const WDVSShortRef & );
  431.         WDVSShortRef & operator=( const WDVSShortRef & );
  432.  
  433.     protected:
  434.  
  435.         WDVSShortRef();
  436.  
  437.     public:
  438.  
  439.         ~WDVSShortRef();
  440.  
  441.         virtual WDataValueReference *Clone( WDataValueReference *ref=NULL,
  442.                                             WDataValue *master=NULL ) const;
  443.  
  444.         virtual WNativeDataType GetType() const;
  445.  
  446.         virtual WInt  GetSize() const;
  447.  
  448.         virtual void *GetData() const;
  449.         virtual WBool SetData( void *newData, WBool copyOld=FALSE );
  450.  
  451.         WDV_CONVERSION_METHODS
  452.  
  453.     protected:
  454.  
  455.         WShort  _short;
  456.         WShort *_pShort;
  457. };
  458.  
  459. //
  460. // WDVSTinyIntRef
  461. //
  462.  
  463. class WCMCLASS WDVSTinyIntRef : public WDataValueReference {
  464.  
  465.     friend class WDVFactory;
  466.  
  467.     private:
  468.  
  469.         WDVSTinyIntRef( const WDVSTinyIntRef & );
  470.         WDVSTinyIntRef & operator=( const WDVSTinyIntRef & );
  471.  
  472.     protected:
  473.  
  474.         WDVSTinyIntRef();
  475.  
  476.     public:
  477.  
  478.         ~WDVSTinyIntRef();
  479.  
  480.         virtual WDataValueReference *Clone( WDataValueReference *ref=NULL,
  481.                                             WDataValue *master=NULL ) const;
  482.  
  483.         virtual WNativeDataType GetType() const;
  484.  
  485.         virtual WInt  GetSize() const;
  486.  
  487.         virtual void *GetData() const;
  488.         virtual WBool SetData( void *newData, WBool copyOld=FALSE );
  489.  
  490.         WDV_CONVERSION_METHODS
  491.  
  492.     protected:
  493.  
  494.         signed char  _schar;
  495.         signed char *_pSChar;
  496. };
  497.  
  498. //
  499. // WDVUShortRef
  500. //
  501.  
  502. class WCMCLASS WDVUShortRef : public WDataValueReference {
  503.  
  504.     friend class WDVFactory;
  505.  
  506.     private:
  507.  
  508.         WDVUShortRef( const WDVUShortRef & );
  509.         WDVUShortRef & operator=( const WDVUShortRef & );
  510.  
  511.     protected:
  512.  
  513.         WDVUShortRef();
  514.  
  515.     public:
  516.  
  517.         ~WDVUShortRef();
  518.  
  519.         virtual WDataValueReference *Clone( WDataValueReference *ref=NULL,
  520.                                             WDataValue *master=NULL ) const;
  521.  
  522.         virtual WNativeDataType GetType() const;
  523.  
  524.         virtual WInt  GetSize() const;
  525.  
  526.         virtual void *GetData() const;
  527.         virtual WBool SetData( void *newData, WBool copyOld=FALSE );
  528.  
  529.         WDV_CONVERSION_METHODS
  530.  
  531.     protected:
  532.  
  533.         WUShort  _ushort;
  534.         WUShort *_pUShort;
  535. };
  536.  
  537. //
  538. // WDVUTinyIntRef
  539. //
  540.  
  541. class WCMCLASS WDVUTinyIntRef : public WDataValueReference {
  542.  
  543.     friend class WDVFactory;
  544.  
  545.     private:
  546.  
  547.         WDVUTinyIntRef( const WDVUTinyIntRef & );
  548.         WDVUTinyIntRef & operator=( const WDVUTinyIntRef & );
  549.  
  550.     protected:
  551.  
  552.         WDVUTinyIntRef();
  553.  
  554.     public:
  555.  
  556.         ~WDVUTinyIntRef();
  557.  
  558.         virtual WDataValueReference *Clone( WDataValueReference *ref=NULL,
  559.                                             WDataValue *master=NULL ) const;
  560.  
  561.         virtual WNativeDataType GetType() const;
  562.  
  563.         virtual WInt  GetSize() const;
  564.  
  565.         virtual void *GetData() const;
  566.         virtual WBool SetData( void *newData, WBool copyOld=FALSE );
  567.  
  568.         WDV_CONVERSION_METHODS
  569.  
  570.     protected:
  571.  
  572.         unsigned char  _uchar;
  573.         unsigned char *_pUChar;
  574. };
  575.  
  576. //
  577. // WDVBitRef
  578. //
  579.  
  580. class WCMCLASS WDVBitRef : public WDVUTinyIntRef {
  581.  
  582.     friend class WDVFactory;
  583.  
  584.     private:
  585.  
  586.         WDVBitRef( const WDVBitRef & );
  587.         WDVBitRef & operator=( const WDVBitRef & );
  588.  
  589.     protected:
  590.  
  591.         WDVBitRef();
  592.  
  593.     public:
  594.  
  595.         ~WDVBitRef();
  596.  
  597.         virtual WNativeDataType GetType() const;
  598. };
  599.  
  600. //
  601. // WDVDateRef
  602. //
  603.  
  604. class WCMCLASS WDVDateRef : public WDataValueReference {
  605.  
  606.     friend class WDVFactory;
  607.  
  608.     private:
  609.  
  610.         WDVDateRef( const WDVDateRef & );
  611.         WDVDateRef & operator=( const WDVDateRef & );
  612.  
  613.     protected:
  614.  
  615.         WDVDateRef();
  616.  
  617.     public:
  618.  
  619.         ~WDVDateRef();
  620.  
  621.         virtual WDataValueReference *Clone( WDataValueReference *ref=NULL,
  622.                                             WDataValue *master=NULL ) const;
  623.  
  624.         virtual WNativeDataType GetType() const;
  625.  
  626.         virtual WInt  GetSize() const;
  627.  
  628.         virtual void *GetData() const;
  629.         virtual WBool SetData( void *newData, WBool copyOld=FALSE );
  630.  
  631.         virtual WBool CopyInto( const WDataValueReference & ref );
  632.         virtual WBool Clear();
  633.  
  634.         virtual WBool GetCHAR( WString & s, WDataValue *val ) const; 
  635.         virtual WBool SetCHAR( const WString & string, WDataValue *val ); 
  636.  
  637.         virtual WBool GetDATE( DATE_STRUCT & d, WDataValue *val ) const;
  638.         virtual WBool SetDATE( const DATE_STRUCT & d, WDataValue *val );
  639.  
  640.         virtual WBool GetTIMESTAMP( TIMESTAMP_STRUCT & t, WDataValue *val ) const;
  641.         virtual WBool SetTIMESTAMP( const TIMESTAMP_STRUCT & t, WDataValue *val );
  642.  
  643.     protected:
  644.  
  645.         DATE_STRUCT  _date;
  646.         DATE_STRUCT *_pDate;
  647. };
  648.  
  649. //
  650. // WDVTimeRef
  651. //
  652.  
  653. class WCMCLASS WDVTimeRef : public WDataValueReference {
  654.  
  655.     friend class WDVFactory;
  656.  
  657.     private:
  658.  
  659.         WDVTimeRef( const WDVTimeRef & );
  660.         WDVTimeRef & operator=( const WDVTimeRef & );
  661.  
  662.     protected:
  663.  
  664.         WDVTimeRef();
  665.  
  666.     public:
  667.  
  668.         ~WDVTimeRef();
  669.  
  670.         virtual WDataValueReference *Clone( WDataValueReference *ref=NULL,
  671.                                             WDataValue *master=NULL ) const;
  672.  
  673.         virtual WNativeDataType GetType() const;
  674.  
  675.         virtual WInt  GetSize() const;
  676.  
  677.         virtual void *GetData() const;
  678.         virtual WBool SetData( void *newData, WBool copyOld=FALSE );
  679.  
  680.         virtual WBool CopyInto( const WDataValueReference & ref ); 
  681.         virtual WBool Clear();
  682.  
  683.         virtual WBool GetCHAR( WString & s, WDataValue *val ) const; 
  684.         virtual WBool SetCHAR( const WString & string, WDataValue *val ); 
  685.  
  686.         virtual WBool GetTIME( TIME_STRUCT & t, WDataValue *val ) const;
  687.         virtual WBool SetTIME( const TIME_STRUCT & t, WDataValue *val );
  688.  
  689.         virtual WBool GetTIMESTAMP( TIMESTAMP_STRUCT & t, WDataValue *val ) const;
  690.         virtual WBool SetTIMESTAMP( const TIMESTAMP_STRUCT & t, WDataValue *val );
  691.  
  692.     protected:
  693.  
  694.         TIME_STRUCT  _time;
  695.         TIME_STRUCT *_pTime;
  696. };
  697.  
  698. //
  699. // WDVTimeStampRef
  700. //
  701.  
  702. class WCMCLASS WDVTimeStampRef : public WDataValueReference {
  703.  
  704.     friend class WDVFactory;
  705.  
  706.     private:
  707.  
  708.         WDVTimeStampRef( const WDVTimeStampRef & );
  709.         WDVTimeStampRef & operator=( const WDVTimeStampRef & );
  710.  
  711.     protected:
  712.  
  713.         WDVTimeStampRef();
  714.  
  715.     public:
  716.  
  717.         ~WDVTimeStampRef();
  718.  
  719.         virtual WDataValueReference *Clone( WDataValueReference *ref=NULL,
  720.                                             WDataValue *master=NULL ) const;
  721.  
  722.         virtual WNativeDataType GetType() const;
  723.  
  724.         virtual WInt  GetSize() const;
  725.  
  726.         virtual void *GetData() const;
  727.         virtual WBool SetData( void *newData, WBool copyOld=FALSE );
  728.  
  729.         virtual WBool CopyInto( const WDataValueReference & ref ); 
  730.         virtual WBool Clear();
  731.  
  732.         virtual WBool GetCHAR( WString & s, WDataValue *val ) const; 
  733.         virtual WBool SetCHAR( const WString & string, WDataValue *val ); 
  734.  
  735.         virtual WBool GetDATE( DATE_STRUCT & d, WDataValue *val ) const;
  736.         virtual WBool SetDATE( const DATE_STRUCT & d, WDataValue *val );
  737.  
  738.         virtual WBool GetTIME( TIME_STRUCT & t, WDataValue *val ) const;
  739.         virtual WBool SetTIME( const TIME_STRUCT & t, WDataValue *val );
  740.  
  741.         virtual WBool GetTIMESTAMP( TIMESTAMP_STRUCT & t, WDataValue *val ) const;
  742.         virtual WBool SetTIMESTAMP( const TIMESTAMP_STRUCT & t, WDataValue *val );
  743.  
  744.     protected:
  745.  
  746.         TIMESTAMP_STRUCT  _timeStamp;
  747.         TIMESTAMP_STRUCT *_pTimeStamp;
  748. };
  749.  
  750. extern template WVector<WDataValueReference>;
  751.  
  752. //
  753. // WDVFactory
  754. //
  755.  
  756. class WCMCLASS WDVFactory : public WObject {
  757.  
  758.     protected:
  759.         WDVFactory();
  760.  
  761.         ~WDVFactory();
  762.  
  763.         void Init();
  764.  
  765.     public:
  766.         static WDVFactory *GetFactoryObject();
  767.  
  768.         static WDataValueReference *Allocate( WNativeDataType type,
  769.                                               WDataValueReference *ref=NULL,
  770.                                               WDataValue *master=NULL );
  771.         static WDataValueReference *Allocate( const WChar *name,
  772.                                               WDataValueReference *ref=NULL,
  773.                                               WDataValue *master=NULL );
  774.  
  775.         static WBool AddPrototype( WDataValueReference *prototype );
  776.  
  777.     protected:
  778.         WVector<WDataValueReference> _prototypes;
  779.         WBool                        _init;
  780.  
  781.     private:
  782.         static WDVFactory *_theObject;
  783. };
  784.  
  785. #endif
  786.