home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 10 / ioProg_10.iso / soft / optima / hpp.z / DTTYPED.HPP < prev    next >
Encoding:
C/C++ Source or Header  |  1996-03-27  |  8.9 KB  |  285 lines

  1. #ifndef _DTTYPED_HPP
  2. #define _DTTYPED_HPP
  3.  
  4. #include <stddef.h>
  5. #include "dttype.hpp"
  6.  
  7. #define TYPE_ALIAS( _base, _alias )     \
  8. typedef DT ## _base DT ## _alias;
  9.  
  10. /*************
  11.  *** WBool ***
  12.  *************/
  13.  
  14. typedef DTBoolType DTType_WBool;
  15. typedef DTBoolType DTType_const_WBool;
  16.  
  17. /********************
  18.  *** String Types ***
  19.  ********************/
  20.  
  21. class METADEF DTType_Impl_String : public DTType {
  22.     public:
  23.         DTType_Impl_String( const MMType * imp );
  24.  
  25.         virtual WBool               Textify( WString &, DT_Textify ) const;
  26.         virtual WBool               DeTextify( const WString &, DT_Textify );
  27.  
  28.         virtual WBool               operator==( const DTType & o );
  29.  
  30.         virtual WBool               Set( const WChar * val );
  31.         virtual const WString &     Get() const;
  32.  
  33.         static DTType *             MakeDTWString( const MMType * );
  34.  
  35.     protected:
  36.         WString         _value;
  37. };
  38.  
  39. class METADEF DTType_WFilePath : public DTType_Impl_String {
  40.     public:
  41.         DTType_WFilePath( const MMType * imp );
  42.  
  43.         virtual WBool               Browse( WWindow * parent, DTWObject * obj );
  44.         virtual WBool               Textify( WString &, DT_Textify ) const;
  45.         virtual WBool               DeTextify( const WString &, DT_Textify );
  46.  
  47.         static DTType *             MakeDTWFilePath( const MMType * );
  48. };
  49.  
  50. class METADEF DTType_Anything : public DTType_Impl_String {
  51.     public:
  52.         DTType_Anything( const MMType * imp );
  53.  
  54.         virtual WBool               Textify( WString &, DT_Textify ) const;
  55.         static DTType *             MakeDTWObject__ptr_( const MMType * );
  56. };
  57.  
  58. TYPE_ALIAS( Type_Impl_String, Type_WString );
  59. TYPE_ALIAS( Type_Impl_String, Type_const_WString__ref_ );
  60. TYPE_ALIAS( Type_Impl_String, Type_const_WChar__ptr_ );
  61.  
  62. TYPE_ALIAS( Type_Anything, Type_WObject__ptr_ );
  63.  
  64. /******************
  65.  *** Color Type ***
  66.  ******************/
  67.  
  68. class METADEF DTType_WColor : public DTType {
  69.     public:
  70.         DTType_WColor( const MMType * imp );
  71.  
  72.         virtual WBool               Textify( WString &, DT_Textify ) const;
  73.         virtual WBool               DeTextify( const WString &, DT_Textify );
  74.  
  75.         virtual WBool               operator==( const DTType & o );
  76.  
  77.         virtual WBool               Set( const WColor & val );
  78.         virtual const WColor &      Get() const;
  79.  
  80.         virtual WBool               Browse( WWindow * parent, DTWObject * obj );
  81.  
  82.         virtual WUInt               GetNumValues();
  83.         virtual WString             GetValue( WUInt i );
  84.  
  85.         static DTType *             MakeDTWColor( const MMType * );
  86.  
  87.     private:
  88.         WColor          _c_value;
  89. };
  90.  
  91.  
  92. TYPE_ALIAS( Type_WColor, Type_const_WColor__ref_ );
  93.  
  94. /******************
  95.  *** WFont Type ***
  96.  ******************/
  97.  
  98. class METADEF DTType_WFont : public DTType {
  99.     public:
  100.         DTType_WFont( const MMType * imp );
  101.  
  102.         virtual WBool               Textify( WString &, DT_Textify ) const;
  103.         virtual WBool               DeTextify( const WString &, DT_Textify );
  104.  
  105.         virtual WBool               operator==( const DTType & o );
  106.  
  107.         virtual WBool               Set( const WFont & val );
  108.         virtual const WFont &       Get() const;
  109.  
  110.         virtual WBool               Browse( WWindow * parent, DTWObject * obj );
  111.  
  112.         static DTType *             MakeDTWFont( const MMType * );
  113.     private:
  114.         WFont           _value;
  115. };
  116.  
  117. TYPE_ALIAS( Type_WFont, Type_const_WFont__ref_ );
  118.  
  119. /******************
  120.  *** WRect Type ***
  121.  ******************/
  122.  
  123. class METADEF DTType_WRect : public DTType {
  124.     public:
  125.         DTType_WRect( const MMType * imp );
  126.  
  127.         virtual WBool               Textify( WString &, DT_Textify ) const;
  128.         virtual WBool               DeTextify( const WString &, DT_Textify );
  129.  
  130.         virtual WBool               operator==( const DTType & o );
  131.  
  132.         virtual WBool               Set( const WRect & val );
  133.         virtual const WRect &       Get() const;
  134.  
  135.         static DTType *             MakeDTWRect( const MMType * );
  136.  
  137.     private:
  138.         WRect           _value;
  139. };
  140.  
  141. TYPE_ALIAS( Type_WRect, Type_const_WRect__ref_ );
  142.  
  143. /*******************
  144.  *** WPoint Type ***
  145.  *******************/
  146.  
  147. class METADEF DTType_WPoint : public DTType {
  148.     public:
  149.         DTType_WPoint( const MMType * imp );
  150.  
  151.         virtual WBool               Textify( WString &, DT_Textify ) const;
  152.         virtual WBool               DeTextify( const WString &, DT_Textify );
  153.  
  154.         virtual WBool               operator==( const DTType & o );
  155.  
  156.         virtual WBool               Set( const WPoint & val );
  157.         virtual const WPoint &      Get() const;
  158.  
  159.         static DTType *             MakeDTWPoint( const MMType * );
  160.  
  161.     private:
  162.         WPoint          _value;
  163. };
  164.  
  165. TYPE_ALIAS( Type_WPoint, Type_const_WPoint__ref_ );
  166.  
  167. /*******************
  168.  *** WSize Type ***
  169.  *******************/
  170.  
  171. class METADEF DTType_WSize : public DTType {
  172.     public:
  173.         DTType_WSize( const MMType * imp );
  174.  
  175.         virtual WBool               Textify( WString &, DT_Textify ) const;
  176.         virtual WBool               DeTextify( const WString &, DT_Textify );
  177.  
  178.         virtual WBool               operator==( const DTType & o );
  179.  
  180.         virtual WBool               Set( const WSize & val );
  181.         virtual const WSize &       Get() const;
  182.  
  183.         static DTType *             MakeDTWSize( const MMType * );
  184.  
  185.     private:
  186.         WSize           _value;
  187. };
  188.  
  189.  
  190. /*******************
  191.  *** WRange Type ***
  192.  *******************/
  193.  
  194. class METADEF DTType_WRange : public DTType {
  195.     public:
  196.         DTType_WRange( const MMType * imp );
  197.  
  198.         virtual WBool               Textify( WString &, DT_Textify ) const;
  199.         virtual WBool               DeTextify( const WString &, DT_Textify );
  200.  
  201.         virtual WBool               operator==( const DTType & o );
  202.  
  203.         virtual WBool               Set( const WRange & val );
  204.         virtual const WRange &      Get() const;
  205.  
  206.         static DTType *             MakeDTWRange( const MMType * );
  207.  
  208.     private:
  209.         WRange          _value;
  210. };
  211.  
  212. TYPE_ALIAS( Type_WRange, Type_const_WRange__ref_ );
  213.  
  214. /**********************
  215.  *** Integral Types ***
  216.  **********************/
  217.  
  218. class METADEF DTType_Impl_Integral : public DTType {
  219.     public:
  220.         DTType_Impl_Integral( const MMType * imp,
  221.                             WBool sign, size_t bytes );
  222.  
  223.         virtual WBool       Textify( WString &, DT_Textify ) const;
  224.         virtual WBool       DeTextify( const WString &, DT_Textify );
  225.  
  226.         virtual WBool       operator==( const DTType & o );
  227.  
  228.         virtual WBool       Set( long val );
  229.         virtual WLong       GetVal() const;
  230.  
  231.     private:
  232.         WBool           _sign;
  233.         size_t          _bytes;
  234.         WLong           _value;
  235. };
  236.  
  237. /*
  238.  * I know, this is wretched, isn't it?  I hope to use templates to clean it
  239.  * up.
  240.  */
  241.  
  242. #pragma warning 355 9   // unsigned or pointer expression is never < 0
  243.  
  244. #define SIGNED( __type ) ((__type)(~0) < (__type)(0))
  245.  
  246. #define MAKE_INTEGRAL( __type, __name )                                         \
  247. class METADEF DTType_ ## __name : public DTType_Impl_Integral {                         \
  248.     public:                                                                     \
  249.         DTType_ ## __name( const MMType * imp )                                 \
  250.             : DTType_Impl_Integral( imp, SIGNED( __type ), sizeof( __type ) ){} \
  251.                                                                                 \
  252.         virtual __type Get() const {                                            \
  253.             return (__type)DTType_Impl_Integral::GetVal();                      \
  254.         }                                                                       \
  255.                                                                                 \
  256.         static DTType *     MakeDT ## __name( const MMType * tp ) {             \
  257.             return new DTType_ ## __name( tp );                                 \
  258.         }                                                                       \
  259. }
  260.  
  261. MAKE_INTEGRAL( WInt, WInt );
  262. MAKE_INTEGRAL( WUInt, WUInt );
  263. MAKE_INTEGRAL( WShort, WShort );
  264. MAKE_INTEGRAL( WUShort, WUShort );
  265. MAKE_INTEGRAL( WLong, WLong );
  266. MAKE_INTEGRAL( WULong, WULong );
  267. MAKE_INTEGRAL( WChar, WChar );
  268. MAKE_INTEGRAL( WUChar, WUChar );
  269.  
  270. TYPE_ALIAS( Type_WUShort, Type_const_WUShort );
  271. TYPE_ALIAS( Type_WULong, Type_WButtonState );
  272.  
  273. MAKE_INTEGRAL( int, signed_int );
  274. MAKE_INTEGRAL( unsigned int, unsigned_int );
  275. MAKE_INTEGRAL( short, signed_short );
  276. MAKE_INTEGRAL( unsigned short, unsigned_short );
  277. MAKE_INTEGRAL( long, signed_long );
  278. MAKE_INTEGRAL( unsigned long, unsigned_long );
  279. MAKE_INTEGRAL( char, char );
  280. MAKE_INTEGRAL( unsigned char, unsigned_char );
  281.  
  282. #pragma warning 355 1   // unsigned or pointer expression is never < 0
  283.  
  284. #endif // _DTTYPED_HPP
  285.