* harbour/include/common.ch
- removed ISSYMBOL()
* harbour/source/rtl/tclass.prg
* use valtype() instead of IS*()
* some minor modifications
* harbour/source/vm/hvm.c
* minor modification
989 lines
40 KiB
Plaintext
989 lines
40 KiB
Plaintext
/*
|
|
* $Id$
|
|
*/
|
|
|
|
/* Use this format for the entry headers:
|
|
YYYY-MM-DD HH:MM UTC[-|+]hhmm Your Full Name <your_email@address>
|
|
For example:
|
|
2002-12-01 13:30 UTC+0100 Foo Bar <foo.bar@foobar.org>
|
|
*/
|
|
|
|
++:&var
|
|
:&var += :&(var2+"oo")
|
|
END
|
|
|
|
+ tests/omacro.prg
|
|
+ sample file to test the new syntax
|
|
|
|
NOTICE:
|
|
For simple assigments (=,:=), compound assignments (+=,-=,*=,/=)
|
|
and for pre/post increment operators( ++,--) the macro should
|
|
evaluate to a symbol that starts with underscore '_'.
|
|
To access a variable the macro should evaluate to a symbol
|
|
with no '_' char.
|
|
|
|
2006-09-28 23:55 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
|
* harbour/include/common.ch
|
|
- removed ISSYMBOL()
|
|
* harbour/source/rtl/tclass.prg
|
|
* use valtype() instead of IS*()
|
|
* some minor modifications
|
|
|
|
* harbour/source/vm/hvm.c
|
|
* minor modification
|
|
|
|
2006-09-28 14:40 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
|
* harbour/include/hbclass.ch
|
|
* updated some not enabled by default rules to use function pointers
|
|
instead of function names which I forgot to update in previous
|
|
commit
|
|
|
|
2006-09-28 14:30 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
|
* harbour/include/common.ch
|
|
+ added ISSYMBOL()
|
|
|
|
* harbour/include/hbextern.ch
|
|
- removed __CLS_PARAM()
|
|
|
|
* harbour/include/hbclass.ch
|
|
* harbour/source/rtl/tclass.prg
|
|
* harbour/source/vm/classes.c
|
|
* replaced __CLS_PAR00() and __CLS_PARAM() functions by preprocessor
|
|
rules. These functions are not longer necessary though I left them
|
|
in classes.c for backward binary compatibility. Probably they will
|
|
be removed in the future.
|
|
! use function pointers (@<funcname>()) instead of function names
|
|
with REQUEST for super classes ID. It fixes using STATIC class
|
|
functions.
|
|
|
|
2006-09-28 00:40 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
|
* harbour/make_rpm.sh
|
|
* check for rpmbuild also when BUGGY_RPM is set
|
|
|
|
* harbour/make_tgz.sh
|
|
* removed rebuild hbpptest with shared libraries
|
|
|
|
* harbour/include/hbapicls.h
|
|
+ added definitions for hb_clsCreate(), hb_clsAdd(), hb_clsAssociate()
|
|
|
|
* harbour/include/hbapierr.h
|
|
* harbour/source/rtl/errorapi.c
|
|
+ added hb_errFuncName - pseudo function name which can be used as
|
|
operation description in new error object. It should help to simplify
|
|
some code and fix function names when RT error is generated from C
|
|
function which can be executed from different .prg functions.
|
|
|
|
* harbour/include/hbclass.ch
|
|
+ added some missing Classy(y) compatible object variable type
|
|
descriptions: Int, Integer, Block
|
|
|
|
* harbour/source/rdd/dbfcdx/dbfcdx1.c
|
|
! disabled early retrieving from the cache key position and key count
|
|
|
|
* harbour/include/hbvm.h
|
|
* harbour/source/vm/hvm.c
|
|
+ added: void hb_vmPushEvalSym( void ) for the code which do not
|
|
want to access any [P]HB_SYMB structures
|
|
* changed symbol name in hb_symEval from __EVAL to EVAL and modified
|
|
hb_symEval registration method to not register hb_vmDoBlock as global
|
|
function. Having PHB_DYNS address for "EVAL" in hb_symEval.pDynSym
|
|
allows to eliminate some strcmp() when we are looking for EVAL public
|
|
symbol.
|
|
! fixed symbol table updating in PCODE functions for future multi module
|
|
.hrb files
|
|
|
|
* harbour/source/vm/proc.c
|
|
* use hb_symEval.pDynSym instead of strcmp()
|
|
|
|
* harbour/source/vm/arrays.c
|
|
* harbour/source/vm/debug.c
|
|
* minor code cleanup
|
|
|
|
* harbour/source/rtl/tclass.prg
|
|
* harbour/source/vm/classes.c
|
|
% separate message hash table from methods table - it will cause farther
|
|
reduction of allocated memory - many thanks to all people who send
|
|
me statistics about number of used classes and symbols from their code.
|
|
% use hb_symEval.pDynSym
|
|
+ added support for object variable type scope checking like in Class(y).
|
|
! fixed typo in pushing object class variables by reference
|
|
% s_pClasses is now indexed directly by class handle
|
|
|
|
! make hidden and non virtual invisible in child classes if it overloaded
|
|
some other non hidden method. In such case the overloaded method is used
|
|
and can be accessed.
|
|
! make friend functions real method class oriented not (super)object for
|
|
hidden messages
|
|
|
|
2006-09-26 17:00 UTC+0100 Ryszard Glab <rglab//imid.med.pl>
|
|
* include/hbexprb.c
|
|
* source/compiler/exproptb.c
|
|
* source/compiler/harbour.y
|
|
*added support for passing the reference to object's variable
|
|
e.g.
|
|
foo( @obj:var )
|
|
|
|
2006-09-24 21:10 UTC+0300 Alexander Kresin <alex@belacy.belgorod.su>
|
|
* source/rtl/cdpapi.c
|
|
* Restored hb_CdpList(), deleted accidentally while last commit.
|
|
|
|
2006-09-23 19:58 UTC+0300 Alexander Kresin <alex@belacy.belgorod.su>
|
|
* source/rtl/cdpapi.c
|
|
! Bugs fixed in hb_cdpcmp()
|
|
|
|
2006-09-23 14:35 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
|
* harbour/source/vm/itemapi.c
|
|
* minor modification in function order to group together the ones
|
|
which can operate on reference counters
|
|
+ added additional stop condition in hb_itemUnRef() - we will have
|
|
to make some modifications for the code which execute hb_itemUnRef()
|
|
to resolve some possible conflicts with operators overloading and
|
|
compiler optimizations
|
|
|
|
* harbour/source/vm/classes.c
|
|
* do not inherit friends - seems that our classes code was too
|
|
friendly ;-)
|
|
It also effectively resolves logical problem with accessing
|
|
overloaded non virtual methods from friends.
|
|
+ added __clsLock( <hClass> ) - it locks any farther class
|
|
modifications and can be used if programmer wants to be sure
|
|
that no one will try to hack his class definition. It's very
|
|
important when programmers work in a team on bigger project.
|
|
Please do not add to CVS any __clsUnLock() functions - if someone
|
|
needs it then he can create his own custom HVM build.
|
|
* code cleanup
|
|
|
|
* harbour/source/vm/eval.c
|
|
+ added hb_execFromArray() - idea and syntax borrowed from xHarbour's
|
|
HB_ExecFromArray() by Giancarlo Niccolai though it's independent
|
|
implementation. Now when we have support for functions with variable
|
|
number of parameters then we need sth like this function to fully
|
|
benefit from new feature. The following syntax is supported:
|
|
hb_execFromArray( <cFuncName> [, <aParams> ] )
|
|
hb_execFromArray( @<funcName>() [, <aParams> ] )
|
|
hb_execFromArray( <bCodeBlock> [, <aParams> ] )
|
|
hb_execFromArray( <oObject> , <cMethodName> [, <aParams> ] )
|
|
hb_execFromArray( <oObject> , @<msgName>() [, <aParams> ] )
|
|
or:
|
|
hb_execFromArray( <aExecArray> )
|
|
where <aExecArray> is in one of the following format:
|
|
{ <cFuncName> [, <params,...>] }
|
|
{ @<funcName>() [, <params,...>] }
|
|
{ <bCodeBlock> [, <params,...>] }
|
|
{ <oObject> , <cMethodName> [, <params,...>] }
|
|
{ <oObject> , @<msgName>() [, <params,...>] }
|
|
|
|
* harbour/source/rtl/symbol.prg
|
|
* removed C code inside #pragma BEGINDUMP/ENDDUMP
|
|
now it's only .prg code which uses variable parameters function
|
|
and hb_execFromArray()
|
|
|
|
2006-09-22 23:00 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
|
* harbour/include/hbclass.ch
|
|
* harbour/include/hbvm.h
|
|
* harbour/source/rtl/tclass.prg
|
|
* harbour/source/vm/classes.c
|
|
* harbour/source/vm/hvm.c
|
|
! fixed bug in real codeblock scoping which was exploited by
|
|
dictionary resizing
|
|
* changed ACCESS messages to ASSIGN ones when object item
|
|
reference is created for proper READONLY scope checking.
|
|
The reference to object variable can be created only when
|
|
caller has sufficient ASSIGN privileges.
|
|
+ added FRIEND CLASS and FRIEND FUNCTION support.
|
|
It's enough to add class definition:
|
|
FRIEND CLASS <classFunc1> [, <classFuncN> ]
|
|
and/or:
|
|
FRIEND FUNCTION <FuncName1> [, <FuncNameN> ]
|
|
and all methods of given class or given function will be able
|
|
to access private variables.
|
|
Warning!!! Friends cannot access overloaded non virtual methods.
|
|
This feature is available _ONLY_ for real class members.
|
|
+ added MODULE FRIENDLY to class definition. It causes that all other
|
|
functions and classes defined in the same .prg module will have
|
|
friend privileges. In such way works xHarbour and there is now way
|
|
or generate compile time error.
|
|
has to explicitly enable it (until he will not change / add new
|
|
preprocessor rule and set it as default ;-)). Syntax:
|
|
CREATE CLASS .... MODULE FRIENDLY
|
|
...
|
|
END CLASS
|
|
|
|
* harbour/source/vm/proc.c
|
|
* harbour/source/vm/runner.c
|
|
* updated function symbols processing
|
|
|
|
* harbour/source/compiler/harbour.c
|
|
* added note in hb_compOptimizeFrames() about exceeding maximum number
|
|
of local variables (255). We should add new pcode(s) HB_P_LARGE[V]FRAME
|
|
or generate compile time error.
|
|
|
|
* harbour/source/vm/macro.c
|
|
% minor optimizations
|
|
|
|
2006-09-21 12:05 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
|
* harbour/source/vm/itemapi.c
|
|
% minor optimization in hb_itemParam()
|
|
! fixed enumerator variable clearing in hb_itemCopy()
|
|
|
|
2006-09-21 09:52 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu)
|
|
* harbour/source/common/expropt2.c
|
|
! Fixed leak introduced in previous commit.
|
|
|
|
2006-09-20 23:17 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu)
|
|
* harbour/include/hbexprb.c
|
|
* harbour/include/hbexprop.h
|
|
* harbour/source/common/expropt2.c
|
|
% Compile-time optimization added for expressions below:
|
|
SToD(""), SToD(), HB_SToD(<cDate>), HB_SToD(""), HB_SToD()
|
|
! Tabs converted to spaces.
|
|
|
|
* harbour/source/common/hbdate.c
|
|
* harbour/source/rtl/dates.c
|
|
* Copyright cosmetic cleanup.
|
|
|
|
2006-09-20 21:02 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
|
* harbour/source/vm/codebloc.c
|
|
! fixed detaching locals in variable parameters functions
|
|
|
|
2006-09-20 20:22 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
|
* harbour/contrib/rdd_ads/ads1.c
|
|
! fixed casting for C++ compilation
|
|
|
|
* harbour/source/compiler/harbour.c
|
|
! fixed removing locals frame - bSkipFrame was not initialized
|
|
|
|
* harbour/include/hbapi.h
|
|
* harbour/source/vm/estack.c
|
|
* harbour/source/vm/hvm.c
|
|
* harbour/source/vm/itemapi.c
|
|
* harbour/source/vm/proc.c
|
|
* moved current line number information from hb_struSymbol
|
|
to current stack state to keep 16 bytes size for HB_ITEM
|
|
on 32bit systems with 4 bytes alignment
|
|
|
|
2006-09-20 18:40 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
|
* harbour/contrib/rdd_ads/ads1.c
|
|
* synced with recent xHarbour fixes
|
|
|
|
* harbour/include/hbdefs.h
|
|
* indenting
|
|
|
|
* harbour/include/hbexprb.c
|
|
* harbour/include/hbexprop.h
|
|
* harbour/source/common/expropt2.c
|
|
+ added compile time optimization for STOD(cConstDateString)
|
|
covered by -kh compiler extension (default)
|
|
It allows to keep the same source code for Clipper and
|
|
Harbour and benefits from data constants without using
|
|
0dYYYYMMDD values
|
|
|
|
* harbour/source/vm/classes.c
|
|
* restored the original 3-rd parameter in hb_clsAdd to void(void) -
|
|
PHB_FUNC - and added translation for PHB_SYMB to not force using
|
|
[P]HB_SYMB in 3-rd party code
|
|
|
|
|
|
* added protection against possible GPF after executing
|
|
hb_stackBaseProcOffset() when first item on the stack
|
|
|
|
cases. Probably some more general solution like leaving
|
|
first dummy item on HVM stack for breaking stack scan
|
|
loops will be better. I'll think about it.
|
|
|
|
* harbour/source/vm/itemapi.c
|
|
! fixed clearing enumerators
|
|
|
|
2006-09-20 14:15 UTC+0100 Ryszard Glab <rglab//imid.med.pl>
|
|
* include/hbpcode.h
|
|
+ added new pcode HB_P_VFRAME
|
|
|
|
* include/hbapi.h
|
|
+ added USHORT paramdeclcnt to asSymbol structure
|
|
|
|
* include/hbstack.h
|
|
+ added support for variable number of parameters in
|
|
+ added hb_stackLocalVariable() to acces local variables
|
|
|
|
* source/compiler/genc.c
|
|
* source/compiler/gencc.c
|
|
* source/compiler/harbour.c
|
|
|
|
* source/compiler/harbour.y
|
|
* source/compiler/hbdead.c
|
|
* source/compiler/hbfix.c
|
|
* source/compiler/hblbl.c
|
|
* source/compiler/hbpcode.c
|
|
* source/compiler/hbstripl.c
|
|
* source/vm/hvm.c
|
|
+ added support for variable number of parameters in
|
|
functions/procedures
|
|
|
|
+ tests/varparam.prg
|
|
HB_PVALUE( iParamNum ) - returns <iParamNum> parameter
|
|
parameters
|
|
|
|
* source/vm/arrayshb.c
|
|
|
|
arguments are passed ( HB_APARAMS() == HB_APARAMS(0) )
|
|
|
|
SYNTAX for variable number of parameters
|
|
1) [FUNCTION|PROCEDURE] name( ... )
|
|
or
|
|
2) [FUNCTION|PROCEDURE] name( var1, var2, varN, ... )
|
|
|
|
To access passed parameters use the following:
|
|
PCOUNT() - returns number of passed parameters
|
|
HB_PVALUE( iParamNum ) - returns <iParamNum> parameter
|
|
HB_APARAMS() - returns array with all passed parameters
|
|
or usual name of parameter variable in case of syntax 2)
|
|
|
|
|
|
2006-09-19 18:40 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
|
* harbour/include/hbexprb.c
|
|
* harbour/source/vm/hvm.c
|
|
+ added support to compiler for sending messages with multi
|
|
parameters resolved by macro operator: s:="1,2,3"; o:msg(&s)
|
|
It works just like for functions and it also needs XBASE extension
|
|
support enabled during compilation, -kx switch in compiler, it's
|
|
enabled by default.
|
|
|
|
* harbour/source/rdd/usrrdd/usrrdd.c
|
|
! added missing DBOI_* index in parameters passed to user ORDINFO()
|
|
method.
|
|
|
|
2006-09-19 11:50 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
|
* harbour/include/hbapi.h
|
|
* harbour/include/hbapicls.h
|
|
* harbour/include/hbpcode.h
|
|
* harbour/include/hbxvm.h
|
|
* harbour/source/compiler/genc.c
|
|
* harbour/source/compiler/gencc.c
|
|
* harbour/source/compiler/hbdead.c
|
|
* harbour/source/compiler/hbfix.c
|
|
* harbour/source/compiler/hblbl.c
|
|
* harbour/source/compiler/hbpcode.c
|
|
* harbour/source/compiler/hbstripl.c
|
|
* harbour/source/vm/arrays.c
|
|
* harbour/source/vm/classes.c
|
|
* harbour/source/vm/codebloc.c
|
|
* harbour/source/vm/hvm.c
|
|
* harbour/source/vm/itemapi.c
|
|
+ added three new PCODEs:
|
|
HB_P_MACROSEND - to use for: s:=1,2,3"; o:=send(&s)
|
|
HB_P_PUSHOVARREF - to create references to object variables: @o:var
|
|
|
|
in some optimization, f.e.: a[ <exp1> ] += <exp2>
|
|
or directly by: func( @a[ <exp> ] )
|
|
if we add passing array elements by reference
|
|
Implemented in HVM and PCODE generation, the compiler has to be
|
|
modified yet to use them.
|
|
* changed last parameter in hb_codeblockGetRef() - I'd like to have
|
|
all variables in hb_struRefer structure in one place: hb_itemUnRefOnce()
|
|
for easier modifications in the future.
|
|
* replaced in hb_struRefer 'itemsbase' with 'array'.
|
|
+ added hb_arrayGetItemRef() to create references to array elements.
|
|
Such reference updates array reference counters.
|
|
* changed STATICs passed by reference to use new array item references.
|
|
! block destructor execution after classy releasing on HVM exit
|
|
|
|
2006-09-18 03:12 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
|
* harbour/include/hbclass.ch
|
|
+ added MESSAGE ... INLINE ... rule
|
|
|
|
* harbour/tests/clsccast.prg
|
|
* harbour/tests/clsicast.prg
|
|
* harbour/tests/clsnv.prg
|
|
* harbour/tests/clsscast.prg
|
|
* harbour/tests/clsscope.prg
|
|
- removed some unnecessary definitions
|
|
|
|
2006-09-18 02:00 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
|
* harbour/source/vm/classes.c
|
|
+ added hb_clsRealMethodName() function which I'm using in some
|
|
test code
|
|
|
|
* harbour/tests/clsscast.prg
|
|
* updated to use __CLS_CNTSHRDATA() instead of __CLS_CNTCLSDATA()
|
|
|
|
* harbour/utils/hbtest/rt_class.prg
|
|
+ added tests for class and shared class variables/allocating
|
|
|
|
2006-09-17 18:52 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu)
|
|
* harbour/tests/testrpt.prg
|
|
! Fixed fatal typo.
|
|
|
|
2006-09-17 18:45 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
|
* xharbour/include/hbvm.h
|
|
* xharbour/source/vm/hvm.c
|
|
+ added hb_vmPushDynSym( PHB_DYNS )
|
|
It should allow most applications to not use [P]HB_SYMB at all.
|
|
Removing PHB_SYMB from 3-rd party .c code may allow us to add
|
|
freeing unused symbol tables from HVM in the future.
|
|
|
|
* harbour/source/vm/classes.c
|
|
* temporary restored hb_objGetpMethod()
|
|
+ added __ClsCntClasses()
|
|
! allocated real methods for OnError and Destructor to keep
|
|
the same behavior in these methods as in any others, f.e.
|
|
scoping checking or debugging.
|
|
|
|
* harbour/common.mak
|
|
* harbour/utils/hbtest/Makefile
|
|
* harbour/utils/hbtest/hbtest.prg
|
|
+ harbour/utils/hbtest/rt_class.prg
|
|
+ added tests for our classy code. Now destructors and instance
|
|
area allocating/casting. Some other in the future.
|
|
|
|
2006-09-16 23:20 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
|
* harbour/contrib/rdd_ads/ads1.c
|
|
* synced with recent Brian fixes in xHarbour
|
|
|
|
* harbour/include/hbapi.h
|
|
+ added 'method' member to hb_struBlock structure
|
|
|
|
* harbour/source/vm/hvm.c
|
|
* initialize 'method' member in hb_struBlock structure
|
|
|
|
* harbour/source/vm/proc.c
|
|
* changed the name of last parameter of hb_procname() from
|
|
bSkipBlock to fMethodName and modified to use information
|
|
about the class of executed codeblock from new hb_struBlock
|
|
members
|
|
|
|
* harbour/source/vm/classes.c
|
|
* removed hb_objGetpMethod() - I hope it's not longer used
|
|
* added real codeblock scoping.
|
|
In Clipper there is no information where the codeblock where
|
|
created and what priviladges/scopes it should has.
|
|
Class(y) to resovle this problem when codeblock is executed scans
|
|
the HVM stack for the nearest method call and takes scopes defined
|
|
for this method. It's a workaround which allow to break standard
|
|
access rights though seems reasonable when it's not possible to
|
|
store information where the block is created. I've added to block
|
|
item structure information about class and method where code block
|
|
was created so we can use the exact method priviladges.
|
|
Now Harbour classy code can work exactly like Class(y) when compiled
|
|
with -DHB_CLASSY_BLOCK_SCOPE and with real code block scoping when
|
|
compiled with -DHB_REAL_BLOCK_SCOPE. I set the second (real code
|
|
block scopes) as default. If you think we should be strict Class(y)
|
|
compatible here then please inform me and I'll change default setting.
|
|
|
|
+ tests/clsscope.prg
|
|
+ added demonstration/test code for class method scoping
|
|
|
|
2006-09-15 21:15 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
|
* harbour/source/vm/arrays.c
|
|
* harbour/source/vm/classes.c
|
|
! fixed multiple use of supercasted object I broke in last commit
|
|
* removed some unused code and moved some scoping checking to
|
|
class creation code
|
|
|
|
2006-09-15 13:25 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
|
* harbour/include/hbvm.h
|
|
* harbour/source/vm/classes.c
|
|
* harbour/source/vm/hvm.c
|
|
+ added hb_vmRequestReenter() and hb_vmRequestRestore()
|
|
+ added executing destructors when some exception is active
|
|
I forgot about it in previous commit.
|
|
|
|
+ harbour/tests/destruct.prg
|
|
+ added example/test code for object destructors
|
|
|
|
2006-09-15 04:55 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
|
+ harbour/doc/destruct.txt
|
|
+ added description for object destructors in Harbour
|
|
|
|
* harbour/include/error.ch
|
|
+ added new error code EG_DESTRUCTOR
|
|
|
|
* harbour/source/lang/msgpl852.c
|
|
* harbour/source/lang/msgpliso.c
|
|
* harbour/source/lang/msgplmaz.c
|
|
* harbour/source/lang/msgplwin.c
|
|
* harbour/source/rtl/langapi.c
|
|
+ added desription for new error code - other language modules
|
|
have to be updated
|
|
|
|
* harbour/include/hbapi.h
|
|
+ added hb_gcRefCheck() and cover some hb_gc* functions by
|
|
_HB_API_INTERNAL_ macro
|
|
|
|
* harbour/source/vm/itemapi.c
|
|
! fixed possible RT error generation when some exception is active
|
|
|
|
* harbour/include/hbapicls.h
|
|
* harbour/include/hbclass.ch
|
|
* harbour/include/hboo.ch
|
|
* harbour/source/rtl/tclass.prg
|
|
* harbour/source/vm/arrays.c
|
|
* harbour/source/vm/classes.c
|
|
+ added support for object destructors
|
|
|
|
* harbour/source/vm/garbage.c
|
|
+ added support for object destructors
|
|
+ added logic to detect buggu .prg code which uses destructors
|
|
see doc/destruct.txt for more info.
|
|
It's also possible that this code will exploit some bugs
|
|
in other code which uses GC allocated memory blocks.
|
|
|
|
2006-09-14 15:23 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu)
|
|
* harbour/tests/testlbl.prg
|
|
! use lower name in report name to work properly on case sensitive
|
|
file systems
|
|
|
|
2006-09-14 15:10 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
|
* harbour/source/vm/garbage.c
|
|
* minor cleanup
|
|
|
|
* harbour/source/rtl/cdpapi.c
|
|
* harbour/include/hbextern.ch
|
|
+ added HB_CDPLIST() - it returns array with all registered CODEPAGEs
|
|
|
|
* harbour/source/rtl/set.c
|
|
! fixed typo in _SET_DEFEXTENSIONS
|
|
|
|
* harbour/tests/testrpt.prg
|
|
! fixed syntax
|
|
! use lower name in report name to work properly on case sensitive
|
|
file systems
|
|
|
|
2006-09-13 20:35 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
|
* harbour/include/hbvm.h
|
|
* harbour/source/vm/hvm.c
|
|
* harbour/source/vm/itemapi.c
|
|
+ added __enumStop() message for "FOR EACH" overloading
|
|
It's guarantied that it will be sent to base item if it is an
|
|
object with such message when FOR EACH ... NEXT will finish its job
|
|
even if it will be interrupted by EXIT or RETURN to allow base object
|
|
clear resources allocated for FOR EACH enumerator. The BREAK exception
|
|
is not supported now. This is sth what I'd like to discuss soon when
|
|
I'll add destructors. Please think now if we should allow to execute
|
|
destructors and other cleanup user code when we are returning to
|
|
nearest expection trap (BEGIN SEQUENCE / [ RECOVER /] END) cleaning
|
|
the HVM stack.
|
|
|
|
2006-09-13 14:00 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
|
* harbour/source/compiler/genc.c
|
|
* harbour/source/compiler/gencli.c
|
|
* harbour/source/compiler/harbour.c
|
|
! fixed number of compiled functions shown in compilation status
|
|
! added workaround for GPF in empty #pragma begindump/enddump
|
|
statement
|
|
|
|
2006-09-13 03:10 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
|
* harbour/source/vm/classes.c
|
|
* keep class shared data in separate array
|
|
+ added __CLS_CNTSHRDATA( hClass ) -> nSharedDatas
|
|
% some minor optimizations
|
|
|
|
* harbour/tests/clsscast.prg
|
|
+ added test code for shared class data allocating and casting
|
|
|
|
* harbour/include/hbapicls.h
|
|
* harbour/source/vm/hvm.c
|
|
* harbour/source/vm/itemapi.c
|
|
+ added support for FOR EACH overloading - it's work in progress
|
|
do not create any code which may use current solution - it may
|
|
change in the nearest future
|
|
|
|
2006-09-12 14:48 UTC+0300 Alexander Kresin <alex@belacy.belgorod.su>
|
|
* source/rtl/cdpapi.c
|
|
! Bug fixed
|
|
|
|
2006-09-12 12:37 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
|
* harbour/source/vm/classes.c
|
|
! fixed typo in adding SHARED CLASS VAR ASSIGN messages
|
|
* some minor cleanup
|
|
|
|
2006-09-11 20:10 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
|
* harbour/include/hbapicls.ch
|
|
* added HB_EXPORT to public functions and some internal covered by
|
|
_HB_API_INTERNAL_ macro
|
|
|
|
* harbour/include/hboo.ch
|
|
+ added HB_OO_CLSTP_NONVIRTUAL and HB_OO_CLSTP_OVERLOADED
|
|
|
|
* harbour/source/rtl/tclass.prg
|
|
! do not add supercast class messages - now it's done automatically
|
|
by __clsNew() function with proper instance area offset updating
|
|
! enumerate instance class datas in __clsAddMsg() from 1 - inherited
|
|
instance variables are managed internally by classy code with
|
|
proper instance area offset updating
|
|
! use __CLS_CNTCLSDATA() as start offset for class data. Do not
|
|
try to calculate it yourself - some of super classes can be ignored
|
|
when they are appear in the inheritance tree more then once so it's
|
|
not possible to calculate class data or instance data start offset
|
|
using simple sum of class or instance variables in super classes.
|
|
|
|
* harbour/source/vm/classes.c
|
|
! fixed instance area casting
|
|
! fixed class variables casting
|
|
! fixed multi-inheritance when the same class can apear more then
|
|
once in super classes tree.
|
|
! Do not add unnecessary instance variables for the same class when
|
|
it's inherited more then once.
|
|
! Do not add unnecessary class variables for the same class when
|
|
it's inherited more then once.
|
|
! Do not add unnecessary initialization class and instance variables
|
|
+ added support for non virtual messages
|
|
+ added support for static and casted scoping
|
|
+ super cast messages added automatically. They are used to dynamic
|
|
recalculation of instance are offsets and to avoid multiple inheritance
|
|
of the same class so please do not overload them or you will have as
|
|
result something what we have before recent modifications in the
|
|
instance and class data area. Just simply run tests/clsccast.prg
|
|
and tests/clsicast.prg compiled with current CVS code and last
|
|
release code or with xHarbour and compare the results.
|
|
Also Class(y) does not pass these tests and I do not know if any
|
|
other dynamic OOP model in xbase languages can properly address it.
|
|
BTW maybe I should add RT error when .prg code will try to delete
|
|
or overwrite class cast message. For me it seems to be reasonable
|
|
and what's your opinion?
|
|
* make hidden class members non virtual by default. It can be disabled
|
|
by compiling classes.c with -DHB_VIRTUAL_HIDDEN but IMHO keeping
|
|
HIDDEN members as virtual causes that they are not really HIDDEN
|
|
because subclasses can simply overwrite them. It also means that
|
|
it's not possible to create class with some private data and
|
|
methods which will never interact with any subclass code created
|
|
by other programmers where name conflict can appear. So one of
|
|
the most important OOP features is missing in such case.
|
|
See tests/clsnv.prg as an example for non virtual hidden members.
|
|
|
|
+ tests/clsicast.prg
|
|
+ added test code for proper instance area allocating and casting
|
|
|
|
+ tests/clsccast.prg
|
|
+ added test code for proper class data allocating and casting
|
|
|
|
+ tests/clsnv.prg
|
|
+ added test code for non virtual hidden class members
|
|
|
|
Now we should be able to create and class model even replicate the
|
|
static one like in C++ using current class engine which still fully
|
|
supports dynamic bindings. It consumes less memory and due to much
|
|
more efficient hashing it should be faster then it was though some
|
|
other minor optimization can be add and I'll plan to make them in
|
|
some spare time.
|
|
The item type verification in assignment is still missing. I'll add
|
|
it when I'll collect some statistic informantion I'd like to ask
|
|
[x]Harbour users. I need these information to tune some internal
|
|
structures where I can balance between speed and memory allocation
|
|
to statistically optimal form.
|
|
|
|
Marek asked me to add passing object datas by reference and I'll do
|
|
that but I'd like to ask Ryszard to add support for:
|
|
Ryszard can you make necessary compiler modifications?
|
|
to compiler. I'll implement all other HVM modifications. If you can
|
|
please also add support for:
|
|
<oVar>:&<cMsgName>[(...)]
|
|
For this we do not need any HVM modifications or new PCODEs.
|
|
We are supporting xBase++ macro list compilation in:
|
|
cList:="1,2,3"
|
|
x := aVar[ &cList ]
|
|
aVar:={ &cList }
|
|
func( &cList )
|
|
But we do not support:
|
|
<oVar>:<message>( &cList )
|
|
IMHO it looks ugly. If we have this syntax for function call then we
|
|
should also support it in message sending.
|
|
Ryszard can you make necessary compiler modifications?
|
|
I'm also thinking about adding support for variable parameters
|
|
func myfunc(...)
|
|
[...]
|
|
return xVar
|
|
In few cases it will help to encode some function much more efficient
|
|
then now.
|
|
|
|
I'll add Class(y) compatible functions used in class(y) header files
|
|
so it will be possible to use original class(y) .ch files in Harbour
|
|
though it will not be the most efficient because we have @func() operator
|
|
which gives better performance then using codeblocks. Anyhow classy
|
|
create separate meta class for each class with CLASS members and
|
|
<clasName>() function always return such meta class object so for full
|
|
Class(y) compatibility we need to generate differ .prg code.
|
|
But all such modifications now can be done on preprocessor and
|
|
.prg level and they will not need .c code modification.
|
|
We should make them to give user interface for our new OOP features.
|
|
|
|
Now I'm waiting for reports about any problems with current classy
|
|
code.
|
|
|
|
2006-09-11 20:30 UTC+0300 Alexander Kresin <alex@belacy.belgorod.su>
|
|
* source/vm/itemapi.c
|
|
! Bug fixed, which was introduced while last commit
|
|
|
|
2006-09-11 16:40 UTC+0300 Alexander Kresin <alex@belacy.belgorod.su>
|
|
* include/hbapicdp.h
|
|
* Changed declaration of hb_cdpcmp() function
|
|
* source/rtl/cdpapi.c
|
|
* hb_cdpcmp() has been changed. It accepts now additional parameters:
|
|
hb_cdpcmp( char* szFirst, ULONG ulLenFirst, char* szSecond, ULONG ulLenSecond, PHB_CODEPAGE cdpage, BOOL bExact ),
|
|
also some bugs fixed.
|
|
* source/vm/itemapi.c
|
|
* source/rdd/dbfntx/dbfntx1.c
|
|
* Calls of hb_cdcmp() has been changed.
|
|
|
|
2006-09-10 14:28 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
|
* harbour/source/vm/classes.c
|
|
* cleaned BCC warning
|
|
|
|
2006-09-10 14:02 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
|
* harbour/ChangeLog
|
|
! added missing changelog entry about __MVPUT() fix
|
|
|
|
* harbour/source/vm/itemapi.c
|
|
* removed redundant pItem->type = HB_IT_NIL (thanks for Manu Exposito)
|
|
|
|
2006-09-10 14:02 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
|
* harbour/ChangeLog
|
|
! added missing changelog entry about __MVPUT() fix
|
|
|
|
* harbour/source/vm/itemapi.c
|
|
* removed redundant pItem->type = HB_IT_NIL (thanks for Manu Exposito)
|
|
|
|
2006-09-10 13:05 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
|
* harbour/include/hbapi.h
|
|
* harbour/source/vm/hvm.c
|
|
* harbour/source/vm/codebloc.c
|
|
* harbour/source/vm/arrays.c
|
|
* moved static base offset from hb_struBlock structure
|
|
to HB_CODEBLOCK structure
|
|
+ added hclass member to hb_struBlock - it will be used in
|
|
the future for checking codeblock scope in classy so we will
|
|
real scope checking also for messages sent from codeblocks.
|
|
- removed supercast and superoffset members from hb_struArray
|
|
structure.
|
|
|
|
* harbour/include/hbclass.ch
|
|
* added class(y) like
|
|
@:<MessageName>([<MsgParams,...>])
|
|
send operator. It's not exactly the same as in class(y) where
|
|
this operator is hardcoded to executing function directly,
|
|
needs method name instead of message name and is linked statically.
|
|
In Harbour this operator uses message name so can be used also for
|
|
instance variables and make dynamic casting to the class from which
|
|
current method is inherited. In short words sending messages to @:
|
|
instead of :: causes that they work like non-virtual messages in
|
|
C++ mode.
|
|
If you do not use the same method body in different classes
|
|
then you can also use explicitly self casting:
|
|
::<myclass>:<msgname>[(...)]
|
|
and it will be a little bit faster
|
|
|
|
* harbour/include/hboo.ch
|
|
+ added: HB_OO_MSG_ASSIGN, HB_OO_MSG_ACCESS,
|
|
HB_OO_MSG_CLSASSIGN, HB_OO_MSG_CLSACCESS
|
|
They should be used insted of HB_OO_MSG_DATA and HB_OO_MSG_CLSDATA
|
|
This resolves problems with name conflicts when we were detecting
|
|
type of message (ACCESS/ASSIGN) by checking the first character
|
|
in message name. F.e. now it's possible to create exported instance
|
|
variable called __WithObject and it will be used in all WITH OBJECT
|
|
statement instead of the base object value. It's simple and effective
|
|
WITH OBJECT overloading.
|
|
I kept backward compatibility for HB_OO_MSG_DATA and HB_OO_MSG_CLSDATA
|
|
but I strongly suggest to update code to use new constants.
|
|
+ added HB_OO_MSG_REALCLASS
|
|
|
|
* harbour/source/rtl/objfunc.prg
|
|
* harbour/source/rtl/tobject.prg
|
|
* harbour/source/rtl/tclass.prg
|
|
* use HB_OO_MSG_[CLS]{ASSIGN,ACCESS} instead of HB_OO_MSG_[CLS]DATA
|
|
|
|
* harbour/source/rtl/tclass.prg
|
|
+ added REALCLASS message to creted classes - it's used for @: operator
|
|
|
|
* harbour/source/vm/classes.c
|
|
* updated for above modifications
|
|
* calculate instance area offset in supercasting dynamically - it
|
|
will allow to eliminate multiple instance area allocating when
|
|
in the inheritance tree the same class exists more then once and
|
|
also quite easy add support for non-virtual messages.
|
|
! fixed GPF in __CLSINSTSUPER() class function generate HVM exception
|
|
% do not inherit unaccessible inline blocks
|
|
* some other minor optimization, fixes and code cleanups
|
|
|
|
* harbour/source/rdd/usrrdd/usrrdd.c
|
|
! fixed HB_TRACE message
|
|
|
|
* harbour/source/rtl/errorapi.c
|
|
! generate internal error if ErrorNew() function does not return an object
|
|
|
|
2006-09-07 16:05 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
|
* harbour/source/vm/memvars.c
|
|
! fixed memvar creation in __MVPUT()
|
|
|
|
2006-09-07 01:55 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
|
* harbour/source/rdd/dbcmd.c
|
|
! always initialize all members in RDD structures to avoid GPF when
|
|
some RDD will try to access uninitialized data
|
|
|
|
* harbour/source/rdd/usrrdd/usrrdd.c
|
|
! added some additional validation in RDD structures <-> item conversions
|
|
|
|
2006-09-06 14:45 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
|
* harbour/source/vm/itemapi.c
|
|
* modified hb_itemClear() to be reentrant safe - the new version
|
|
can be also better optimized by C compiler so should be also faster
|
|
|
|
* harbour/source/rdd/dbcmd.c
|
|
! initialize lpdbOrdCondInfo in DBORDERINFO structure before
|
|
passing to ORDCREATE()
|
|
|
|
* harbour/source/vm/fm.c
|
|
! fixed typo in memset() when HB_PARANOID_MEM_CHECK enabled
|
|
|
|
* harbour/source/vm/hvm.c
|
|
! fixed item type used for iterator
|
|
|
|
2006-09-06 12:02 UTC+0300 Chen Kedem <niki@actcom.co.il>
|
|
* utils/hbrun/hbrun.prg
|
|
* Change Main() into _APPMAIN() to avoid collision with user function
|
|
Default value is .T. (CA-Cl*pper compatible). If set to .F.,
|
|
Harbour runtime/RDD code will never attempt to add a
|
|
default extension to the filename arguments. Commands/functions
|
|
2006-09-05 16:10 UTC+0300 Alexander Kresin <alex@belacy.belgorod.su>
|
|
* source/rtl/cdpapi.c
|
|
! Bug fixed in hb_cdpcmp(), which caused strange comparison results as
|
|
( s1 > s2 ) != ( s2 > s1 ).
|
|
|
|
2006-09-05 15:51 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu)
|
|
* harbour/include/hbset.h
|
|
* harbour/include/set.ch
|
|
* harbour/source/pp/pptable.c
|
|
* harbour/source/rtl/set.c
|
|
+ Added Set( _SET_DEFEXTENSIONS, <logical: .T./.F.> )
|
|
Default value is .T. (CA-Cl*pper compatible). If set to .F.,
|
|
Harbour runtime/RDD code will never attempt to add a
|
|
default extension to the filename arguments. Commands/functions
|
|
where this setting makes a difference are:
|
|
- SET ALTERNATE TO / Set( _SET_ALTFILE_, ... )
|
|
- From now on, it possible to create/load files using the
|
|
above functions/commands which have no extension. This
|
|
- SAVE TO / __mvSave()
|
|
For example on Win32, it's possible to directly print
|
|
- LABEL FORM
|
|
- REPORT FORM
|
|
- COPY TO ... DELIMITED
|
|
- COPY TO ... SDF
|
|
- LIST / __dbList()
|
|
- USE / dbUseArea()
|
|
- dbCreate()
|
|
- SET INDEX TO / ordListAdd() (not yet implemented)
|
|
- __HRBLOAD(), __HRBRUN()
|
|
; Notes:
|
|
- From now on, it possible to create/load files using the
|
|
above functions/commands which have no extension. This
|
|
might be desirable in a few platform and/or situations.
|
|
For example on Win32, it's possible to directly print
|
|
to a shared Windows printer queue, using these commands:
|
|
lOldValue := Set( _SET_DEFEXTENSIONS, .F. )
|
|
SET PRINTER TO \\myserver\myprinter
|
|
Set( _SET_DEFEXTENSIONS, lOldValue )
|
|
Or, it is possible to open a dbf file which has no extension:
|
|
dbUseArea(.T., NIL, "dbf_filename_with_no_extension", "w_DATA", .F., .F.)
|
|
- Compiler is (of course) not affected by this setting.
|
|
- Preprocessor (PP) lib flavour is not affected by this setting.
|
|
- Support is not full in the RDD code yet.
|
|
|
|
* harbour/source/rdd/dbf1.c
|
|
* harbour/source/rdd/dblist.prg
|
|
* harbour/source/rdd/delim1.c
|
|
* harbour/source/rdd/sdf1.c
|
|
* harbour/source/rtl/tlabel.prg
|
|
* harbour/source/rtl/treport.prg
|
|
* harbour/source/rtl/set.c
|
|
* harbour/source/vm/memvars.c
|
|
* harbour/source/vm/runner.c
|
|
+ Honoring _SET_DEFEXTENSIONS setting all over the code.
|
|
|
|
2006-09-05 12:44 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu)
|
|
* harbour/source/debug/debugger.prg
|
|
! Fixed and made multiplatform the filename extension handling parts.
|
|
|
|
* harbour/source/vm/memvars.c
|
|
! Comment minor fixes.
|
|
|
|
* harbour/harbour.spec
|
|
* harbour/make_xmingw.sh
|
|
* harbour/make_bsd.sh
|
|
* harbour/make_drw.sh
|
|
! xharbour -> harbour
|
|
|
|
2006-09-04 19:45 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
|
* harbour/TODO
|
|
+ added simpler example for memory leak in macro compiler:
|
|
? type("user input")
|
|
|
|
! Made the logic multiplatform where it's decided whether to
|
|
* replaced TABs with SPACEs
|
|
C:\PATH.A\MYFILE didn't get the default extension while
|
|
* harbour/source/vm/classes.c
|
|
* added some TRACE() messages
|
|
+ added support for executing functions with <symItem>:EXEC()
|
|
registered dynamically after creating <symItem>
|
|
|
|
* harbour/source/vm/hvm.c
|
|
* minor modification
|
|
|
|
2006-09-04 18:10 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu)
|
|
* harbour/source/rtl/tlabel.prg
|
|
* harbour/source/rtl/treport.prg
|
|
! Made the logic multiplatform where it's decided whether to
|
|
add a default extension to the loaded filename.
|
|
C:\PATH.A\MYFILE didn't get the default extension while
|
|
C:\PATH\MYFILE did.
|
|
|
|
2006-09-04 11:40 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
|
* harbour/include/hbexprc.c
|
|
! fixed bug in wrong integer negating, f.e.:
|
|
proc main(); local i:=0; i-=-32768; ? i; return
|
|
! fixed PCODE generated for +=, -=, /=, *= expressions when right side
|
|
of expression is undefined variable - it's possible that it will be
|
|
field and we will have RT error. It fixes tt4.prg example form TODO
|
|
file.
|
|
|
|
* harbour/TODO
|
|
- removed tt4.prg example from TOFIX
|
|
|
|
* harbour/source/vm/classes.c
|
|
! fixed supercast message validation
|
|
|
|
* harbour/source/vm/hvm.c
|
|
! fixed very bad typo in hb_vmMinus() which can cause wrong
|
|
results when on 64-bit integer overflow
|
|
|
|
2006-09-04 09:25 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
|
* harbour/ChangeLog
|
|
+ harbour/ChangeLog.016
|
|
! added ChangeLog.016 and updated number - mistake in my previous commit
|
|
|
|
* harbour/source/vm/classes.c
|
|
* stronger parameters validation and fixed some possible problems
|
|
in hb_objGetMethod()
|
|
+ added support for assigning enumerator value by:
|
|
<enum>:__enumValue(<newVal>)
|
|
and enumerator index by:
|
|
<enum>:__enumIndex(<newIndex>)
|
|
It's a work in progress - please do not create any code which may
|
|
need such functionality yet
|
|
|
|
* harbour/source/vm/debug.c
|
|
* harbour/source/vm/hvm.c
|
|
* minor code cleanup
|
|
|
|
2006-09-03 18:55 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
|
* harbour/include/hbapicls.h
|
|
* harbour/source/vm/classes.c
|
|
* harbour/source/vm/hvm.c
|
|
* harbour/tests/overload.prg
|
|
+ added support for overloading [] in assignment operation
|
|
|
|
2006-09-03 16:30 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
|
* harbour/ChangeLog
|
|
+ harbour/ChangeLog.016
|
|
* new ChangeLog file created
|
|
* harbour/include/hbver.h
|
|
* updated version number to 0.47.0
|
|
* tagged CVS as build47
|