*** empty log message ***
This commit is contained in:
@@ -1,178 +1,20 @@
|
||||
19991006-01:10 EDT David G. Holm <dholm@jsd-llc.com>
|
||||
19991006-07:41 GMT+1 Antonio Linares <alinares@fivetech.com>
|
||||
* source/rtl/classes.c
|
||||
+ Added support for CLASSDATAs INIT clause.
|
||||
* source/rtl/tclass.prg
|
||||
+ Added support for CLASSDATAs INIT clause.
|
||||
* include/hboo.ch
|
||||
+ new defines added for CLASSDATAS.
|
||||
|
||||
* source/rtl/dates.c
|
||||
% SECONDS() now uses ftime() and localtime() for all platforms.
|
||||
|
||||
* source/rtl/environ.c
|
||||
+ Added HB_VERSION() changes supplied by Jose Lalin with
|
||||
corrections for the compiler version and revision for
|
||||
Borland C 3.1 and 5.x, Cygnus GCC with Cygwin,
|
||||
Cygnus GCC with Mingw32, and Delorie GCC.
|
||||
|
||||
* source/rtl/set.c
|
||||
+ Added HB_DEFPATH() and HB___DEFPATH() supplied by Jose Lalin.
|
||||
|
||||
* include/extend.h
|
||||
* source/rtl/fm.c
|
||||
% Only use hb_xmemcopy() and hb_xmemset() when the size of an
|
||||
unsigned int is not the same as the size of an unsigned long.
|
||||
|
||||
* include/gtapi.h
|
||||
* source/rtl/console.c
|
||||
* source/rtl/gtapi.c
|
||||
! DEVPOS(), SETPOS(), console cursor position, and console display
|
||||
functions modified for improved Clipper compatibility.
|
||||
|
||||
19991005-23:20 EDT Paul Tucker <ptucker@sympatico.ca>
|
||||
+ include/harbour.ch
|
||||
* This file is meant as a repository of defines or translations needed
|
||||
to allow CA-Clipper to compile programs that take advantage of any
|
||||
Harbour specific extensions or additions to the language.
|
||||
Currently, it only handles a substitute for HB_OsNewLine()
|
||||
|
||||
19991006-03:02 GMT+1 Victor Szel <info@szelvesz.hu>
|
||||
* include/extend.h
|
||||
source/rtl/arrays.c
|
||||
source/rtl/classes.c
|
||||
source/rtl/do.c
|
||||
source/rtl/itemapi.c
|
||||
source/vm/hvm.c
|
||||
* hb_g_symEval -> hb_symEval
|
||||
* source/vm/mainwin.c
|
||||
* hb_g_* -> hb_*
|
||||
* source/vm/hvm.c
|
||||
! aStatics made static now for sure.
|
||||
* source/rtl/strings.c
|
||||
! Typo fixed.
|
||||
* source/rtl/memoline.c
|
||||
! Formatting fix.
|
||||
|
||||
19991005-20:35 EDT Paul Tucker <ptucker@sympatico.ca>
|
||||
* source/rtl/memoline.c
|
||||
* add a cast on xgrab call.
|
||||
|
||||
19991006-02:26 GMT+1 Victor Szel <info@szelvesz.hu>
|
||||
* include/set.h
|
||||
source/rtl/set.c
|
||||
source/rtl/console.c
|
||||
source/rtl/transfrm.c
|
||||
! 64 changed to CLR_STRLEN in set.h
|
||||
* Separate global "set" variables moved inside HB_SET_STRUCT
|
||||
* include/caundoc.api
|
||||
+ _bset, _bmove, _bcopy undocumented Clipper functions added, they are
|
||||
mapped to mem*() functions.
|
||||
* source/vm/main*.c
|
||||
! Typo fixed.
|
||||
|
||||
19991006-00:32 GMT+1 Victor Szel <info@szelvesz.hu>
|
||||
* include/extend.h
|
||||
source/vm/debug.c
|
||||
source/vm/hvm.c
|
||||
* aStatics made static, prefixed with "s_"
|
||||
__vmVarSGet(), __vmVarSList moved to hvm.c from debug.c
|
||||
* source/vm/debug.c
|
||||
include/hbextern.ch
|
||||
source/runner/stdalone/external.prg
|
||||
source/debug/debugger.prg
|
||||
tests/debugtst.prg
|
||||
* __APARAM -> __vmParLList
|
||||
__GETLOCAL -> __vmVarLGet
|
||||
__STATIC -> __vmVarSGet
|
||||
__ASTATIC -> __vmVarSList
|
||||
__GLOBALSTACKLEN -> __vmStkGCount
|
||||
__AGLOBALSTACK -> __vmStkGList
|
||||
__STACKLEN -> __vmStkLCount
|
||||
__ASTACK -> __vmStkLList
|
||||
Functions renamed.
|
||||
* source/rdd/dbcmd.c
|
||||
+ zeros changed to NULL/'\0'
|
||||
* source/debug/debugger.prg
|
||||
source/rtl/menuto.prg
|
||||
source/rtl/setkey.prg
|
||||
source/rtl/tclass.prg
|
||||
source/rtl/terror.prg
|
||||
source/tools/fileread.prg
|
||||
+ static var names prefixed with "s_" in all .PRG modules.
|
||||
* source/rtl/console.c
|
||||
doc/funclist.txt
|
||||
+ DISPOUTAT() undocumented Clipper function added.
|
||||
* include/extend.h
|
||||
source/rtl/arrays.c
|
||||
source/rtl/classes.c
|
||||
source/rtl/do.c
|
||||
source/rtl/itemapi.c
|
||||
source/vm/hvm.c
|
||||
* symEval -> hb_g_symEval
|
||||
Global variable prefixed with "hb_g_".
|
||||
|
||||
19991005-17:30 EDT Paul Tucker <ptucker@sympatico.ca>
|
||||
* makefile.vc
|
||||
+ source/rtl/mlcount
|
||||
+ source/rtl/memoline
|
||||
+ source/vm/mainstd (for now)
|
||||
+ source/rtl/rddord
|
||||
* gtapi.obj moved to terminal.lib
|
||||
* duplicate console.obj removed from terminal.lib
|
||||
(as reported by Gerrit Jan Doornink <gjd@casema.net>)
|
||||
|
||||
Tue Oct 05 14:44:16 1999 Gonzalo A. Diethelm <Gonzalo.Diethelm@jda.cl>
|
||||
|
||||
* source/rtl/filesys.c (hb_fsTell):
|
||||
Replaced use of tell() with an equivalent call to lseek(), so that
|
||||
this is supported under gcc.
|
||||
|
||||
19991005-20:34 GMT+1 Victor Szel <info@szelvesz.hu>
|
||||
* include/hbextern.ch
|
||||
source/runner/stdalone/external.prg
|
||||
- One of the two HB_OSNEWLINE removed.
|
||||
+ source/rtl/memoline.c
|
||||
source/rtl/Makefile
|
||||
doc/funclist.txt
|
||||
+ MEMOLINE() added
|
||||
(thanks to Ignacio Ortiz de Zúniga <ignacio@fivetech.com>)
|
||||
!! WARNING !! Please modify non-GNU make files.
|
||||
|
||||
19991005-18:20 GMT+1 Victor Szel <info@szelvesz.hu>
|
||||
+ source/rtl/rddord.prg
|
||||
source/rtl/Makefile
|
||||
+ dbCreateIndex()
|
||||
dbSetIndex()
|
||||
dbClearIndex()
|
||||
dbReindex()
|
||||
dbSetOrder()
|
||||
IndexExt()
|
||||
IndexKey()
|
||||
These will not work yet, since they are simple wrapper to the ord*()
|
||||
functions. Just like in Clipper.
|
||||
!! WARNING !! Please modify non-GNU make files.
|
||||
|
||||
19991005-18:02 GMT+1 Victor Szel <info@szelvesz.hu>
|
||||
* tests/rtl_test.prg
|
||||
+ Added more complete tests for <,>,<=,>=,!= operators.
|
||||
* source/vm/hvm.c
|
||||
% hb_vmPopDate() is no more checking the type of the popped value, and
|
||||
the related unrecoverable error is also removed, since the callers
|
||||
do this check before each call.
|
||||
* Some more function grouping, small corrections.
|
||||
! hb_vmLess(), hb_vmLessEqual(), hb_vmGreater(), hb_vmGreaterEqual()
|
||||
some cases were not handled, so stack corruption could occure, when
|
||||
two ARRAY/BLOCK/OBJECT were compared. Fixed.
|
||||
! hb_vmNotEqual() fixed for ARRAY/OBJECT/BLOCK types.
|
||||
* source/vm/hvm.c
|
||||
include/pcode.h
|
||||
source/compiler/genc.c
|
||||
source/compiler/genhrb.c
|
||||
source/compiler/harbour.y
|
||||
* HB_P_GENARRAY -> HB_P_ARRAYGEN
|
||||
* HB_P_DIMARRAY -> HB_P_ARRAYDIM
|
||||
!! WARNING !! Please rebuild all .PRG files, since the pcode values have
|
||||
changed.
|
||||
* include/hbver.h
|
||||
+ Revision set to "a"
|
||||
* source/compiler/harbour.c
|
||||
+ isatty.c put back in order.
|
||||
* source/compiler/main*.c
|
||||
+ Some small cleanups.
|
||||
19991006-01:06 GMT+1 Antonio Linares <alinares@fivetech.com>
|
||||
* makefile.b32
|
||||
+ mising include source\compiler path compiling harboury.c
|
||||
* source/rtl/classes.c
|
||||
+ Added support for CLASSDATAs INIT clause.
|
||||
* source/rtl/tclass.prg
|
||||
+ Added support for CLASSDATAs INIT clause.
|
||||
* include/hboo.ch
|
||||
+ new defines added for CLASSDATAS.
|
||||
|
||||
19991005-14:41 GMT+1 Victor Szel <info@szelvesz.hu>
|
||||
* tests/run_tsta.bat
|
||||
@@ -214,11 +56,193 @@ Tue Oct 05 14:44:16 1999 Gonzalo A. Diethelm <Gonzalo.Diethelm@jda.cl>
|
||||
19991005-12:30 GMT+2 Ryszard Glab <rglab@imid.med.pl>
|
||||
|
||||
*source/compiler/harbour.y
|
||||
* changed some rules to correctly handle the following syntax:
|
||||
LOCAL cbVar:={|| cbVar}
|
||||
(the cbVar inside a codeblock is correctly considered a local
|
||||
variable instead of memvar variable)
|
||||
* corrected usage info to print LF at the end of message
|
||||
|
||||
19991005-08:36 GMT+1 Victor Szel <info@szelvesz.hu>
|
||||
* source/vm/main*.c
|
||||
source/vm/Makefile
|
||||
include/ctoharb.h
|
||||
! Some cleanup on the new main() functions.
|
||||
(using header file, fixed CVS headers, added copyright header, removed a TODO,
|
||||
TO DO -> TODO, Hungarian notation, global var name, 0 -> NULL,
|
||||
added to GNU makefile, std main return value missing.)
|
||||
* makefile.b40 (removed)
|
||||
makefile.b32
|
||||
make_b40.bat
|
||||
+ makefile.b40 removed, since from now on makefile.b32 provides
|
||||
the same functionality when B40 macro is defined. See make_b40.bat.
|
||||
* *.bat
|
||||
*.b??
|
||||
hbpplib.b32 (removed)
|
||||
+ Further uniformized.
|
||||
+ hbpp.exe make process uncommented from make_b16.bat.
|
||||
We will see how it works.
|
||||
+ hbpplib.b32 incorporated into hbpp.b32
|
||||
- hbpp.b16 (removed)
|
||||
makefile.b16
|
||||
make_b16.bat
|
||||
- hbpp.b16 removed, since it was not used, and is now incorporated to
|
||||
makefile.b16.
|
||||
* source/runner/stdalone/hbrun.prg
|
||||
+ Using OutStd() instead of QOUT() to enable output redirecting like in
|
||||
other command line utilites.
|
||||
|
||||
19991005-07:55 GMT+1 Antonio Linares <alinares@fivetech.com>
|
||||
+ New file source/vm/mainstd.c (entry point for std applications)
|
||||
+ New file source/vm/mainwin.c (entry point for win appplications)
|
||||
* source/vm/hvm.c
|
||||
-+ main() renamed to hb_vmInit()
|
||||
* hb_quit() removed from there and moved to mainstd.c and
|
||||
mainwin.c respectively.
|
||||
* makefile.b32
|
||||
* added support for mainstd.c and mainwin.c modules.
|
||||
(make_b32.bat tested and works ok).
|
||||
* tests/bld_b32.bat
|
||||
* %1 moved to the end of line
|
||||
* del %1.c removed
|
||||
(tested and works ok).
|
||||
|
||||
19991005-00:13 GMT+1 Victor Szel <info@szelvesz.hu>
|
||||
* source/compiler/genc.c
|
||||
! Cosmetic: Some double tabs changed to single ones.
|
||||
|
||||
19991004-22:34 GMT+1 Victor Szel <info@szelvesz.hu>
|
||||
* tests/db_brows.prg
|
||||
- READEXIT() removed since it's now part of the RTL.
|
||||
|
||||
19991004-21:34 GMT+1 Victor Szel <info@szelvesz.hu>
|
||||
* tests/*.bat
|
||||
! Reworked, standardized, simplified. Please test them.
|
||||
Now they resemble to the bin/*.bat batch files.
|
||||
* tests/buildexe.bat
|
||||
- Removed since it was obsolete, use bld_b16.bat instead.
|
||||
|
||||
19991004-19:54 GMT+1 Victor Szel <info@szelvesz.hu>
|
||||
* source/rtl/memvars.c
|
||||
! memvars.ch changed to hbmemvar.ch
|
||||
* tests/working/*.* moved to tests/*.*
|
||||
* tests/working/db_brows.*
|
||||
! Fixed the CVS header, they missed to closing "$"
|
||||
|
||||
19991004-19:23 GMT+1 Victor Szel <info@szelvesz.hu>
|
||||
* tests/broken/*.* moved to tests/working
|
||||
tests/working/Makefile
|
||||
* moved to the BAD_PRG_SOURCES
|
||||
- tests/broken/
|
||||
- Removed
|
||||
* tests/working/hscript/*.* moved to samples/hscript
|
||||
* Moved
|
||||
* source/rtl/mlcount.c
|
||||
* BYTE type changed to USHORT.
|
||||
* Hungarian notation slighly corrected.
|
||||
|
||||
19991004-18:58 GMT+1 Victor Szel <info@szelvesz.hu>
|
||||
+ source/runner/stdalone/hbrun.prg
|
||||
+ Added (now for sure)
|
||||
|
||||
19991004-18:53 GMT+1 Victor Szel <info@szelvesz.hu>
|
||||
+ include/reserved.ch
|
||||
+ Added for complete Clipper compatibility, the file is a dummy, so it's
|
||||
a TODO to replicate to originial functionality.
|
||||
* include/Makefile
|
||||
* Updated.
|
||||
|
||||
Mon Oct 04 12:52:42 1999 Gonzalo A. Diethelm <Gonzalo.Diethelm@jda.cl>
|
||||
|
||||
* tests/working/Makefile:
|
||||
Added missing '\' after db_brows.ch.
|
||||
Changed spaces to tabs.
|
||||
|
||||
19991004-18:42 GMT+1 Victor Szel <info@szelvesz.hu>
|
||||
* include/classes.ch -> include/hbclass.ch
|
||||
include/external.ch -> include/hbextern.ch
|
||||
include/memvars.ch -> include/hbmemvar.ch
|
||||
source/debug/debugger.prg
|
||||
source/debug/tbrwtext.prg
|
||||
source/rtl/tbcolumn.prg
|
||||
source/rtl/tbrowse.prg
|
||||
source/rtl/tget.prg
|
||||
source/rtl/tgetlist.prg
|
||||
tests/working/classch.prg
|
||||
source/runner/stdalone/hbrun.prg
|
||||
source/rtl/memvarbl.prg
|
||||
source/rtl/menuto.prg
|
||||
* Non-Clipper compatible Harbour .CH filenames prefixed with "HB" to avoid
|
||||
possible name collisions with existing header files.
|
||||
|
||||
19991004-18:06 GMT+1 Victor Szel <info@szelvesz.hu>
|
||||
+ source/rtl/mlcount.c
|
||||
source/rtl/Makefile
|
||||
doc/funclist.txt
|
||||
+ MLCOUNT() added
|
||||
(thanks to Ignacio Ortiz de Zúniga <ignacio@fivetech.com>)
|
||||
- source/runner/stdalone/runner.prg
|
||||
- Removed (now for sure)
|
||||
|
||||
19991004-16:25 GMT+1 Victor Szel <info@szelvesz.hu>
|
||||
* source/runner/stdalone/runner.prg -> hbrun.prg
|
||||
source/runner/stdalone/Makefile
|
||||
runner.b32
|
||||
makefile.vc
|
||||
tests/working/hbrun.bat -> hbrunprg.bat
|
||||
tests/working/run_all.bat
|
||||
tests/working/test_all.prg
|
||||
* runner.exe renamed to hbrun.exe to better fit into the final
|
||||
executable naming style (harbour/hbpp/hbrun)
|
||||
|
||||
19991004-15:15 GMT+1 Victor Szel <info@szelvesz.hu>
|
||||
* source/hbpp -> source/pp
|
||||
source/Makefile
|
||||
source/pp/Makefile
|
||||
source/pp/stdalone/Makefile
|
||||
source/compiler/Makefile
|
||||
source/runner/stdalone/Makefile
|
||||
tests/working/Makefile
|
||||
makefile.*
|
||||
*.b??
|
||||
* source/hbpp changed to source/pp.
|
||||
|
||||
19991004-14:48 GMT+1 Victor Szel <info@szelvesz.hu>
|
||||
* tests/working/*.bat
|
||||
*.b??
|
||||
makefile.vc
|
||||
libs/*
|
||||
lib/*
|
||||
* libs directory name changed to lib, the win16 and win32
|
||||
subdirs have been removed.
|
||||
* win32 dir is no longer needed, since now the windows terminal.lib
|
||||
is named termwin.lib.
|
||||
source/rtl/tgetlist.prg
|
||||
doc/funclist.txt
|
||||
+ READINSERT() function added. (Thanks to Matteo Baccan)
|
||||
* source/rtl/filesys.c
|
||||
include/filesys.h
|
||||
+ hb_fsTell() added to the header file
|
||||
% hb_fsSetDev*() now calls hb_fsSetDevMode(), so some platform specific
|
||||
code could be eliminated.
|
||||
% Some simplification in FSETDEVMOD()
|
||||
+ Added missing HB_ prefix to FSETDEVMOD()
|
||||
|
||||
19991005-12:30 GMT+2 Ryszard Glab <rglab@imid.med.pl>
|
||||
|
||||
*source/compiler/harbour.y
|
||||
<<<<<<< ChangeLog
|
||||
* changed some rules to correctly handle the following syntax:
|
||||
LOCAL cbVar:={|| cbVar}
|
||||
(the cbVar inside a codeblock is correctly considered a local
|
||||
variable instead of memvar variable)
|
||||
* corrected usage info to print LF at the end of message
|
||||
=======
|
||||
* changed some rules to correctly handle the following syntax:
|
||||
LOCAL cbVar:={|| cbVar}
|
||||
(the cbVar inside a codeblock is correctly considered a local
|
||||
variable instead of memvar variable)
|
||||
* corrected usage info to print LF at the end of message
|
||||
>>>>>>> 1.1131
|
||||
|
||||
19991005-08:36 GMT+1 Victor Szel <info@szelvesz.hu>
|
||||
* source/vm/main*.c
|
||||
|
||||
@@ -38,14 +38,17 @@
|
||||
#ifndef _HBOO_CH
|
||||
#define _HBOO_CH
|
||||
|
||||
#define MET_METHOD 0
|
||||
#define MET_DATA 1
|
||||
#define MET_CLASSDATA 2
|
||||
#define MET_INLINE 3
|
||||
#define MET_VIRTUAL 4
|
||||
#define MET_SUPER 5
|
||||
#define MET_METHOD 0
|
||||
#define MET_DATA 1
|
||||
#define MET_CLASSDATA 2
|
||||
#define MET_INLINE 3
|
||||
#define MET_VIRTUAL 4
|
||||
#define MET_SUPER 5
|
||||
|
||||
#define DATA_SYMBOL 1
|
||||
#define DATA_VALUE 2
|
||||
#define DATA_SYMBOL 1
|
||||
#define DATA_VALUE 2
|
||||
|
||||
#define CLASSDATA_SYMBOL 1
|
||||
#define CLASSDATA_VALUE 2
|
||||
|
||||
#endif /* _HBOO_CH */
|
||||
|
||||
@@ -429,11 +429,20 @@ HARBOUR HB___CLSADDMSG( void )
|
||||
if( pMessage->pSymbol->szName[ 0 ] == '_' )
|
||||
pNewMeth->pFunction = hb___msgSetClsData;
|
||||
else
|
||||
{
|
||||
PHB_ITEM pInit = hb_param( 5, IT_ANY );
|
||||
|
||||
pNewMeth->pFunction = hb___msgGetClsData;
|
||||
|
||||
if( pInit && !IS_NIL( pInit )) /* Initializer found */
|
||||
{
|
||||
pNewMeth->pInitValue = hb_itemNew( NULL );
|
||||
hb_itemCopy( pNewMeth->pInitValue, pInit );
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case MET_INLINE:
|
||||
|
||||
pNewMeth->uiData = hb_arrayLen( pClass->pInlines ) + 1;
|
||||
hb_arraySize( pClass->pInlines, pNewMeth->uiData );
|
||||
hb_arraySet( pClass->pInlines, pNewMeth->uiData,
|
||||
@@ -600,7 +609,12 @@ HARBOUR HB___CLSINST( void )
|
||||
|
||||
for( uiAt = 0; uiAt < uiLimit; uiAt++, pMeth++ )
|
||||
if( pMeth->pInitValue )
|
||||
hb_itemArrayPut( &stack.Return, pMeth->uiData, pMeth->pInitValue );
|
||||
{
|
||||
if( pMeth->pFunction != hb___msgGetClsData ) /* is a DATA */
|
||||
hb_itemArrayPut( &stack.Return, pMeth->uiData, pMeth->pInitValue );
|
||||
else /* it is a ClassData */
|
||||
hb_arraySet( pClass->pClassDatas, pMeth->uiData, pMeth->pInitValue );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
*
|
||||
* 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
|
||||
* 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
|
||||
@@ -54,9 +54,9 @@
|
||||
|
||||
FUNCTION TClass()
|
||||
|
||||
STATIC s_hClass := NIL
|
||||
STATIC s_hClass := nil
|
||||
|
||||
IF s_hClass == NIL
|
||||
if s_hClass == nil
|
||||
s_hClass := __clsNew( "TCLASS", 10 )
|
||||
|
||||
__clsAddMsg( s_hClass, "New", @New(), MET_METHOD )
|
||||
@@ -90,15 +90,15 @@ FUNCTION TClass()
|
||||
__clsAddMsg( s_hClass, "_uInit", 9, MET_DATA )
|
||||
__clsAddMsg( s_hClass, "cType", 10, MET_DATA )
|
||||
__clsAddMsg( s_hClass, "_cType", 10, MET_DATA )
|
||||
ENDIF
|
||||
endif
|
||||
|
||||
RETURN __clsInst( s_hClass )
|
||||
return __clsInst( s_hClass )
|
||||
|
||||
//----------------------------------------------------------------------------//
|
||||
|
||||
STATIC FUNCTION New( cClassName, cSuper )
|
||||
static function New( cClassName, cSuper )
|
||||
|
||||
LOCAL Self := QSelf()
|
||||
local Self := QSelf()
|
||||
|
||||
::cName := Upper( cClassName )
|
||||
::aDatas := {}
|
||||
@@ -106,30 +106,30 @@ STATIC FUNCTION New( cClassName, cSuper )
|
||||
::aClsDatas := {}
|
||||
::aInlines := {}
|
||||
::aVirtuals := {}
|
||||
IF ISCHARACTER( cSuper )
|
||||
if ISCHARACTER( cSuper )
|
||||
::cSuper := cSuper
|
||||
ENDIF
|
||||
endif
|
||||
|
||||
RETURN Self
|
||||
return Self
|
||||
|
||||
//----------------------------------------------------------------------------//
|
||||
|
||||
STATIC FUNCTION Create()
|
||||
static function Create()
|
||||
|
||||
LOCAL Self := QSelf()
|
||||
LOCAL n
|
||||
LOCAL nLen
|
||||
LOCAL nLenDatas := Len( ::aDatas )
|
||||
LOCAL nDataBegin := 0
|
||||
LOCAL nClassBegin := 0
|
||||
LOCAL hClass
|
||||
LOCAL hSuper
|
||||
LOCAL ahSuper := {}
|
||||
local Self := QSelf()
|
||||
local n
|
||||
local nLen
|
||||
local nLenDatas := Len( ::aDatas )
|
||||
local nDataBegin := 0
|
||||
local nClassBegin := 0
|
||||
local hClass
|
||||
local hSuper
|
||||
local ahSuper := {}
|
||||
|
||||
IF ::cSuper == NIL
|
||||
if ::cSuper == nil
|
||||
hClass := __clsNew( ::cName, nLenDatas )
|
||||
|
||||
ELSE // Single inheritance
|
||||
else // Single inheritance
|
||||
hSuper := __clsInstSuper( Upper( ::cSuper ) )
|
||||
hClass := __clsNew( ::cName, nLenDatas, hSuper )
|
||||
// Add class casts
|
||||
@@ -138,121 +138,128 @@ STATIC FUNCTION Create()
|
||||
|
||||
nDataBegin := __cls_CntData( hSuper ) // Get offset for new DATAs
|
||||
nClassBegin := __cls_CntClsData( hSuper ) // Get offset for new ClassData
|
||||
ENDIF
|
||||
endif
|
||||
|
||||
::hClass := hClass
|
||||
|
||||
FOR n := 1 TO nLenDatas
|
||||
for n := 1 to nLenDatas
|
||||
__clsAddMsg( hClass, ::aDatas[ n ][ DATA_SYMBOL ], n + nDataBegin, MET_DATA, ;
|
||||
::aDatas[ n ][ DATA_VALUE ] )
|
||||
__clsAddMsg( hClass, "_" + ::aDatas[ n ][ DATA_SYMBOL ], n + nDataBegin, MET_DATA )
|
||||
NEXT
|
||||
__clsAddMsg( hClass, "_" + ::aDatas[ n ][ DATA_SYMBOL ], n + nDataBegin,;
|
||||
MET_DATA )
|
||||
next
|
||||
|
||||
nLen := Len( ::aMethods )
|
||||
FOR n := 1 TO nLen
|
||||
for n := 1 to nLen
|
||||
__clsAddMsg( hClass, ::aMethods[ n ][ 1 ], ::aMethods[ n ][ 2 ], MET_METHOD )
|
||||
NEXT
|
||||
next
|
||||
|
||||
nLen := Len( ::aClsDatas )
|
||||
FOR n := 1 TO nLen
|
||||
__clsAddMsg( hClass, ::aClsDatas[ n ], n + nClassBegin, MET_CLASSDATA )
|
||||
__clsAddMsg( hClass, "_" + ::aClsDatas[ n ], n + nClassBegin, MET_CLASSDATA )
|
||||
NEXT
|
||||
for n := 1 to nLen
|
||||
__clsAddMsg( hClass, ::aClsDatas[ n ][ CLASSDATA_SYMBOL ], n + nClassBegin,;
|
||||
MET_CLASSDATA, ::aClsDatas[ n ][ CLASSDATA_VALUE ] )
|
||||
__clsAddMsg( hClass, "_" + ::aClsDatas[ n ][ CLASSDATA_SYMBOL ],;
|
||||
n + nClassBegin, MET_CLASSDATA )
|
||||
next
|
||||
|
||||
nLen := Len( ::aInlines )
|
||||
FOR n := 1 TO nLen
|
||||
for n := 1 to nLen
|
||||
__clsAddMsg( hClass, ::aInlines[ n ][ 1 ], ::aInlines[ n ][ 2 ],;
|
||||
MET_INLINE )
|
||||
NEXT
|
||||
next
|
||||
// __clsAddMsg( hClass, Upper( ::cName ), {|self|self}, MET_INLINE ) // Useful?
|
||||
|
||||
nLen := Len( ::aVirtuals )
|
||||
FOR n := 1 TO nLen
|
||||
for n := 1 to nLen
|
||||
__clsAddMsg( hClass, ::aVirtuals[ n ], n, MET_VIRTUAL )
|
||||
NEXT
|
||||
next
|
||||
|
||||
RETURN NIL
|
||||
return nil
|
||||
|
||||
//----------------------------------------------------------------------------//
|
||||
|
||||
STATIC FUNCTION Instance()
|
||||
static function Instance()
|
||||
|
||||
LOCAL Self := QSelf()
|
||||
local Self := QSelf()
|
||||
|
||||
RETURN __clsInst( ::hClass )
|
||||
return __clsInst( ::hClass )
|
||||
|
||||
//----------------------------------------------------------------------------//
|
||||
|
||||
STATIC FUNCTION AddData( cData, xInit ) /* xInit is initializer */
|
||||
static function AddData( cData, xInit ) /* xInit is initializer */
|
||||
|
||||
LOCAL Self := QSelf()
|
||||
local Self := QSelf()
|
||||
|
||||
IF ::uInit != NIL
|
||||
if ::uInit != nil
|
||||
xInit := ::uInit
|
||||
ENDIF
|
||||
endif
|
||||
|
||||
aAdd( ::aDatas, { cData, xInit } )
|
||||
AAdd( ::aDatas, { cData, xInit } )
|
||||
|
||||
RETURN NIL
|
||||
return nil
|
||||
|
||||
//----------------------------------------------------------------------------//
|
||||
|
||||
STATIC FUNCTION AddClassData( cData )
|
||||
static function AddClassData( cData, xInit )
|
||||
|
||||
LOCAL Self := QSelf()
|
||||
local Self := QSelf()
|
||||
|
||||
aAdd( ::aClsDatas, cData )
|
||||
if ::uInit != nil
|
||||
xInit := ::uInit
|
||||
endif
|
||||
|
||||
RETURN NIL
|
||||
AAdd( ::aClsDatas, { cData, xInit } )
|
||||
|
||||
return nil
|
||||
|
||||
//----------------------------------------------------------------------------//
|
||||
|
||||
STATIC FUNCTION AddInline( cMethod, bCode )
|
||||
static function AddInline( cMethod, bCode )
|
||||
|
||||
LOCAL Self := QSelf()
|
||||
local Self := QSelf()
|
||||
|
||||
aAdd( ::aInlines, { cMethod, bCode } )
|
||||
AAdd( ::aInlines, { cMethod, bCode } )
|
||||
|
||||
RETURN NIL
|
||||
return nil
|
||||
|
||||
//----------------------------------------------------------------------------//
|
||||
|
||||
STATIC FUNCTION AddMethod( cMethod, nFuncPtr )
|
||||
static function AddMethod( cMethod, nFuncPtr )
|
||||
|
||||
LOCAL Self := QSelf()
|
||||
local Self := QSelf()
|
||||
|
||||
aAdd( ::aMethods, { cMethod, nFuncPtr } )
|
||||
AAdd( ::aMethods, { cMethod, nFuncPtr } )
|
||||
|
||||
RETURN NIL
|
||||
return nil
|
||||
|
||||
//----------------------------------------------------------------------------//
|
||||
|
||||
STATIC FUNCTION AddVirtual( cMethod )
|
||||
static function AddVirtual( cMethod )
|
||||
|
||||
LOCAL Self := QSelf()
|
||||
local Self := QSelf()
|
||||
|
||||
aAdd( ::aVirtuals, cMethod )
|
||||
AAdd( ::aVirtuals, cMethod )
|
||||
|
||||
RETURN NIL
|
||||
return nil
|
||||
|
||||
//----------------------------------------------------------------------------//
|
||||
|
||||
STATIC FUNCTION SetInit( uValue )
|
||||
static function SetInit( uValue )
|
||||
|
||||
LOCAL Self := QSelf()
|
||||
local Self := QSelf()
|
||||
|
||||
::uInit := uValue
|
||||
|
||||
RETURN NIL
|
||||
return nil
|
||||
|
||||
//----------------------------------------------------------------------------//
|
||||
|
||||
STATIC FUNCTION SetType( cType )
|
||||
static function SetType( cType )
|
||||
|
||||
LOCAL Self := QSelf()
|
||||
local Self := QSelf()
|
||||
|
||||
::cType := cType
|
||||
|
||||
RETURN NIL
|
||||
return nil
|
||||
|
||||
//----------------------------------------------------------------------------//
|
||||
|
||||
Reference in New Issue
Block a user