home *** CD-ROM | disk | FTP | other *** search
/ POINT Software Programming / PPROG1.ISO / clipper / fastlib / objects.ch < prev    next >
Text File  |  1993-09-01  |  3KB  |  79 lines

  1. // Objects.ch ver 2.0 d                 for size and speed!
  2. // (C) Antonio Linares, 1993
  3.  
  4. // Antonio Linares
  5. // Avd. R. Soriano 68, 1-7
  6. // 29600 Marbella - SPAIN
  7.  
  8. //----------------------------------------------------------------------------//
  9.  
  10. #ifndef _OBJECTS_CH
  11. #define _OBJECTS_CH
  12.  
  13. #xcommand DEFAULT <uVar1> := <uVal1> ;
  14.                [, <uVarN> := <uValN> ] => ;
  15.                   <uVar1> := If( <uVar1> == nil, <uVal1>, <uVar1> ) ;;
  16.                 [ <uVarN> := If( <uVarN> == nil, <uValN>, <uVarN> ); ]
  17.  
  18. #xcommand CLASS <ClassName> ;
  19.              [ <from: INHERIT FROM, FROM, OF> <Super> ] ;
  20.           => ;
  21.           [ static _nSuper := <(Super)>; ] ;
  22.           function <ClassName>() ;;
  23.              static nClassHandle ;;
  24.                 if nClassHandle == nil ;;
  25.                    ClsNew( <"ClassName">, [ _nSuper := <Super>():ClassH ] ) ;;
  26.  
  27. #xcommand DATA <Data1> [,<DataN>] => ;
  28.             ClsAddData( <"Data1"> ) [; ClsAddData( <"DataN"> ) ]
  29.  
  30. #xcommand VAR <Data1> [,<DataN>] => ;
  31.             ClsAddData( <"Data1"> ) [; ClsAddData( <"DataN"> ) ]
  32.  
  33. #xcommand METHOD <MethodName>( [<uParms,...>] ) CONSTRUCTOR => ;
  34.             ClsAddMethod( <"MethodName">, ;
  35.             { | Self [, <uParms> ] | <MethodName>( Self [, <uParms> ] ), Self } )
  36.  
  37. #xcommand METHOD <MethodName>( [<uParms,...>] ) => ;
  38.             ClsAddMethod( <"MethodName">, ;
  39.             { | Self [, <uParms> ] | <MethodName>( Self [, <uParms> ] ) } )
  40.  
  41. #xcommand METHOD <MethodName>( [<uParms,...>] ) VIRTUAL => ;
  42.             ClsAddMethod( <"MethodName">, { || nil } )
  43.  
  44. #xcommand METHOD <MethodName>( [<uParms,...>] ) SETGET => ;
  45.             ClsAddMethod( <"MethodName">,;
  46.                 { | Self [,<uParms>] | <MethodName>( Self [,<uParms>] ) } ) ;;
  47.             ClsAddMethod( "_" + <"MethodName">,;
  48.                 { | Self [,<uParms>] | <MethodName>( Self [,<uParms>] ) } )
  49.  
  50. #xcommand METHOD <MethodName>( [<uParms,...>] ) ;
  51.           <inline: BLOCK, INLINE> <bCodeBlock> => ;
  52.           ClsAddMethod( <"MethodName">, <bCodeBlock> )
  53.  
  54. #xcommand ENDCLASS => ;
  55.                 nClassHandle = nClsMake() ;;
  56.              end ;;
  57.           return __ClassIns( nClassHandle )
  58.  
  59. #xtranslate :: => Self:
  60.  
  61. //------ METHODS Sintax -----------
  62.  
  63. // C++ style
  64. #xtranslate METHOD <ClassName>::<MethodName>( [<uParms,...>] ) => ;
  65.          static function <MethodName>( Self [, <uParms>] ) // CLASS <ClassName>
  66.  
  67. // VO style
  68. #xtranslate METHOD <MethodName>( [<uParms,...>] ) CLASS <ClassName> => ;
  69.          static function <MethodName>( Self [, <uParms>] ) // CLASS <ClassName>
  70.  
  71. //---------------------------------
  72.  
  73. #xtranslate Super:<Method>( [<uParms,...>] ) => ;
  74.             Super( _nSuper, Self ):<Method>( [<uParms>] )
  75.  
  76. #endif
  77.  
  78. //----------------------------------------------------------------------------//
  79.