* source/common/hbver.c
+ OS(), hb_verPlatform(): Added detection of Windows Server 2008.
* source/rtl/tobject.prg
! XPP feature guarded with HB_COMPAT_XPP
* source/rtl/tget.prg
! Fixed to not extend ::left(), ::right(), ::backspace(),
::delete() with an internally used (but also externally
accessible) extra parameter. This is interface is now
made fully C5x compatible.
* tests/rto_tb.prg
! Fixed to override __eInstVar53() (instead of _eInstVar())
* include/hbextern.ch
* common.mak
* source/rdd/Makefile
+ source/rdd/dbcmdhb.c
+ Added non-internal versions of __dbPack() and __dbZap(),
named: hb_dbPack() and hb_dbZap(). If group needs it I
can add dbPack() and dbZap() too in separate files to
lessen the problem of name collision with app code.
* source/rtl/inkey.c
* Formatting.
+ HB_KEYPUT(): Now possible to pass an array with string elements.
(see feature in xhb/__KEYBOARD())
* HB_KEYPUT(): For string parameter it now uses hb_inkeySetText()
API, rather than a loop of hb_inkeyPut()s.
* contrib/xhb/xhbfunc.c
! xhb flavour of __KEYBOARD() sync fixed. (hb_inkeySetText() got
extended in xhb, so here we're using hb_inkeyPut() for single
numeric key codes).
; Now same code is used as in HB_KEYPUT().
* source/vm/memvars.c
* source/vm/hvm.c
* source/vm/arrayshb.c
+ Added HB_C52_STRICT branches for the remaining RTEs
which produced different results in hbtest.
! Fixed HB_C52_STRICT RTE for AFill().
; NOTE: It's not possible to build Harbour currently when
HB_C52_STRICT, so it's not easy to test these.
* include/hbclass.ch
! Typos.
* source/rtl/memoedit.prg
* source/rtl/achoice.prg
* source/rtl/treport.prg
* Formatting.
* source/rtl/tobject.prg
* Formatting.
% Minor opt.
* tests/rto_get.prg
* tests/rto_tb.prg
+ Added more tests.
+ Enabled object as array results by default.
+ More details for TGet test results.
* bin/bld_os2.cmd
! Fixed lib names. Thanks David.
* source/rtl/tobject.prg
* Formatting.
* source/rtl/tget.prg
! Delimiter colors in C5.3 mode made compatible.
! ::colorSpec handling in C5.3 mode made compatible
for some invalid parameter types.
! Fixed handling decimals in :row, :col, :pos
methods.
! Fixed to compile in C5.2 mode without warning
(introduced in recent commit).
* source/rtl/tbrowse.prg
! Fixed handling decimals in :nTop, :nBottom, :nLeft, :nRight.
+ Added unfinished XPP method :viewArea()
+ Added untested XPP method :firstScrCol()
; Few minor formatting.
* include/hbextern.ch
* source/rtl/einstvar.prg
+ Added _eInstVar52() which is the C5.2 compatible version
of this function. It also replicates a bug.
* _eInstVar() renamed to _eInstVar53().
* _eInstVar() made a stub to call _eInstVar53().
* source/rtl/checkbox.prg
* source/rtl/listbox.prg
* source/rtl/pushbtn.prg
* source/rtl/radiobtn.prg
* source/rtl/radiogrp.prg
* source/rtl/scrollbr.prg
* source/rtl/symbol.prg
* source/rtl/teditor.prg
* source/rtl/tget.prg
* source/rtl/tget1.prg
* source/rtl/tgetlist.prg
* source/rtl/tmenuitm.prg
* source/rtl/tmenusys.prg
* source/rtl/tpopup.prg
* source/rtl/ttopbar.prg
* Formatting (EXPORT: -> EXPORTED:)
* contrib/hbtip/thtml.prg
* contrib/hbtip/ftpcln.prg
! Fixed to work regardless of SET EXACT setting.
; NOTE: I'd suggest an optional compiler warning
to detect plain "=" usage. It's bad practice
in most cases.
TODO: make_os2_gcc.cmd -> make_gcc_os2.cmd
TODO: TGET test case for my vtgetlst problem.
TODO: TGET fix for the above.
TODO: _eInstVar() -> _eInstVar53()
* harbour/source/rtl/tobject.prg
! fixed the problem with SET EXACT ON I introduced recently by mistake
* harbour/contrib/xhb/txml.prg
* harbour/contrib/hbw32/w32_tole.prg
* harbour/contrib/hbw32/w32_tprn.prg
* replaced some = use for assign or comparison with := or == when
it will have the same meaning.
Looks like some parts of TIP library will not work with SET EXACT ON
and should be updated.
* harbour/include/hbapigt.h
* harbour/source/rtl/gtapi.c
! changed USHORT hb_gtColorToN( char * szColorString ) to
int hb_gtColorToN( char * szColorString ) - it should be the same
type as indexes in hb_gtColorsToString() functions
* harbour/source/rtl/hbgtcore.c
* return -1 from COLORNUM() method when passed color is not
valid color string
* harbour/contrib/hbct/screen2.c
* harbour/contrib/hbct/color.c
* harbour/contrib/hbct/screen1.c
* harbour/contrib/hbct/ctwfunc.c
* harbour/contrib/hbnf/color2n.c
* harbour/contrib/gtwvg/wvtcore.c
* updated to respect -1 returned for wrong color strings
* harbour/source/rtl/tget.prg
* updated to respect -1 returned for wrong color strings
Viktor please check me, now it's simpler and hbtest does not
reports any errors so I guess that this version will work like
in Clipper also for :colorSpec := "R,X,Y,0" or similar
* harbour/source/rtl/tobject.prg
* harbour/source/debug/dbgbrwsr.prg
* formatting
* harbour/source/rdd/dbcmd.c
! update NetErr() in ordListAdd()
If you know other then dbCreate()/dbUseArea() functions which reset
NetErr() flag in Clipper then please report them. We will have to
update our functions (dbSetIndex() is a wrapper to ordListAdd() so
you nay not report it ;))
* harbour/source/rtl/gtstd/gtstd.c
* do not stop Harbour process when controlling terminal has TOSTOP
attribute set (as long as no direct out is done)
* harbour/source/rtl/tclass.prg
* harbour/source/rtl/terror.prg
* harbour/source/rtl/tobject.prg
* set valid class function
* harbour/source/rtl/tmenuitm.prg
* harbour/source/rtl/tpopup.prg
! I think that no one has been checking what these code does for
very long time. Both MenuItem() and PopUp() on each call tries
to create new _CLASSES_ called "MenuItem" and "PopUpMenu"
instead of creating only new instance of these classes (new objects)
Updated to use standard hbclass.ch commands. If possible try
to not create classes manually and always use documented commands
from hbclass.ch
* harbour/include/hbcomp.h
* harbour/include/hbcompdf.h
* harbour/include/hberrors.h
* harbour/include/hbexpra.c
* harbour/include/hbexprb.c
* harbour/include/hbpcode.h
* harbour/include/hbxvm.h
* harbour/source/common/expropt1.c
* harbour/source/compiler/genc.c
* harbour/source/compiler/gencc.c
* harbour/source/compiler/harbour.c
* harbour/source/compiler/harbour.y
* harbour/source/compiler/harbour.yyc
* harbour/source/compiler/hbdead.c
* harbour/source/compiler/hbfix.c
* harbour/source/compiler/hbgenerr.c
* harbour/source/compiler/hblbl.c
* harbour/source/compiler/hbpcode.c
* harbour/source/compiler/hbstripl.c
* harbour/source/vm/hvm.c
+ added support for passing optional parameters to called function, f.e.:
proc p( a, b, ... )
qout( a, b, "X", ... )
* forbid creating function pointer when function is used with parameters,
f.e.: x:=@f1(1,2,3)
* harbour/source/compiler/complex.c
* cleaned all restrictions on reserved words I've found - if I missed
sth then please inform me. The previous behavior and some error
messages are used with -kc compiler switch
* harbour/source/rtl/symbol.prg
* harbour/source/rtl/tobject.prg
! eliminated limitations in number of constructor parameters
(new syntax with passing optional parameters used)
* harbour/bin/hb-func.sh
* harbour/bin/hb-mkslib.sh
* harbour/bin/postinst.sh
* harbour/config/bsd/gcc.cf
* harbour/config/darwin/gcc.cf
* harbour/config/dos/owatcom.cf
* harbour/config/hpux/gcc.cf
* harbour/config/linux/gcc.cf
* harbour/config/linux/owatcom.cf
* harbour/config/os2/gcc.cf
* harbour/config/sunos/gcc.cf
* harbour/config/w32/watcom.cf
* harbour/contrib/rdd_ads/ads1.c
* harbour/contrib/rdd_ads/adsfunc.c
* harbour/include/hbapifs.h
* harbour/include/hbexprc.c
* harbour/include/hbsetup.h
* harbour/source/common/expropt2.c
* harbour/source/common/hbdate.c
* harbour/source/common/hbgete.c
* harbour/source/common/hbstr.c
* harbour/source/common/hbver.c
* harbour/source/common/hbverdsp.c
* harbour/source/compiler/cmdcheck.c
* harbour/source/compiler/fixflex.c
* harbour/source/compiler/gencobj.c
* harbour/source/compiler/genobj32.c
* harbour/source/compiler/harbour.c
* harbour/source/compiler/harbour.l
* harbour/source/compiler/harbour.y
* harbour/source/compiler/harbour.yyc
* harbour/source/compiler/hbfix.c
* harbour/source/compiler/hbfunchk.c
* harbour/source/pp/ppcore.c
* harbour/source/pp/ppgen.c
* harbour/source/pp/pplib.c
* harbour/source/rdd/dbcmd.c
* harbour/source/rdd/workarea.c
* harbour/source/rdd/dbfcdx/dbfcdx1.c
* harbour/source/rdd/dbffpt/dbffpt1.c
* harbour/source/rdd/hsx/hsx.c
* harbour/source/rtl/accept.c
* harbour/source/rtl/ampm.c
* harbour/source/rtl/console.c
* harbour/source/rtl/defpath.c
* harbour/source/rtl/errorint.c
* harbour/source/rtl/filesys.c
* harbour/source/rtl/fkmax.c
* harbour/source/rtl/fstemp.c
* harbour/source/rtl/hbffind.c
* harbour/source/rtl/hbgtcore.c
* harbour/source/rtl/langapi.c
* harbour/source/rtl/seconds.c
* harbour/source/rtl/set.c
* harbour/source/rtl/tobject.prg
* harbour/source/rtl/transfrm.c
* harbour/source/rtl/gtcrs/chrmap.c
* harbour/source/rtl/gtcrs/gtcrs.c
* harbour/source/rtl/gtcrs/gtcrs.h
* harbour/source/rtl/gtpca/gtpca.c
* harbour/source/rtl/gtwvt/gtwvt.c
* harbour/source/rtl/gtxwc/gtxwc.c
* harbour/source/vm/classes.c
* harbour/source/vm/cmdarg.c
* harbour/source/vm/debug.c
* harbour/source/vm/estack.c
* harbour/source/vm/fm.c
* harbour/source/vm/hvm.c
* harbour/source/vm/macro.c
* harbour/source/vm/proc.c
* harbour/source/vm/runner.c
* harbour/utils/hbmake/hbmlang.c
* harbour/utils/hbpp/hbpp.c
* harbour/utils/hbpp/hbppcomp.c
* harbour/utils/hbpp/hbppcore.c
* harbour/utils/hbpp/hbpplib.c
* harbour/utils/hbpp/pragma.c
* harbour/utils/hbver/hbverfix.c
* general code cleanup: all strcpy() and strcat() replaced hb strn*()
and hb_strn*(), sprintf() by snprintf(), etc.
It fixed some possible buffer overflow but it's also possible that
it will exploit some some hidden so far problems but I strongly
prefer to know about them ASAP to fix them before final 1.0 release.
! fixed bug I introduce in codeblock falgs which disabled early macro
evaluation in codeblocks.
! added missing protection against execution by bison destructor for
used CBSTART token on syntax error.
% use PP stringify logik added for FLEX support to remove all redundant
spaces in stringified for early macro evaluation codeblocks and add
spaces between operators if after preprocessing they were removed.
Now we are supporting also some code which cannot be compiled by
Clipper.
% cleaned and improved the speed of printer redirecting in console code.
Chen please check if CG still reports problems and if not ubdate
TODO/TOFIX or inform me about them.
* some cleanups in building process for different *nixes: MacOSX, SunOS,
*BSD, etc.
* removed not longer necessary (I hope) compiler flag to force default
'char' type as signed. Now Harbour should work with signed and unsigned
char without any problems. To other developers: please remember that
when you are using 'char' as 8 bytes signed integer then it's a bug.
Always explicitly use: 'signed char' in such case. On some platforms
it's not possible to set default type for 'char' so if you hardcode
that 'char' is signed or unsigned somewhere then code will not be
portable. Chen if you will find a while to also rebuild Harbour with
BCC and -K switch to make some tests with CG then I'll be thankful.
* 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
* harbour/source/rdd/usrrdd/usrrdd.c
+ added functions to set WorkArea flags USRRDD_SETBOF, USRRDD_SETEOF,
USRRDD_SETFOUND, USRRDD_SETTOP, USRRDD_SETBOTTOM
* harbour/include/hbapierr.h
+ added HB_ERR_ARGS_BASEPARAMS
* harbour/source/rtl/errorapi.c
! check if ARGS passed to __ERRRT_BASE() and __ERRRT_SBASE() are
valid to avoid possible GPF
* replaced old hack with passing ARGS in array for some chosen errors
by HB_ERR_ARGS_BASEPARAMS in hb_errRT_BASE and hb_errRT_BASE_SubstR
- it was impossible to generate Clipper compatible error message
* harbour/source/rtl/do.c
* use HB_ERR_ARGS_BASEPARAMS
* harbour/source/rtl/tobject.prg
* assign SELF to ARGS of error object when EG_NO[VAR]METHOD RT error
is generated - Clipper compatible.
* harbour/source/vm/classes.c
* added __msgNoMethod which is returned to hb_vmSend when object does
not support requested message. This handler can display previous
Harbour error message though now it's disabled and Clipper compatible
error message is generated. I leave the decision to Harbour users
which version of error message should be used.
* changed __msgClsSel to return variable size array with only valid items
If some code needs fixed size array then it will have to be updated
* harbour/source/vm/hvm.c
* generate Clipper compatible error messages for EG_NO[VAR]METHOD
and EG_NOFUNC. Please do not change it. If you want previous Harbour
error messages for EG_NO[VAR]METHOD then please change __msgNoMethod
in classy.c
* harbour/source/vm/arrays.c
* minor modification
* include/hbpp.h
* source/compiler/harbour.c
* source/pp/ppcore.c
* Modified hb_pp_SetRules() to receive 2nd parameter BOOL hb_comp_bQuiet, since ppcore is part of PP.lib which is linked
into HBRUN.exe which does not include harbour.c where hb_comp_bQuiet is defined.
* source/compiler/harbour.l
! Fixed parse error on IF [...]
* source/vm/classes.c
Posted patch provided by JF
* source/rtl/tobject.prg
Posted missing file provided by JF