diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 4f2f64cd71..84ca8b960e 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -8,6 +8,14 @@ 2008-12-31 13:59 UTC+0100 Foo Bar */ +2008-05-19 09:16 UTC+0100 Viktor Szakats (harbour.01 syenar hu) + + contrib/xhb/usrrdd.ch + + contrib/xhb/math.ch + + contrib/xhb/classex.ch + * contrib/xhb/Makefile + * contrib/xhb/common.mak + + Some more xhb compatibility. + 2008-05-19 09:01 UTC+0100 Viktor Szakats (harbour.01 syenar hu) * source/rtl/tget.prg % Minor code optimization. @@ -66,7 +74,7 @@ DEBUG. This call pops up a visual dialog box on screen and halts execution until this is confirmed by the user. Not very desirable inside RDD code in real life - environments. Proper error code were and are still + environments. Proper error codes were and are still returned in these cases. * contrib/rddads/adsfunc.c diff --git a/harbour/contrib/xhb/Makefile b/harbour/contrib/xhb/Makefile index 689ada47f9..5333232d7a 100644 --- a/harbour/contrib/xhb/Makefile +++ b/harbour/contrib/xhb/Makefile @@ -29,13 +29,16 @@ PRG_SOURCES=\ xhbcomp.prg \ PRG_HEADERS=\ - xhb.ch \ + classex.ch \ + cstruct.ch \ hbcompat.ch \ + hbctypes.ch \ hblog.ch \ hblogdef.ch \ - cstruct.ch \ - hbctypes.ch \ + math.ch \ + usrrdd.ch \ wintypes.ch \ + xhb.ch \ xhbextrn.ch \ LIBNAME=xhb diff --git a/harbour/contrib/xhb/classex.ch b/harbour/contrib/xhb/classex.ch new file mode 100644 index 0000000000..ad9a02b822 --- /dev/null +++ b/harbour/contrib/xhb/classex.ch @@ -0,0 +1,185 @@ +/* + * $Id$ + */ + +/* + * xHarbour Project source code: + * + * ClassEx.ch Class Extension + * + * Copyright 2002 Francesco Saverio Giudice [info@fsgiudice.com] + * www - http://www.xharbour.org + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, + * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). + * + * As a special exception, the Harbour Project gives permission for + * additional uses of the text contained in its release of Harbour. + * + * The exception is that, if you link the Harbour libraries with other + * files to produce an executable, this does not by itself cause the + * resulting executable to be covered by the GNU General Public License. + * Your use of that executable is in no way restricted on account of + * linking the Harbour library code into it. + * + * This exception does not however invalidate any other reasons why + * the executable file might be covered by the GNU General Public License. + * + * This exception applies only to the code released by the Harbour + * Project under the name Harbour. If you copy code from other + * Harbour Project or Free Software Foundation releases into a copy of + * Harbour, as the General Public License permits, the exception does + * not apply to the code that you add in this way. To avoid misleading + * anyone as to the status of such modified files, you must delete + * this exception notice from them. + * + * If you write modifications of your own for Harbour, it is your choice + * whether to permit this exception to apply to your modifications. + * If you do not wish that, delete this exception notice. + * + */ + +/* Class Extension + + Property is a better way to write DATA ACCESS in classes + The command is: + + PROPERTY varname [AS type] [INIT value] [INDEX pos] + [READ mtread] [WRITE mtwrite] + + where + - varname = the visible DATA name. *** INTERNAL DATA is stored with F prefix *** + so when you have to access this data you have to refer with F prefix + example: + .... + PROPERTY Title READ GetTitle + .... + METHOD GetTitle INLINE ::FTitle + .... + internal data is stored with HIDDEN scope so you cannot access it + outside of declaration file + + - type = the type of data - see DATA help for explanation + + - value = initial value of var + + - pos = index is a powerfull access method. You can use same method to get/set + data, but trough index you can access to correct data. + example: + .... + PROPERTY Top AS NUMERIC INIT 10 INDEX 1 READ GetCoord WRITE SetCoord + PROPERTY Left AS NUMERIC INIT 0 INDEX 2 READ GetCoord WRITE SetCoord + .... + METHOD SetCoord( i, x ) // Look at index parameter + DO CASE + CASE i == 1 // Top + ::FTop := x + CASE i == 2 // Left + ::FLeft := x + ... + ENDCASE + ::Changed := .T. + RETURN Self + + METHOD GetCoord( i ) + LOCAL nRet + DO CASE + CASE i == 1 // Top + nRet := ::FTop + CASE i == 2 // Left + nRet := ::FLeft + ... + ENDCASE + RETURN nRet + + - mtread = the method to read DATA. It can be a method name or directly the + internal data name. + example: + .... + PROPERTY Title READ FTitle WRITE SetTitle + .... + METHOD SetTitle(x) INLINE ::FTitle := x, ::Changed := .T. + .... + + - mtwrite = the method to write DATA. It can be a method name or directly the + internal data name. + example above. + + */ + +#xcommand PROPERTY [TYPE ] [AS ] [INDEX ] READ WRITE [DEFAULT ]; + [] ; + => ; + DATA T_ AS STRING INIT <(type)> PROTECTED ;; + #xtranslate __FNAME() => F ;; + DATA __FNAME() [AS ] PROTECTED [INIT ] ;; + ACCESS INLINE ::( [ ] ) ;; + ASSIGN (v) INLINE ::( [ , ] v) + +#xcommand PROPERTY [AS ] [INDEX ] READ WRITE [DEFAULT ]; + [] ; + => ; + #xtranslate __FNAME() => F ;; + DATA __FNAME() [AS ] PROTECTED [INIT ] ;; + ACCESS INLINE ::( [ ] ) ;; + ASSIGN (v) INLINE ::( [ , ] v) + + +#xcommand PROPERTY [TYPE ] [AS ] [INDEX ] WRITE [DEFAULT ]; + [] ; + => ; + DATA T_ AS STRING INIT <(type)> PROTECTED ;; + #xtranslate __FNAME() => F ;; + DATA __FNAME() [AS ] PROTECTED [INIT ] ;; + ASSIGN (v) INLINE ::( [ , ] v) + +#xcommand PROPERTY [AS ] [INDEX ] WRITE [DEFAULT ]; + [] ; + => ; + #xtranslate __FNAME() => F ;; + DATA __FNAME() [AS ] PROTECTED [INIT ] ;; + ASSIGN (v) INLINE ::( [ , ] v) + +#xcommand PROPERTY [TYPE ] [AS ] [INDEX ] READ [DEFAULT ]; + [] ; + => ; + DATA T_ AS STRING INIT <(type)> PROTECTED ;; + #xtranslate __FNAME() => F ;; + DATA __FNAME() [AS ] PROTECTED [INIT ] ;; + ACCESS INLINE ::( [ ] ) + +#xcommand PROPERTY [AS ] [INDEX ] READ [DEFAULT ]; + [] ; + => ; + #xtranslate __FNAME() => F ;; + DATA __FNAME() [AS ] PROTECTED [INIT ] ;; + ACCESS INLINE ::( [ ] ) + + +#xcommand PROPERTY [TYPE ] [AS ] [DEFAULT ]; + [] ; + => ; + DATA T_ AS STRING INIT <(type)> PROTECTED ;; + #xtranslate __FNAME() => F ;; + DATA __FNAME() [AS ] EXPORTED [INIT ] + +#xcommand PROPERTY [AS ] [DEFAULT ]; + [] ; + => ; + #xtranslate __FNAME() => F ;; + DATA __FNAME() [AS ] EXPORTED [INIT ] + +#xtranslate __FNAME() => F + diff --git a/harbour/contrib/xhb/common.mak b/harbour/contrib/xhb/common.mak index 2209ffda04..4407e26cf7 100644 --- a/harbour/contrib/xhb/common.mak +++ b/harbour/contrib/xhb/common.mak @@ -11,13 +11,16 @@ C_HEADERS = \ hbcomprs.h \ PRG_HEADERS = \ - xhb.ch \ + classex.ch \ + cstruct.ch \ hbcompat.ch \ + hbctypes.ch \ hblog.ch \ hblogdef.ch \ - cstruct.ch \ - hbctypes.ch \ + math.ch \ + usrrdd.ch \ wintypes.ch \ + xhb.ch \ xhbextrn.ch \ LIB_OBJS = \ diff --git a/harbour/contrib/xhb/math.ch b/harbour/contrib/xhb/math.ch new file mode 100644 index 0000000000..47056fc65b --- /dev/null +++ b/harbour/contrib/xhb/math.ch @@ -0,0 +1,5 @@ +/* + * $Id$ + */ + +#include "hbmath.ch" diff --git a/harbour/contrib/xhb/usrrdd.ch b/harbour/contrib/xhb/usrrdd.ch new file mode 100644 index 0000000000..6c896af695 --- /dev/null +++ b/harbour/contrib/xhb/usrrdd.ch @@ -0,0 +1,5 @@ +/* + * $Id$ + */ + +#include "hbusrrdd.ch"