* harbour/source/vm/garbage.c
- removed unnecessary memset()
* harbour/source/vm/hvm.c
% use startup initialized symbols: hb_symEnumIndex, hb_symEnumBase,
hb_symEnumValue instead of strcmp( pSym->szName, ... ) in hb_vmSend()
% remove unnecessary temporary item in hb_vmEnumStart() and use
hb_itemMove() instead of hb_itemCopy()+hb_itemClear()
% changed main VM loop to eliminate one comparision done on each
loop. Now HB_P_ENDBLOCK and HB_P_ENDPROC pcodes set HB_ENDPROC_REQUESTED
and the main loop can be exited only from one place. It gives some
small but noticeable speed improvement.
Ryszard please check this modification. AFAIK it should not cause
any bad side effect and IMHO the code is cleaner now.
* harbour/source/vm/itemapi.c
% removed two unnecessary hb_itemClear() before hb_itemRelease()
* include/hbapi.h
* include/hbapiitm.h
* include/hbcomp.h
* include/hberrors.h
* include/hbexpra.c
* include/hbpcode.h
* include/hbsetup.h
* source/common/expropt1.c
* source/compiler/expropta.c
* source/compiler/genc.c
* source/compiler/gencli.c
* source/compiler/harbour.c
* source/compiler/harbour.l
* source/compiler/harbour.y
* source/compiler/hbfix.c
* source/compiler/hbgenerr.c
* source/compiler/hbpcode.c
* source/macro/macroa.c
* source/vm/hvm.c
* source/vm/itemapi.c
+ tests/foreach.prg
+ added support for FOR EACH loop
FOR EACH var1 [,var255] IN expr1 [,expr255] [DESCEND]
NEXT
Note:
-expr can be a string or an array
if it is a string then assigments to the control
variable does not change the string
-after the loop the controlling variable(s) store the
value which they had before entering the loop
-the controlling variable supports the following properties
:__enumindex - the loop counter for variable
:__enumbase - the value that is being traversed
:__enumvalue - the value of variable
-see tests/foreach.prg for examples
+ added warnings in cases of duplicated loop variables
eg. FOR i:=1 TO 5
FOR i:=i TO i+5
-removed strong typing in the compiler (xHarbour too)
(reactivate it by compiling with -DHB_COMP_STRONG_TYPES)
NOTE:
The new pcodes were added - rebuild everything
* harbour/include/hbapi.h
* harbour/include/hbapiitm.h
* harbour/include/hbapirdd.h
* harbour/include/hbdefs.h
* harbour/include/hbtypes.h
* harbour/source/rtl/empty.c
* harbour/source/vm/arrays.c
* harbour/source/vm/extend.c
* harbour/source/vm/hvm.c
* harbour/source/vm/itemapi.c
* harbour/source/vm/maindllp.c
+ added HB_TYPE to as HB_ITEM type marker.
* set HB_TYPE as UINT32
* updated to the above modifications
* cleaned some ~HB_IT_BYREF which has no effect in current VM
* harbour/harbour.spec
* harbour/make_tgz.sh
* harbour/bin/hb-func.sh
* harbour/bin/pack_src.sh
* harbour/config/global.cf
* harbour/include/hbapiitm.h
* harbour/include/hbdate.h
* harbour/include/hbextern.ch
* harbour/source/rdd/dbcmd.c
* harbour/source/rdd/dbf1.c
* harbour/source/rdd/workarea.c
* harbour/source/rdd/dbfntx/dbfntx1.c
* harbour/source/rtl/dates.c
* harbour/source/vm/hvm.c
* harbour/source/vm/itemapi.c
* updated for proper RDD synchronization with xHarbour
* harbour/contrib/rdd_ads/ads0.prg
* harbour/contrib/rdd_ads/ads1.c
* harbour/contrib/rdd_ads/adsfunc.c
* harbour/contrib/rdd_ads/rddads.h
* synced base of ADS RDD with xHarbour - old code cannot be compiled
without it - external ADS*() functions not synced - I do not use them
and I do not want to break sth - Harbour ADS developers should check it
* config/dos/global.cf
*restored creation of subdirectiories under plain DOS
* include/hbapi.h
* include/hbcomp.h
* include/hbdefs.h
* include/hbvm.h
* source/compiler/genc.c
* source/compiler/harbour.c
* source/compiler/hbpcode.c
* source/vm/dynsym.c
* source/vm/hvm.c
* source/vm/macro.c
*modified creation of symbols table
*symbol of function name never share a symbol of variable
*symbol for INIT/EXIT procedure has now '$' suffix - this means
that such procedures cannot be called from user code
(Clipper compatible)
See the following code:
PROCEDURE MAIN
aaa()
RETURN
INIT PROCEDURE aaa
? "In INIT procedure", PROCNAME(0)
RETURN
STATIC PROCEDURE aaa
? "In STATIC procedure", PROCNAME(0)
RETURN
It will print:
In INIT procedure aaa$
In STATIC procedure aaa
*fixed access to static functions in a macro compiler (symbols for
static functions never goes into dynamic symbols table)
* source/pp/ppcore.c
*increased numer of nested optional clauses (max 5 currently - work
in progress)
* harbour/source/vm/memvars.c
* fixed public releasing - fix borrowed from xHarbour
Ryszard please check if it doesn't cause any bad side effects.
The following code demonstrate the problem.
===========================================
memvar x, y, z
proc main()
local l := { || x }
public x := "QWE"
private z := "asd"
Errorblock( { | oError | errHandler( oError ) } )
? eval( l )
test()
? x
? z
? eval( l )
return
proc test()
private y := "xyz"
release x, y, z
? x
? y
? z
return
func errHandler( oErr )
local varName := oErr:operation()
public &varName := oErr:description() + ": " + varName
return .t.
===========================================
* xharbour/contrib/rdd_ads/ace.h
* small modification for OpenWatcom on Linux
* xharbour/source/rdd/dbfntx/dbfntx1.c
* minor fix: use *_GOTO( pArea, 0 ) instead
of *_GOTO( pArea, pArea->ulRecCount+1000 )
+ use hb_fsSeekLarge() - for DBFs longer then 2GB
* xharbour/include/hbrddcdx.h
* xharbour/source/rdd/dbfcdx/dbfcdx1.c
+ use hb_fsSeekLarge() - for DBFs longer then 2GB
* my last xHarbour modifications:
improved indexing speed of DBFs with very big number of
records. In small DBFs less then 100'000 records the new
algorithm can even decrease the speed by ~0.5% due to static
costs but in bigger it becomes faster. For 1'000'000 records
DBFs is about 20% faster, for 10'000'000 records about twice
faster. With bigger DBFs more. Please test it. If you will
have any troubles (I hope not) then please comment out in
dbfcdx.c:
#define HB_CDX_NEW_SORT
I should done it before when I was rewriting the indexing but
sorry I was too lazy. Now I've found a while. Current cost of
key comparisons is always n*log2(n) and cannot be more improved.
Some small optimizations still can be done but the static cost
for small database will be bigger then ~0.5% as in this case
so I do not plan to do it in the nearest future.
* harbour/include/dbinfo.ch
* harbour/source/rdd/dbf1.c
+ use hb_fsSeekLarge() - for DBFs longer then 2GB
* synched with xHarbour (added DBRI_RAW*)
* do not call GOCOLD() inside CHILDSYNC() but do it in FORCEREL()
the modification based on CL5.3 NG.
Below is a note I lef in dbf1.c:
/*
* !!! The side effect of calling GOCOLD() inside CHILDSYNC() is
* evaluation of index expressions (index KEY and FOR condition)
* when the pArea is not the current one - it means that the
* used RDD has to set proper work area before eval, DBFCDX does
* but DBFNTX not yet - it should be changed.
* IMHO GOCOLD() could be safely removed from this place but I'm not
* sure it's Clipper compatible - I will have to check it, Druzus.
*/
/*
* I've checked in CL5.3 Technical Reference Guide that only
* FORCEREL() should ensure that the work area buffer is not hot
* and then call RELEVAL() - I hope it describes the CL5.3 DBF* RDDs
* behavior so I replicate it - the GOCOLD() is moved from CHILDSYNC()
* to FORCEREL(), Druzus.
*/
* harbour/source/rdd/dbf0.prg
* harbour/source/rdd/delim0.prg
* harbour/source/rdd/rddsys.prg
* harbour/source/rdd/sdf0.prg
* harbour/source/rdd/dbfntx/dbfntx0.prg
* formatting (adding EOL at EOF)
* harbour/include/hbapifs.h
* harbour/source/rtl/filesys.c
* added hb_fsLockLarge() and hb_fsSeekLarge() which uses 64bit ofsets
* harbour/source/rdd/workarea.c
* set current work area to the used one in EVALBLOCK RDD method
before code block evaluation
* harbour/source/vm/harbinit.prg
* harbour/source/vm/hvm.c
+ added hb_vmDoInitClip() which calls CLIPINIT function to initialize
ErrorBlock() and __SetHelpK()
Because on some platform the execution order of init functions
is out of Harbour control then CLIPINIT has to be called explicitly
in VM initialization process before hb_vmDoInitFunctions() and do not
depends on INIT clause.
* small modification in VM loop which gives noticeable speed-up
* harbour/hbgtmk.sh
* harbour/make_rpm.sh
* harbour/harbour.spec
* added flex to dependences
* added --without gpl swich to exclude code which needs 3-rd party
GPL libs (GPM, SLANG) - necessary for people who want to create
commercial closed source application
* harbour/make_gnu.sh
* modified DJGPP detection - try to use env var first
* set HB_GT_LIB depending on platform information
* check PREFIX env var for default installation
* harbour/make_tgz.sh
* modified to work with DJGPP and 8.3 file names
* harbour/bin/hb-func.sh
* DJGPP support
* harbour/bin/pack_src.sh
* autodetect Harbour version number
* harbour/config/linux/gcc.cf
* added small comment
+ harbour/config/linux/owatcom.cf
+ OpenWatcom support on Linux
* harbour/config/w32/global.cf
* harbour/config/w32/mingw32.cf
* small modification in clean procedure
+ added Phil's modification for MINGW cross compilation in Linux and BSD
* harbour/source/compiler/gencobj.c
+ added Phil's modification for MINGW cross compilation in Linux and BSD
* harbour/include/hbsetup.h
* added OS_HAS_DRIVE_LETTER, OS_PATH_DELIMITER_STRING, OS_FILE_MASK,
OS_DRIVE_DELIMITER and HOST_OS_UNIX_COMPATIBLE
* modified for OW on Linux and MINGW cross compilation
* added snprintf macro for compilers which do not support it
* harbour/source/rtl/mod.c
! fixed bug in mod(a,b) when a/b exceeds LONG limit
* harbour/source/rtl/filesys.c
* removed HB_FS_DRIVE_LETTER - use OS_HAS_DRIVE_LETTER
* modified for OW on Linux and MINGW cross compilation
* harbour/contrib/libct/files.c
* harbour/include/hb_io.h
* harbour/include/hbdefs.h
* harbour/source/rtl/diskspac.c
* harbour/source/rtl/disksphb.c
* harbour/source/rtl/fssize.c
* harbour/source/rtl/fstemp.c
* harbour/source/rtl/hbffind.c
* harbour/source/rtl/net.c
* harbour/source/rtl/seconds.c
* harbour/source/rtl/gtcrs/Makefile
* harbour/source/rtl/gtcrs/kbdcrs.c
* harbour/source/rtl/gtpca/gtpca.c
* harbour/source/rtl/gtsln/Makefile
* harbour/source/rtl/gtsln/gtsln.c
* harbour/source/rtl/gtsln/kbsln.c
* harbour/source/rtl/gtstd/gtstd.c
* harbour/source/vm/hvm.c
* harbour/source/vm/mainstd.c
* harbour/source/vm/mainwin.c
* modified for OW on Linux and MINGW cross compilation
* harbour/source/vm/memvars.c
- removed unnecessary checking for s_globalTable == NULL in
hb_memvarValueDecRef() - in Harbour it cannot happen
* harbour/source/vm/itemapi.c
- removed snprintf macros (see hbsetup.h)
* fixed possible GPF in hb_itemCopyC()
* modified hb_itemGetPtr() to check item type
* include/hbcomp.h
* include/hbexprb.c
* include/hbmacro.h
* source/compiler/exproptb.c
* source/compiler/harbour.c
* source/compiler/hbgenerr.c
* source/macro/macrob.c
* source/vm/macro.c
* compiler reports error on the following syntax now (Clipper
compatibility):
{|| ¯ovar <operator> anysymbol}
"codeblock contains both macro and declared symbol reference"
Notice, that Clipper reports error even in this case:
MEMVAR mvar
{|| &mvar,mvar}
* source/vm/memvars.c
* restored initial and expand sizes for memvars table
* source/pp/ppcore.c
* some empty lines added
* include/hbapi.h
* source/vm/codebloc.c
* source/vm/itemapi.c
* source/vm/memvars.c
* fixed memvars and detached locals handling related to reallocation
of memvar's buffer and detaching of locals in a loop
- thanks to Przemek
* source/vm/debug.c
*removed diagnostic hb_dbgstop()
+ harbour/config/hpux/dir.cf
+ harbour/config/hpux/gcc.cf
+ harbour/config/hpux/global.cf
+ harbour/config/hpux/install.cf
* Marcelo's files build files for HPUX borrowed from xHarbour
* harbour/bin/hb-func.sh
* harbour/bin/hb-mkslib.sh
* harbour/bin/postinst.sh
* recent Phil's changes for Darwin and some of mine modifications and
cleanups
* harbour/include/Makefile
+ added some missing header files
* harbour/include/hbapi.h
+ added HB_ITEM_{GET|PUT}_NUMINTRAW() macros
+ added hb_objGetClass()
* harbour/include/hbdefs.h
* redefined multi commands macros to use do {...} while(0) for safe
use in any of C statement
+ added HB_OS_HPUX
* harbour/include/hbsetup.h
+ added HB_OS_HPUX
* harbour/include/hbstack.h
* hb_stackDec(), hb_stackPop(), hb_stackPush() redefined also as macros
when HB_STACK_MACROS is set
+ added function hb_stackIncrease()
* harbour/source/common/hbstr.c
* fixed possible buffer overflow
* harbour/include/hbrdddbf.h
* harbour/source/rdd/dbf1.c
* harbour/source/rdd/workarea.c
* harbour/source/rdd/dbfcdx/dbfcdx1.c
* harbour/source/rdd/dbfdbt/dbfdbt1.c
* harbour/source/rdd/dbffpt/dbffpt1.c
* my recent fixes in xHarbour
* harbour/source/rtl/copyfile.c
* small fix to error message
* harbour/source/rtl/idle.c
+ added HB_IDLESLEEP() and
void hb_idleSleep( double dSeconds )
* harbour/source/rtl/isprint.c
* use hb_xgrab()/hb_xfree() instead of malloc()/free()
* harbour/source/rtl/run.c
* added __WATCOMC__ to C compilers supporting system()
* harbour/source/vm/arrays.c
* cleaned hb_arrayFromStack(), hb_arrayFromParams()
* harbour/source/vm/arrayshb.c
* small fixes to error messages
! improved Clipper compatibility in AFILL()
* harbour/source/vm/asort.c
* separate entry for integer items - conversion to double may
damage big 64bit numbers
* harbour/source/vm/classes.c
+ added USHORT hb_objGetClass( PHB_ITEM pItem )
* harbour/source/vm/dynsym.c
! fixed accessing to uninitialized memory
* harbour/source/vm/estack.c
+ added hb_stackIncrease() and modification for new stack macros
* harbour/source/vm/hvm.c
* fixed some error messages
* some speed improvements
* harbour/source/vm/itemapi.c
* some small optimizations
* harbour/utils/hbtest/rt_misc.prg
* modified file name conversions test results for __PLATFORM__UNIX
* harbour/config/bsd/global.cf
+ added suppot for HB_COMMERCE and HB_WITHOUT_GTSLN env vars
* harbour/source/compiler/Makefile
* formating
* harbour/include/hbdefs.h
* harbour/source/vm/fm.c
* harbour/source/vm/garbage.c
+ added macro HB_ALLOC_ALIGNMENT which forces allocated memory
alignment in FM and GC modules to given value - by default used
only when set HB_OS_SUNOS with 8 bytes alignment
* harbour/bin/postinst.sh
* changed install command syntax for Solaris compatibility
* harbour/include/hbdefs.h
* minor formating
* harbour/source/vm/fm.c
+ overwrite HB_MEMINFO_SIGNATURE with 0 in hb_xfree() for detection
redundant hb_xfree() call with the same pointer
* harbour/source/rtl/spfiles.c
* set the real path in second parameter of RetPath even when
hb_spFiles fails to avoid race condition
* harbour/source/vm/hvm.c
! set proper decimal value in hb_vmDivide when the integer results
is converted into double
! commented out integer division optimization at runtime for Clipper
compatibility
* harbour/bin/hb-func.sh
* changed 'sed' and 'tr' expresions to be compatible with SunOS
+ added Darwin dynlib support borrowed from xHarbour thanks
to Phil Krylov
* harbour/bin/hb-mkslib.sh
* minor modification
* harbour/bin/postinst.sh
* harbour/config/darwin/gcc.cf
+ Phil's modification for Darwin
* removed HB_OS_BSD and HB_BIG_ENDIAN - the first macro is set in
hbsetup.h when HB_OS_DARWIN is set, the second one should be
automatically detected inside hbdefs.h using C header files.
* harbour/config/sunos/gcc.cf
* removed HB_BIG_ENDIAN macro - the same as above
* harbour/include/hbapi.h
* harbour/source/vm/fm.c
* changed 16/32 bit hack #if UINT_MAX == ULONG_MAX for hb_xmem*()
functions to still not perfect but working on current platforms
#if UINT_MAX > USHRT_MAX
* harbour/include/hbdefs.h
+ added HB_DBL_LIM_INT24(d) and HB_LIM_INT24(l) macros
+ try to autodect byte order using information form system C header
files - it whoud work for Linux, BSD/Darwin, SunOS - maybe also
for some other *nixes
* removed some dangerous casting. [x]Harbour code still depnds on
8bytes double - in CDX for binary compatibility IEEE754 double is
necessary - if some architectures uses differ type of double value
for binary compatibility we will have to create proper conversion
functions for HB_{PUT|GET}_{LE|BE}_DOUBLE and HB_ORD2DBL/HB_DBL2ORD
macros
* harbour/include/hbsetup.h
* define HB_OS_UNIX when HB_OS_SUNOS set
* harbour/source/common/hbstr.c
* harbour/source/pp/ppcore.c
* casting
* harbour/source/compiler/harbour.c
* use HB_LIM_INT*() macros instead of hard coded values
* removed some unnecessary if () statement - always true
* harbour/source/compiler/harbour.l
* harbour/source/compiler/hbfix.c
* harbour/source/vm/macro.c
* use HB_LIM_INT*() macros instead of hard coded values
* harbour/source/rdd/dbfcdx/dbfcdx1.c
! minor fix
* harbour/source/rdd/dbfntx/dbfntx1.c
! small fix - the temporary index file was not removed
* do not force any name for temporary index files - important
in some cases (like DOS and short file names)
* harbour/source/rtl/diskspac.c
! fixed type in SunOS version
* harbour/source/rtl/gtsln/Makefile
* minor cleanups
* harbour/utils/hbtest/rt_math.prg
* changed to number results to be Clipper compatible.
* harbour/bin/hb-func.sh
* harbour/bin/pack_src.sh
+ harbour/config/sunos/dir.cf
+ harbour/config/sunos/gcc.cf
+ harbour/config/sunos/global.cf
+ harbour/config/sunos/install.cf
+ added SunOS support
* harbour/config/darwin/gcc.cf
* small modification for nicer work with OS-X installed
on SF compile farm - I'm not Darwin user and SF is the only
one place I can make tests - if someone may fix me and leave
some comments 'why?' it will be nice.
* harbour/contrib/Makefile
* exclude ADS RDD from Darwin build
* harbour/contrib/rdd_ads/adsfunc.c
* some minor modification to avoid compiler warnings.
* harbour/include/hbdefs.h
* fixed typo in HB_PUT_LE_DOUBLE() macro for big endian machines.
* harbour/source/compiler/genc.c
! fixed endian dependend code I left by mistake
* harbour/source/compiler/harbour.c
* harbour/source/compiler/harbour.sly
* harbour/source/compiler/harbour.y
! commented out hb_compSequenceFinish()
* harbour/source/pp/ppcore.c
+ added ( void * ) size as result of __ARCH{16,32,64}BIT__ and
__{LITTLE,BIG,PDP}_ENDIAN__ macros
* harbour/source/pp/pragma.c
! fixed possible string overflow
* harbour/source/vm/itemapi.c
* harbour/source/rtl/diskspac.c
* harbour/source/rtl/disksphb.c
* harbour/source/rtl/fstemp.c
* harbour/source/rtl/idle.c
* harbour/source/rtl/math.c
* harbour/source/rtl/gtcrs/Makefile
* harbour/source/rtl/gtcrs/gtcrs.c
* harbour/source/rtl/gtcrs/kbdcrs.c
* harbour/source/rtl/gtcrs/mousecrs.c
* modified for SunOS and Darwin support.
* harbour/include/hbdefs.h
* harbour/source/rdd/dbf1.c
* harbour/source/rdd/workarea.c
* harbour/source/rdd/dbfcdx/dbfcdx1.c
* foramting some // replaced by /* */
* harbour/source/vm/maindllp.c
* fixed Windows compilation
The BCC and MSC make fiels have to be updated to the folowing changes:
- harbour/contrib/libct/invertwin.prg
+ harbour/contrib/libct/invrtwin.prg
- harbour/source/common/hbffind.c
+ harbour/source/common/hbverdsp.c
- harbour/source/rdd/dbfcdx/dbfcdx1.h
+ harbour/source/rtl/hbffind.c
* harbour/Makefile
+ harbour/make_bsd.sh
+ harbour/make_drw.sh
* harbour/make_tgz.sh
+ harbour/bin/hb-func.sh
* harbour/bin/pack_src.sh
+ harbour/bin/postinst.bat
+ harbour/bin/postinst.sh
* harbour/config/dir.cf
* harbour/config/bsd/gcc.cf
* harbour/config/bsd/global.cf
+ harbour/config/darwin/dir.cf
+ harbour/config/darwin/gcc.cf
+ harbour/config/darwin/global.cf
+ harbour/config/darwin/install.cf
* harbour/config/dos/dir.cf
* harbour/config/dos/global.cf
* harbour/config/dos/install.cf
* harbour/config/dos/owatcom.cf
* harbour/config/dos/watcom.cf
* harbour/config/linux/gcc.cf
* harbour/config/linux/global.cf
* harbour/contrib/Makefile
* harbour/contrib/dot/pp_harb.ch
* harbour/contrib/libct/Makefile
* harbour/contrib/libct/bit1.c
* harbour/contrib/libct/bit2.c
* harbour/contrib/libct/bit3.c
* harbour/contrib/libct/files.c
* harbour/contrib/libct/ftoc.c
- harbour/contrib/libct/invertwin.prg
+ harbour/contrib/libct/invrtwin.prg
* harbour/contrib/libct/keyset.c
* harbour/contrib/libct/makefile.bc
* harbour/contrib/libmisc/dates2.c
* harbour/contrib/rdd_ads/ads1.c
* harbour/contrib/rdd_ads/adsfunc.c
* harbour/contrib/samples/date.c
* harbour/include/dbinfo.ch
* harbour/include/hbapi.h
* harbour/include/hbapicdp.h
* harbour/include/hbapifs.h
* harbour/include/hbapigt.h
* harbour/include/hbapiitm.h
* harbour/include/hbcomp.h
* harbour/include/hbdate.h
* harbour/include/hbdbf.h
* harbour/include/hbdbferr.h
* harbour/include/hbdefs.h
* harbour/include/hbexprb.c
* harbour/include/hbexprc.c
* harbour/include/hbexprop.h
* harbour/include/hbmacro.h
* harbour/include/hbmath.h
* harbour/include/hbpcode.h
* harbour/include/hbrddcdx.h
* harbour/include/hbrdddbf.h
* harbour/include/hbrdddbt.h
* harbour/include/hbrddfpt.h
* harbour/include/hbrddntx.h
* harbour/include/hbset.h
* harbour/include/hbsetup.h
* harbour/include/set.ch
* harbour/source/common/Makefile
* harbour/source/common/expropt1.c
* harbour/source/common/expropt2.c
- harbour/source/common/hbffind.c
* harbour/source/common/hbfsapi.c
* harbour/source/common/hbstr.c
* harbour/source/common/hbver.c
+ harbour/source/common/hbverdsp.c
* harbour/source/compiler/genc.c
* harbour/source/compiler/gencli.c
* harbour/source/compiler/harbour.c
* harbour/source/compiler/harbour.l
* harbour/source/compiler/harbour.slx
* harbour/source/compiler/harbour.sly
* harbour/source/compiler/harbour.y
* harbour/source/compiler/hbfix.c
* harbour/source/compiler/hbpcode.c
* harbour/source/compiler/hbusage.c
* harbour/source/compiler/simplex.c
* harbour/source/macro/macro.l
* harbour/source/macro/macro.slx
* harbour/source/macro/macro.y
* harbour/source/pp/ppcore.c
* harbour/source/rdd/dbcmd.c
* harbour/source/rdd/dbf1.c
* harbour/source/rdd/dbfcdx/dbfcdx1.c
- harbour/source/rdd/dbfcdx/dbfcdx1.h
* harbour/source/rdd/dbffpt/dbffpt1.c
* harbour/source/rdd/dbfntx/dbfntx1.c
* harbour/source/rtl/Makefile
* harbour/source/rtl/abs.c
* harbour/source/rtl/at.c
* harbour/source/rtl/datec.c
* harbour/source/rtl/dates.c
* harbour/source/rtl/dateshb.c
* harbour/source/rtl/datesx.c
* harbour/source/rtl/empty.c
* harbour/source/rtl/errorapi.c
* harbour/source/rtl/errorint.c
* harbour/source/rtl/filesys.c
* harbour/source/rtl/fstemp.c
+ harbour/source/rtl/hbffind.c
* harbour/source/rtl/hbrandom.c
* harbour/source/rtl/idle.c
* harbour/source/rtl/inkey.c
* harbour/source/rtl/math.c
* harbour/source/rtl/minmax.c
* harbour/source/rtl/pad.c
* harbour/source/rtl/padc.c
* harbour/source/rtl/padl.c
* harbour/source/rtl/padr.c
* harbour/source/rtl/philes.c
* harbour/source/rtl/round.c
* harbour/source/rtl/soundex.c
* harbour/source/rtl/str.c
* harbour/source/rtl/strcase.c
* harbour/source/rtl/strmatch.c
* harbour/source/rtl/strtran.c
* harbour/source/rtl/strzero.c
* harbour/source/rtl/substr.c
* harbour/source/rtl/val.c
* harbour/source/rtl/gtcrs/gtcrs.c
* harbour/source/rtl/gtcrs/kbdcrs.c
* harbour/source/rtl/gtdos/gtdos.c
* harbour/source/rtl/gtsln/gtsln.c
* harbour/source/rtl/gtsln/kbsln.c
* harbour/source/rtl/gtsln/keytrans.c
* harbour/source/vm/arrays.c
* harbour/source/vm/codebloc.c
* harbour/source/vm/estack.c
* harbour/source/vm/eval.c
* harbour/source/vm/extend.c
* harbour/source/vm/hvm.c
* harbour/source/vm/itemapi.c
* harbour/source/vm/macro.c
* harbour/source/vm/memvars.c
* harbour/source/vm/runner.c
* harbour/tests/bldtest/bldtest.c
* harbour/utils/hbtest/hbtest.prg
* harbour/utils/hbtest/rt_misc.prg
* harbour/utils/hbtest/rt_str.prg
* Sorry but it's too much modification for full description
cvs diff gives file 785982 bytes length. So I only count the
main things:
! cleand the code (no more warning messages under Linux and GCC and
DOS OpenWatcom) - some of them were real bugs
! cleaned all endian dependend code I've found - now Harbour can be
compiled on LITLE and BIG endian machines - for some other like
PDP ENDIAN it's enough to define proper macros in hbdefs.h
+ added macros for to get/put values in chosen byte order:
HB_GET_LE_[U]INT{16,24,32,64}( pPtr )
HB_GET_BE_[U]INT{16,24,32,64}( pPtr )
HB_PUT_LE_[U]INT{16,24,32,64}( pPtr, nVal )
HB_PUT_BE_[U]INT{16,24,32,64}( pPtr, nVal )
+ added macro HB_CAST_BYTE_NUMBERS_OFF which disables casting in
HB_{GET|PUT}_{LE|BE}_* macros - it's necessary for some platforms
like ALPHA DEC.
! cleaned the code for 64bit machines
* changed all parameters in hb_date* functions (day, month, year, week)
from LONG to int - it doesn't change binary compatibility for 32bit
machines but can cause troubles with compiling the old source
+ changed HB_IT_LONG type to HB_LONG which is mapped to long long
by default for 32 bit machines.
+ change HB_IT_INTEGER to be real 'int' C type not 'short int'
+ added HB_IS_NUMINT() macro
+ added hb_parnll, hb_stornll, hb_retnll, hbretnlllen, hb_itemPutNLL,
hb_itemPutNLLLen, hb_itemGetNLL which operates on LONGLONG
+ added hb_parnint, hb_stornint, hb_retnint, hb_retnintlen,
hb_itemPutNInt, hb_itemPutNIntLen, hb_itemGetNInt which operates on
HB_LONG
+ added HB_PUSHLONGLONG pcode
+ changed compiler and optimizer to use HB_LONG numbers and reduce
conversion from to double which may damage the 64bit number.
+ common functions for string to number conversions for compiler, RTL
and RDD to reduce problems with differ FL values for the same number:
hb_compStrToNum(), hb_valStrnToNum(), hb_strToNum(), hb_strnToNum()
+ common function hb_numRoun() which uses exactly the same algorithms
as string to number conversion for the same reason - please keep
this functions together.
+ hack inside hb_numRound() similar to the one used by CL5.3
+ hb_numInt() which uses uses the same hack as hb_numRound()
+ rewritten number to string conversion
+ some new string manipulation functions hb_strncpy(), hb_strncat(), ...
They works differ the the C one - always set 0 at the end, the buffer
has to be n+1 bytes length, the n is total size of buffer not the
left free space.
! cleaned some code which operates on ASCIIZ string to avoid potential
buffer overflow
+ updated RDD code - it's the first part - in few days I plan to change
workarea structure in both projects - it will break any 3rd party RDDs
so they have to be updated. I want to add SUPERTABLE into workarea
to allow creating new RDD on-line.
! cleaned the bugs with negating integers - on most machines (like x86)
the integers are not 0 symmetric - it means that x = -x does not work
for {INT,LONG,LONGLONG}_MIN (hb_vmNegate, ABS())
+ cleaned error messages to be Clipper compatible.
+ updated build process for .DEB packages - now hb* scripts and shared
libs are created by standard make install
* added new .prg #defines: __PLATFORM__<cPlatfrom>,
__ARCH{16|32|64}BIT__, __LITTLE_ENDIAN__|__BIG_ENDIAN__|__PDP_ENDIAN__
!!! cPlatfrom can have lower letters (for xHarbour compatibility)
If you do not like it please change it.
* others ...
* include/hbapi.h
* source/vm/dynsym.c
* a new function 'hb_dynsymScope' was added to check if the
passed symbol has requested scope
* source/vm/macro.c
* source/vm/hvm.c
* fixed support for static functions used in macro compiled
expressions (the runtime error is generated during evaluation
instead of macro compilation - like in Clipper)
* source/pp/ppcore.c
* fixed support for '¯o.' in complex expressions
* include/hbapi.h
* source/vm/codebloc.c
* source/vm/proc.c
*fixed to correctly return the procedure name where
the codeblock was created
* source/common/hbffind.c
*fixed to set correctly size and modification date of
retrieved files on Linux/Unix -used from DIRECTORY()
function
* CVSROOT/avail
* restored write access to the entire repository for
all developers
* doc/codestyl.txt
* small corrections (use 3 spaces instead of Tab)
* include/hbcomp.h
* source/compiler/cmdcheck.c
* source/compiler/harbour.c
* source/compiler/hbusage.c
+ added posibility to specify the output PPO file with -p
e.g.
-pppo/myfile.ppo
(thanks to Larry Sevilla)
* source/rtl/tget.prg
* fixed positioning of cursor when the first pressed key
was a digit during editing of numeric value
* source/compiler/hbfix.c
* source/rdd/dbcmd.c
* source/rdd/dbf1.c
* source/rdd/dbfcdx/dbfcdx1.c
* source/rdd/dbffpt/dbffpt1.c
* source/rdd/dbfntx/dbfntx1.c
* source/rtl/dates.c
* source/rtl/filesys.c
* source/rtl/inkey.c
* source/rtl/isprint.c
* source/rtl/math.c
* source/rtl/philes.c
* source/vm/classes.c
* source/vm/hvm.c
* removed '//' comments
+ config/dos/owatcom.cf
* added configuration file for OpenWatcom (renamed
from watcom.cf)
* config/dos/watcom.cf
* restored previous version so it correctly compiles
under WatcomC 10 - please use watcom.cf for WatcomC
and owatcom.cf for OpenWatcom
* makefile.bc
* makefile.nt
* makefile.vc
* hrbdll.bc
* source/codepage/Makefile
+ source/codepage/cdpsrwin.c
+ new file with Serbian codepage
* CVSROOT/avail
* removed reference to my local file
* ERRATA
* updated (removed reference to tmpname)
* doc/codestyl.txt
* updated with some coding guidelines adopted from PHP
(please fell free to discuss them ;-)
* doc/howtocvs.txt
* added description for commit on Linux
* include/hbapicdp.h
* source/codepage/cdpesdos.c
* restored previous versions
* include/hbcomp.h
* added <malloc.h> reference for WatcomC compiler
* include/hbexprc.c
* fixed warning reported by WatcomC
* source/vm/itemapi.c
* fixed infinite support for WatcomC
* source/rtl/cdpapi.c
* renamed global symbol s_cdpage into hb_cdp_page
* source/rtl/gtcrs/kbdcrs.c
* fixed reporting keystrokes with codes > 127
* include/hbapi.h
* source/rtl/empty.c
* source/rtl/idle.c
* source/vm/arrays.c
* source/vm/estack.c
* source/vm/extend.c
* source/vm/itemapi.c
* added missing code to use HB_IT_POINTER just like
other value's type
You can use:
hb_retptr( void * pointer )
hb_parptr( ) -> void *
hb_storptr( void * pointer, ...... )
to return/manage pointers from low level functions.
For example:
p = GET_SOME_POINTER()
? VALTYPE(p) //prints: 'P'
? p //prints: 0x12345678
* tests/onidle.prg
* fixed to use values of pointer type
* tests/tstmacro.prg
* added code to test TYPE() function
* harbour/tests/bldtest/Makefile
* fixed typo in file name
* xharbour/include/hbdefs.h
+ added HB_COUNTER and HB_PTRDIFF types - first for reference
counters and second for any pointer differences and pointer to
integer conversions - this modification is synced with xHarbour
* harbour/include/hbapi.h
* harbour/include/hbdefs.h
* harbour/source/rtl/philes.c
* harbour/source/vm/arrays.c
* harbour/source/vm/hvm.c
* harbour/source/vm/itemapi.c
* use HB_COUNTER type
* include/hbexpra.c
* source/compiler/expropta.c
* source/macro/macroa.c
* source/vm/macro.c
* fixed bug cousing that some memory was deallocated
more then once
* source/debug/debugger.prg
* fixed support for .T./.F. in command window
* fixed issues when the application was using
SET EXACT ON
* include/hbapi.h
* include/hbvm.h
* source/vm/hvm.c
* source/vm/macro.c
* fixed bug introduced earlier by me in the macro compiler:
PUBLIC ¯o
works correctly now
* source/compiler/gencli.c
* fixed warnings
* source/rtl/cdpapi.c
*fixed warnings (Can the author of the code check if
I correctly parenthesized multiple || and && conditions?)
* source/vm/classes.c
*fixed warning in gcc (commented out unused
static hb_clsScope function)
* source/rdd/dbfntx/dbfntx1.c
* source/rtl/fstemp.c
* fixed hb_fsCreateTemp() to use 'mkstemp' on Unix
* fixed sorting procedure to use hb_fsCreateTemp
wrapper function
* source/rtl/set.c
*hb_set.HB_SET_DIRSEPARATOR defaults to '/' on Unix