home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / harbb30g.zip / INCLUDE / classes.ch < prev    next >
Text File  |  1999-09-15  |  3KB  |  83 lines

  1. /*
  2.  * $Id: classes.ch,v 1.16 1999/09/15 14:03:36 vszel Exp $
  3.  */
  4.  
  5. /*
  6.  * Harbour Project source code:
  7.  * Header file for Class commands
  8.  *
  9.  * Copyright 1999 Antonio Linares <alinares@fivetech.com>
  10.  * www - http://www.harbour-project.org
  11.  *
  12.  * This program is free software; you can redistribute it and/or modify
  13.  * it under the terms of the GNU General Public License as published by
  14.  * the Free Software Foundation; either version 2 of the License, or
  15.  * (at your option) any later version, with one exception:
  16.  *
  17.  * The exception is that if you link the Harbour Runtime Library (HRL)
  18.  * and/or the Harbour Virtual Machine (HVM) with other files to produce
  19.  * an executable, this does not by itself cause the resulting executable
  20.  * to be covered by the GNU General Public License. Your use of that
  21.  * executable is in no way restricted on account of linking the HRL
  22.  * and/or HVM code into it.
  23.  *
  24.  * This program is distributed in the hope that it will be useful,
  25.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  26.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  27.  * GNU General Public License for more details.
  28.  *
  29.  * You should have received a copy of the GNU General Public License
  30.  * along with this program; if not, write to the Free Software
  31.  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA (or visit
  32.  * their web site at http://www.gnu.org/).
  33.  *
  34.  */
  35.  
  36. #ifndef _CLASSES_CH
  37. #define _CLASSES_CH
  38.  
  39. #xcommand CLASS <ClassName> [ <frm: FROM, INHERIT> <SuperClass> ] => ;
  40.    function <ClassName>() ;;
  41.       static oClass ;;
  42.       if oClass == nil ;;
  43.          oClass = TClass():New( <(ClassName)> [,<(SuperClass)>] ) ;;
  44.      #define _CLASS_NAME_ <ClassName> ;;
  45.      #translate CLSMETH <ClassName> <MethodName>() => @<ClassName>_<MethodName>() ;
  46.      [ ; #translate Super : => ::<SuperClass>: ] ;
  47.      [ ; extern <SuperClass> ]
  48.  
  49. #xcommand DATA <DataName1> [,<DataNameN>] => ;
  50.    oClass:AddData( <(DataName1)> ) [; oClass:AddData( <(DataNameN)> ) ]
  51.  
  52. #xcommand CLASSDATA <DataName1> [,<DataNameN>] => ;
  53.    oClass:AddClassData( <(DataName1)> ) [; oClass:AddClassData( <(DataNameN)> ) ]
  54.  
  55. #xcommand METHOD <MethodName>( [<params,...>] ) [ CONSTRUCTOR ] => ;
  56.    oClass:AddMethod( <(MethodName)>, CLSMETH _CLASS_NAME_ <MethodName>() )
  57.  
  58. #xcommand METHOD <MethodName>( [<params,...>] ) INLINE <Code,...> => ;
  59.    oClass:AddInline( <(MethodName)>, {|Self [,<params>] | <Code> } )
  60.  
  61. #xcommand METHOD <MethodName>( [<params,...>] ) VIRTUAL => ;
  62.    oClass:AddVirtual( <(MethodName)> )
  63.  
  64. #xcommand METHOD <MethodName>( [<params,...>] ) SETGET => ;
  65.    oClass:AddMethod( <(MethodName)>, CLSMETH _CLASS_NAME_ <MethodName>() ) ;;
  66.    oClass:AddMethod( "_" + <(MethodName)>, CLSMETH _CLASS_NAME_ <MethodName>() )
  67.  
  68. #xcommand MESSAGE <MessageName> METHOD <MethodName>( [<params,...>] ) => ;
  69.    oClass:AddMethod( <(MessageName)>, CLSMETH _CLASS_NAME_ <MethodName>() )
  70.  
  71. #xcommand MESSAGE <MessageName>() METHOD <MethodName>( [<params,...>] ) => ;
  72.    oClass:AddMethod( <(MessageName)>, CLSMETH _CLASS_NAME_ <MethodName>() )
  73.  
  74. #xcommand ENDCLASS => oClass:Create() ;;
  75.                       endif ;;
  76.                       return oClass:Instance()
  77.  
  78. #xcommand METHOD <MethodName>( [<params,...>] ) CLASS <ClassName> => ;
  79.           static function <ClassName>_<MethodName>( [<params>] ) ;;
  80.           local Self := QSelf()
  81.  
  82. #endif /* _CLASSES_CH */
  83.