* 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
576 lines
24 KiB
Plaintext
576 lines
24 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/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
|