* 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
% some other optimiztions
! 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
955 lines
39 KiB
Plaintext
955 lines
39 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>
|
|
*/
|
|
|
|
* 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
|