* harbour/contrib/xhb/Makefile
* harbour/contrib/xhb/common.mak
+ harbour/contrib/xhb/dirrec.prg
+ added DirectoryRecurse() function. It's not exactly xHarbour
compatible as I wanted at the beginning. But when I begin
to carefully check what xHarbour exactly does then I dropped
the strict compatibility due to problems with xHarbour
implementation which have to be fixed. I left this note in the
dirrec.prg header:
This implementation uses different rules then xHarbour one.
It does not change current drive or current directory so
unlike the xHarbour version it's MT safe.
It also returns relative paths which are more similar to
DIRECTORY() function results so they can be easy used
directly in other code, f.e. to create archive without
absolute paths. Please note that user can easy convert
relative paths to absolte ones by simple adding curdir()
and/or cPath parameter passed to DirectoryRecurse() but
reverted conversion may not be possible in some cases.
The 3-rd xHarbour parameter <lCaseMach> is ignored because
harbour uses platform native rules to check filename mask
respecting SET FILECASE and SET DIRCASE settings.
xHarbour does not add "D" to attribute list used for directory
tree scanning so user always have to add it manually and later
it ignores it so it's not possible to extract file list with
directories entries. In Harbour it's fixed.
* harbour/source/rtl/philes.c
+ added hb_osFileMask()
* harbour/source/rtl/direct.c
% minor optimization
* contrib/rddads/make_b32.bat
* contrib/rddads/make_vc.bat
* contrib/rddads/ads.ch
* contrib/rddads/rddads.h
* contrib/rddads/ads1.c
* contrib/rddads/adsfunc.c
* contrib/rddads/adsmgmnt.c
+ Added ACE version autodetection.
You can override with: -DADS_LIB_VERSION=700 (and similar)
(ADS_REQUIRE_VERSION still accepted for compatibility)
! Fixed a few lib version related problems.
! hMgmtHandle global renamed to ads_g_hMgmtHandle.
* Formatting.
* contrib/rddads/rddads.h
+ QUESTION: added about ADS_MAX_KEY_LENGTH redefinition.
Is it needed?
* source/compiler/hbmain.c
* Changed output device (hb_compOutStd() -> hb_compOutErr())
for following texts:
"Compiling..."
"No code generated"
"Lines x, Functions/Procedures x"
This is to replicate CA-Cl*pper behaviour a bit more.
* include/hbextern.ch
* common.mak
* source/rtl/Makefile
* source/rtl/maxrow.c
+ source/rtl/scrrow.c
* contrib/xhb/hbcompat.ch
+ Added hb_ScrMaxRow(), hb_ScrMaxCol()
These will return the screen dimensions regardless
of the size of an active window (when using CT
windows for example). Functionality is the same
as MaxRow(.T.) and MaxCol(.T.) previously.
! MaxRow()/MaxCol() extended parameters removed.
+ Added MaxRow(.T.)/MaxCol(.T.) conversions for
xhb lib (hbcompat.ch) in both directions.
; XBase++ doesn't have any extended parameters
for Max*() function. Flagship has two of them,
both of them doing something different. CAVO doesn't
have these functions at all.
* contrib/xhb/hbcompat.ch
! GTI_* macros updated to HB_GTI_*.
* source/vm/memvclip.c
% Minor opt in __QQPUB().
* source/vm/extend.c
* 0 -> NULL
* source/vm/estack.c
- QUESTION removed.
* source/lang/msgbgmik.c
* source/rtl/console.c
* source/rtl/philes.c
* source/rtl/adir.prg
* source/rtl/getsys53.prg
* source/rtl/getsys.prg
* source/rtl/tget.prg
* source/rtl/ttopbar.prg
* source/rtl/pushbtn.prg
* source/rtl/mod.c
* source/rtl/memofile.c
* source/rtl/radiobtn.prg
* source/rtl/filesys.c
* source/rtl/tbrowse.prg
* source/vm/estack.c
* source/vm/itemapi.c
* source/vm/hvm.c
* source/vm/cmdarg.c
* source/vm/fm.c
* source/vm/eval.c
* source/common/hbver.c
* source/common/expropt2.c
* utils/hbtest/hbtest.prg
* utils/hbtest/rt_misc.prg
* utils/hbtest/rt_str.prg
! Comment fixes and minor formatting.
* harbour/source/vm/estack.c
* added missing static to s_initSymbol declaration
* harbour/include/hbgtinfo.ch
* harbour/source/rtl/scroll.c
* formatting
* harbour/common.mak
* added empty line necessary for some make systems (f.e. wmake)
* harbour/bin/hb-func.sh
* changed system libs order to avoid problems on some platforms
* harbour/bin/pack_src.sh
* collect information about repository files using 'svn status -v'
command instead of scanning .svn/entries files to avoid problems
with different formats used by SVN
* harbour/include/hbchksum.h
* harbour/include/hbset.h
! added missing extern in few function prototypes
* harbour/include/hbclass.ch
* use HB_CLS_PARAM_LIST macro instead of ... for strict C52 mode
* harbour/source/common/hbfsapi.c
+ added missing const to one declaration
* harbour/source/common/hbstr.c
* minor cleanup in hb_stricmp()
* harbour/source/rtl/inkey.c
! casting to avoid negative values during char to int translation
* harbour/source/rtl/mouse53.c
* added one internal definition
* harbour/source/rtl/philes.c
* removed unnecessary #include(s)
* added missing const to one declaration
* harbour/source/rtl/valtype.c
* harbour/source/vm/hashfunc.c
* cleanup RT error call to eliminate hb_paramError() function
* harbour/source/pp/pplib.c
* harbour/source/vm/runner.c
* harbour/source/vm/debug.c
* harbour/source/vm/arrayshb.c
* harbour/source/vm/classes.c
* harbour/source/vm/hvm.c
* harbour/source/rtl/hbgtcore.c
* harbour/source/rtl/gtfunc.c
* harbour/source/rtl/hbinet.c
* harbour/source/rtl/hbregex.c
* harbour/source/rtl/idle.c
* harbour/source/rtl/errorapi.c
* harbour/source/rtl/hbtoken.c
* harbour/source/rtl/direct.c
* harbour/source/rdd/dbcmd.c
* harbour/source/rdd/dbcmd53.c
* harbour/source/rdd/fieldhb.c
* harbour/source/rdd/hbsix/sxcompr.c
* harbour/source/rdd/hbsix/sxcrypt.c
* harbour/source/compiler/hbcmplib.c
* harbour/contrib/hbrddads/adsfunc.c
* harbour/contrib/hbrddads/adsmgmnt.c
- removed unnecessary calls to hb_ret()
% replaced hb_itemRelease( hb_itemReturn( pItem ) ) with
hb_itemReturnRelease( pItem )
% replaced hb_itemPut*( hb_arrayGetItemPtr( pArray, ... ), ... ) with
hb_arraySetNI( pArray, ... )
* harbour/source/macro/macro.y
* harbour/source/macro/macro.yyc
* harbour/contrib/xhb/cstructc.c
* harbour/contrib/hbw32/w32_ole.c
* harbour/contrib/hbgtwvg/wvtcore.c
* cleaned typos with double ;;
* harbour/source/vm/extend.c
* harbour/source/rtl/math.c
* cleaned HB_EXPORT usage
* harbour/source/pp/ppcore.c
! fixed Harbour extension which allows to use match marker
at the beginning of rule definition
* harbour/source/main/harbour.c
! fixed hex conversion in FM log module - fix done by Phil Krylov
in xHarbour
* harbour/source/rdd/nulsys/nulsys.c
+ added dummy version of DBEVAL() and DBFILTER() - these functions
are used in RTL
* harbour/contrib/hbct/bitnum.c
+ added INTNEG(), INTPOS()
+ harbour/contrib/hbct/ctrand.prg
+ added RANDOM(), RAND() - borrowd from xHarbour by Pavel Tsarenko
+ harbour/contrib/hbct/setrc.c
+ added SETRC()
* harbour/contrib/hbct/getinput.prg
% minor optimization
* harbour/contrib/hbct/Makefile
* harbour/contrib/hbct/common.mak
* updated for new files
* harbour/contrib/hbnf/tempfile.prg
* use HB_FTempCreate() - modification borrowed from xHarbour
TOFIX this function uses hb_isbyref() which does not exist
in Harbour
* harbour/config/w32/msvc.cf
+ added -nologo flag for cl.exe (Phil Krylov's modification borrowed
from xHarbour
* harbour/config/w32/mingw32.cf
- removed repeated definitions
* harbour/config/w32/install.cf
! added alternative install rule for command.com with max line size limit
* source/rtl/isprint.c
! Fixed ISPRINTER() on Win32 after last changes.
Thanks Guillermo, pls test now.
* source/rdd/dbcmd.c
! Marked as HB_EXTENSION: FIELDLEN(), FIELDDEC(), FIELDTYPE()
* include/hbextern.ch
* source/rdd/dbcmd.c
! Marked as HB_EXTENSION: DBDROP(), DBEXISTS(), RDDINFO()
(they were properly marked in hbextern.ch but not in source)
* include/hbextern.ch
* source/rtl/disksphb.c
* source/rtl/fssize.c
* source/rtl/fstemp.c
* source/rtl/inkey.c
* source/rtl/oemansi.c
* source/rtl/philes.c
* source/rtl/setcolor.c
* source/rtl/setfunc.prg
* source/rtl/setkey.c
* source/rtl/shadow.c
* source/rtl/trace.c
* source/rtl/valtostr.c
* source/vm/dynsym.c
+ Removed HB_EXTENSION from all the .prg level functions
prefixed with HB_.
(there was a mixed situation here, but there's no need
to mark any HB_ functions as extensions, as it's obvious
by their name. So as a rule, no HB_ prefixed function
should ever be marked as HB_EXTENSION anymore.)
! Fixed some inconsistencies in HB_EXTENSION between
hbextern.ch and actual sources.
* source/rtl/tgetlist.prg
* One HB_EXTENSION changed to !HB_C52_STRICT because it
was guarding a bugfix rather than a real extension.
* source/rtl/gui.prg
* _GetNumCol() is now always strictly compatible.
NOTE added about sloppy C5.3 behaviour.
* source/rtl/inkey.c
* contrib/xhb/xhb.ch
* contrib/xhb/xhbfunc.c
! __KEYBOARD() xhb hidden parameter extension moved to
xhb lib. For similar functionality inside Harbour
pls use HB_KEYPUT(). __KEYBOARD is now 100% C5.x
compatible.
* source/rtl/setfunc.prg
* __SetFunction() extension now uses HB_KEYPUT() instead
of __KEYBOARD() extended parameters.
* source/compiler/hbfunchk.c
* source/rtl/at.c
! AT() extra parameters handled when HB_EXTENSION is on
(was !HB_C52_STRICT). (The first extra parameter is
XPP and Flagship compatible. The three parameter version
of this function is called AT3() in CAVO.)
! TRIM()/RTRIM() extra parameters handled on compiler level
when HB_EXTENSION is on (default).
! FILE() parameter check turned off in compiler.
(to be C5.x compatible)
* source/rtl/alert.prg
! ALERT() Harbour extended parameter (1st parameter type)
is now guarded with HB_EXTENSION instead of HB_C52_STRICT.
* source/rtl/gete.c
! GETE[NV]() Harbour extended parameter guarded with HB_EXTENSION.
* source/vm/proc.c
! PROCFILE() Harbour extended parameter guarded with HB_EXTENSION.
* source/rtl/mlcfunc.c
! Harbour extended parameters for MEMOLINE()/MLCOUNT()/
MLPOS()/MLCTOPOS()/MPOSTOLC() are now guarded with HB_EXTENSION
(instead of HB_C52_STRICT). It seems to be possible to
specify custom EOLs for all these functions. (Maybe simple
automatic Unix/Win EOL style handling would be better here)
* source/vm/memvars.c
! Guarded Harbour extension in __MVRESTORE() with HB_EXTENSION.
; After this cleanup:
- HB_EXTENSION is marking extra features living inside existing C5.x
functions or classes, or Harbour extension functions
not complying with the HB_ prefix rule (we have six
such functions in RDD). If there are more extended
parameters in Harbour pls mark them with HB_EXTENSION
too.
- HB_C52_STRICT is guarding bugfixes compared to C5.x.
- No HB_ functions are guarded with HB_EXTENSION anymore.
- We'd pbly need to review each HB_EXTENSIONs to check whether they
are safe or not.
- A list of HB_EXTENSIONs:
- MLCOUNT()
MEMOLINE()
MLPOS()
MLCPOS()
MPOSTOLC() - 5th and up can specify custom EOLs.
- ALERT() - 1st parameter type can be any type in Harbour, char only in C5.x
- SET FUNCTION TO
__SETFUNCTION - 2nd parameter can be numeric or array of numeric in Harbour.
- SETKEY() - 3rd codeblock parameter ("isactive" block)
- SAVESCREEN() - 5th parameter: lNoCheck (?)
RESTSCREEN() - 6th parameter: lNoCheck (?)
- AT() - 3rd and 4th parameters to set search range. 3rd parameter is
also supported by XPP and FS. Results in compiler error in C5.x.
(CAVO uses AT2() and AT3() for extended versions.)
- TRIM()
RTRIM() - 2nd parameter is an extension regarding space trimming mode.
Results in compiler error in C5.x.
- ALLTRIM() - 2nd parameter is an extension regarding space trimming mode.
- GETE()
GETENV() - 2nd parameter specifies a default value. Can be found in HB_GETENV().
- PROCFILE() - 1st parameter is a Harbour extension. Undocumented function in C5.x.
The extension looks similar to the one found in Flagship.
- __MVRESTORE() - 3rd/4th parameters are Harbour extensions to set variable name
mask. Redirected from the internal 5.x function named __MRESTORE().
- DB*() - cRDD, nConnection, cCodePage extra parameters in many DB*() functions.
TOFIX: None of them is marked as HB_EXTENSION.
- SET()s - These are not marked as HB_EXTENSION.
- ? - Is there anything else?
* harbour/include/hbapi.h
* harbour/source/vm/dynsym.c
+ added hb_dynsymIsFunction()
* harbour/source/rtl/filehb.c
* updated comment
* harbour/source/rtl/philes.c
* renamed HB_F_EOF() to HB_FEOF()
* harbour/source/rtl/scroll.c
* harbour/source/rtl/transfrm.c
* harbour/source/rtl/file.c
* formatting
* harbour/source/rtl/substr.c
* harbour/source/rtl/trim.c
% optimization
* harbour/source/rtl/typefile.prg
% use HB_ATOKENS() instead of static .prg function
* harbour/source/rtl/setkey.c
% optimization and protection aganst possible GPF when wrong array
is passed to HB_SETKEYSAVE()
* harbour/source/rtl/xhelp.c
! do not generate RT error when HELP symbol exist
(f.e. after PUBLIC HELP) but HELP() function doesn't
! keep reference in parametes passed by reference to __XHELP()
* use only PHB_DYNS instead of PHB_SYMB
* harbour/source/rtl/seconds.c
+ added WIN32 version borrowed from XHARBOUR
* harbour/source/rtl/trace.c
! protection against possible GPF when wrong parameters are passed
* harbour/source/rtl/samples.c
! protection against possible GPF when wrong parameters are passed
Warning! We have in this file few functions without HB_ prefix.
Some of them may create conflicts with future functions for TIMEDATE
items.
* harbour/source/rtl/inkey.c
+ added support for passing array with key codes as __KEYBOARD()
parameter, covered by HB_EXTENSION macro - this is xHarbour compatible
extension. I do not like it but we already had extension with numeric
parameters and probably it would be hard to remove it now and keep
__KEYBOARD() code clean so I decided to add support also for arrays
instead of creating new function and adding conditional code covered
by HB_COMPAT_XHB macro.
* harbour/source/rtl/setfunc.prg
* accept extended __KEYBOARD() parameters when HB_EXTENSION macro
is set.
* harbour/include/hbapi.h
* harbour/source/rtl/console.c
* changed hb_conOutAlt() from static to global function.
* harbour/include/hbapi.h
* harbour/source/common/hbver.c
+ added hb_verBuildDate()
* harbour/source/rtl/accept.c
! Fixed ACCEPT to respect SET CONSOLE and similar sets.
* harbour/source/rtl/hbgtcore.c
* harbour/contrib/libct/ctwin.c
! fixed chr(8) console output - it should erase character on the screen
* harbour/include/set.ch
* harbour/include/hbset.h
* harbour/source/rtl/set.c
* harbour/source/rtl/filesys.c
+ added _SET_TRIMFILENAME - when enabled low level hb_fs*() functions
strip trailing and leading spaces from file names to emulate DOS
like behavior - switch compatible with xHarbour
* harbour/source/rtl/run.c
* remove compiler type checking - if system() is not supported by
some platform/compiler then I'd prefer to exclude it explicitly.
* harbour/source/rtl/dircmd.prg
+ added support for extended DBF types and replaced some of
Bin2W() by ASC()
* harbour/source/rtl/defpath.c
* use OS_HAS_DRIVE_LETTER macro to detect if platform supports drive
letters
* harbour/source/rtl/philes.c
+ added HB_FCOMMIT(), HB_OSERROR(), HB_OSDRIVESEPARATOR()
Question: why we have HB_F_EOF() instead HB_FEOF()
* harbour/source/rtl/oldbox.c
* harbour/source/rtl/box.c
! fixed __BOX() to be Clipper compatible
* harbour/source/rtl/math.c
* harbour/source/rtl/dateshb.c
* formatting and some minor improvements
* harbour/source/rtl/isprint.c
* harbour/source/vm/itemapi.c
* harbour/source/rtl/ampm.c
* harbour/source/rtl/inkey.c
* harbour/source/rtl/gete.c
* harbour/source/rtl/fkmax.c
* harbour/source/rtl/langapi.c
* harbour/source/rtl/colorind.c
* harbour/source/rtl/mouseapi.c
* harbour/source/rtl/readvar.prg
* harbour/source/rtl/devoutp.prg
* harbour/source/rtl/readkey.prg
* code checking and formatting
! some minor fixes
% some speed improvements
* harbour/source/rtl/menuto.prg
* harbour/source/rtl/radiogrp.prg
* harbour/source/rtl/listbox.prg
* harbour/source/rtl/checkbox.prg
* harbour/source/rtl/pushbtn.prg
* harbour/source/rtl/radiobtn.prg
* code checking and formatting
! added fixes borrowed from xHarbour
! some other fixes
% some speed improvements
* harbour/source/rtl/filehb.c
+ added commment
* harbour/source/rtl/transfrm.c
! fixed integer numbers transformation when _SET_FIXED is on to
be Clipper compatible
* harbour/source/rtl/version.c
+ added HB_PCODEVER() and HB_BUILDDATE()
* harbour/source/rtl/copyfile.c
! fixed __COPYFILE() - source and destination files should respect
_SET_DEFAULT
* harbour/include/hbcomp.h
* harbour/include/hbexpra.c
* harbour/include/hbexprb.c
* harbour/include/hbexprc.c
* harbour/include/hbmacro.h
* harbour/include/hbpcode.h
* harbour/include/hbxvm.h
* harbour/source/common/hbdate.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/hblbl.c
* harbour/source/compiler/hbopt.c
* harbour/source/compiler/hbpcode.c
* harbour/source/compiler/hbstripl.c
* harbour/source/rtl/abs.c
* harbour/source/rtl/at.c
* harbour/source/rtl/chrasc.c
* harbour/source/rtl/datec.c
* harbour/source/rtl/dateshb.c
* harbour/source/rtl/diskspac.c
* harbour/source/rtl/disksphb.c
* harbour/source/rtl/gtfunc.c
* harbour/source/rtl/left.c
* harbour/source/rtl/len.c
* harbour/source/rtl/math.c
* harbour/source/rtl/minmax.c
* harbour/source/rtl/mod.c
* harbour/source/rtl/philes.c
* harbour/source/rtl/philesx.c
* harbour/source/rtl/replic.c
* harbour/source/rtl/round.c
* harbour/source/rtl/set.c
* harbour/source/rtl/space.c
* harbour/source/rtl/strcase.c
* harbour/source/rtl/strpeek.c
* harbour/source/rtl/transfrm.c
* harbour/source/rtl/trim.c
* harbour/source/rtl/type.c
* harbour/source/rtl/val.c
* harbour/source/rtl/word.c
* harbour/source/vm/hvm.c
* harbour/source/vm/macro.c
* added some PCODEs to cover all possible combination of ++, --, <op>=
operations in the same way and keep Clipper compatible RT errors.
* added some other PCODEs to optimize some commonly used expressions/
statements
* use HB_ERR_ARGS_BASEPARAMS instead of hb_paramError()
* some other cleanups and minor optimizations
* harbour/utils/hbtest/rt_math.prg
* update expected result for MOD() - it was not Clipper compatible and
it will be hard to make it compatible without introducing some Clipper's
side effects
* harbour/config/linux/dir.cf
* harbour/config/linux/gcc.cf
* formatting
* harbour/config/linux/global.cf
* harbour/config/linux/install.cf
* added -ldl to linked library list and RANLIB executing after library
creation
* harbour/contrib/ole/ole2.c
* added #include "hbapicls.h"
+ harbour/include/hbapicls.h
* harbour/include/hbapi.h
+ added HB_IT_ENUM item
+ added collect member to HB_IT_POINTER structure for POINTER items
inspected by GC
* changed the order of HB_CODEBLOCK members to safe few bytes on
alignment
* removed counters from HB_CODEBLOCK and HB_BASEARRAY structure
+ added hb_xRefInc(), hb_xRefDec(), hb_xRefFree(), hb_xRefCount(),
hb_xRefResize() functions. They are internal Harbour VM functions
and covered by internal API macro. Should not be used by 3-rd
party code because we may change them in the future or even remove.
+ added hb_gcRefInc(), hb_gcRefDec(), hb_gcRefFree(), hb_gcRefCount()
functions. These are also internal function which corresponds to the
above hb_x*() ones.
- removed hb_arrayRelease() function. This function is not longer
necessary and it should never be public function - it was implemented
in very dangerous way.
- removed hb_codeblockDelete() function.
- removed hb_memvarValueDecGarbageRef()
+ added USHORT usLen parameter to hb_codeblockMacroNew() - when sets
to non 0 value it informs that PCODE should be copied to dynamically
allocated buffer.
* moved all classes/object functions to separate file: hbapicls.h
+ added hb_retptrGC()
+ added internal function hb_memvarGetItem()
* harbour/include/hbapiitm.h
- removed hb_itemForwardValue() and added macro which translates
hb_itemForwardValue() to hb_itemMove()
+ added hb_itemUnShareString() and hb_itemReSizeString() functions
+ added hb_itemSetNil() macro
* harbour/include/hbdefs.h
* some cleanups in macro definitions
* harbour/include/hbexprb.c
* indenting
* harbour/include/hbvm.h
* harbour/include/hbinit.h
+ added hb_vmProcessSymbolsExt(), hb_vmRegisterSymbols(),
hb_vmFreeSymbols(), hb_vmBeginSymbolGroup(),
hb_vmInitSymbolGroup(), hb_vmExitSymbolGroup()
* changed hb_vmProcessSymbols() to return address of register symbol
table. For normal code it's the same address as given in parameter
so it does not break backward binary compatibility.
* changed symbol init macros to work correctly with modified address
of symbol table
* harbour/include/hbsetup.h
* added support for HB_USE_PROFILER macro. Now profiler code is
is disable in HVM by default
* commented out HB_ASORT_OPT_ITEMCOPY - it's not longer used - see note.
* harbour/include/hbstack.h
* added missing parenthesis in hb_stackItem() macro
* harbour/include/hbtypes.h
* updated VM_PROCESS_DLL_SYMBOLS definition
+ added VM_PROCESS_SYMBOLS_EXT
- removed HB_ARRAYRELEASE
* harbour/include/hbver.h
* changed revision number to 2
* harbour/include/hbvmpub.h
- remove pFunPtr from HB_DYNS and cover profiler member by
#ifndef HB_NO_PROFILER
+ added HB_PCODEFUNC structure
+ added HB_FS_PCODEFUNC, HB_FS_DYNCODE and HB_FS_LOCAL - the last one
is not used yet.
* harbour/include/hbxvm.h
* added some multipcode functions for some speed optimization in -gc3
output
* harbour/include/hbapicdp.h
* harbour/source/codepage/cpbg866.c
* harbour/source/codepage/cpbgiso.c
* harbour/source/codepage/cpbgwin.c
* harbour/source/codepage/cpeldos.c
* harbour/source/codepage/cpelwin.c
* harbour/source/codepage/cpesdos.c
* harbour/source/codepage/cpesmwi.c
* harbour/source/codepage/cpeswin.c
* harbour/source/codepage/cpgedos.c
* harbour/source/codepage/cpgewin.c
* harbour/source/codepage/cphu852.c
* harbour/source/codepage/cphuiso.c
* harbour/source/codepage/cphuwin.c
* harbour/source/codepage/cppl852.c
* harbour/source/codepage/cppliso.c
* harbour/source/codepage/cpplmaz.c
* harbour/source/codepage/cpplwin.c
* harbour/source/codepage/cppt850.c
* harbour/source/codepage/cpptiso.c
* harbour/source/codepage/cpru866.c
* harbour/source/codepage/cprukoi.c
* harbour/source/codepage/cpruwin.c
* harbour/source/codepage/cpsl437.c
* harbour/source/codepage/cpsl852.c
* harbour/source/codepage/cpsliso.c
* harbour/source/codepage/cpslwin.c
* harbour/source/codepage/cpsrwin.c
* harbour/source/common/hbfhnd.c
* harbour/source/common/hbstr.c
* harbour/source/common/hbver.c
* harbour/source/compiler/gencli.c
* harbour/source/rtl/fstemp.c
* harbour/source/rtl/hbgtcore.c
* harbour/source/rtl/langapi.c
* harbour/source/rtl/gtalleg/gtalleg.c
* harbour/source/rtl/gtalleg/ssf.h
* harbour/source/rtl/gtcgi/gtcgi.c
* harbour/source/rtl/gtcrs/gtcrs.c
* harbour/source/rtl/gtdos/gtdos.c
* harbour/source/rtl/gtos2/gtos2.c
* harbour/source/rtl/gtpca/gtpca.c
* harbour/source/rtl/gtsln/gtsln.c
* harbour/source/rtl/gtstd/gtstd.c
* harbour/source/rtl/gtwin/gtwin.c
* harbour/source/rtl/gtwvt/gtwvt.c
* harbour/source/rtl/gtxwc/gtxwc.c
* cleaned the code to avoid warnings for some non ANSI C constructions
* harbour/source/compiler/cmdcheck.c
* formatting
* harbour/source/compiler/gencc.c
* added some multipcode optimizations
* harbour/source/compiler/genc.c
* keep function name set by compiler for static initstatics
* harbour/source/compiler/harbour.c
* extend init statics name with the number of used static variables
* formatting
* harbour/source/compiler/hbusage.c
+ added my name to developers list - I hope that there is enough
of my code in Harbour (BTW for quite long time) ;-)
* harbour/source/rdd/dbcmd.c
- removed DBF2TEXT() function
* harbour/source/rdd/dbf1.c
* harbour/source/rdd/dbffpt/dbffpt1.c
* generate RT error when someone tries to create DBF with memo fields
without MEMO RDD linked.
* harbour/source/rtl/errorapi.c
* replace all hb_vmDo() with hb_vmSend()
* harbour/source/rtl/math.c
* use hb_errPutArgs() to pass parameters to error object
* harbour/source/rtl/philes.c
* harbour/source/rtl/space.c
* harbour/source/rtl/strpeek.c
* some minor optimizations
* harbour/source/vm/arrays.c
- removed hb_arrayRelease() function.
* changed hb_arrayReleaseGarbage() to be safe for recursive call
* updated to use GC counters
* harbour/source/vm/arrayshb.c
* use stack function/macros instead of direct accessing HB_STACK members
* harbour/source/vm/asort.c
* removed unused HB_ASORT_OPT_ITEMCOPY
* harbour/source/vm/classes.c
* added class code from HVM
% added fast overloaded operator detection and execution
+ added hb_objHasOperator(), hb_objOperatorCall()
+ added separated overloading of "=" and "==" operators
* operate on PHB_SYMB not PHB_FUNC - support for pure PCODE function
without any machine code
* use stack function/macros instead of direct accessing HB_STACK members
* separated profiler code
* some code cleaning
* harbour/source/vm/codebloc.c
+ added USHORT usLen parameter to hb_codeblockMacroNew() - when sets
to non 0 value it informs that PCODE should be copied to dynamically
allocated buffer.
* updated to use GC counters
- removed hb_codeblockDelete() function.
* changed hb_codeblockDeleteGarbage() to be safe for recursive call
- removed restoring statics base in hb_codeblockEvaluate()
* harbour/source/vm/debug.c
* cleaned and optimized some code
* harbour/source/vm/dynlibhb.c
+ added support for loading and unloading dynamic libraries with PCODE
+ added support for dynamic libraries in Linux (.so)
+ added HB_LIBERROR() - returns error string with last error in
HB_LIBLOAD() - now works only in Linux
* harbour/source/vm/dynsym.c
* separated profiler code
+ use pDynSym->pSymbol->value.pFunPtr instead of pDynSym->pFunPtr
* harbour/source/vm/estack.c
+ added #include "hbapicls.h"
+ added hb_stackPushReturn(), hb_stackPopReturn()
* harbour/source/vm/eval.c
* harbour/source/vm/extend.c
* use stack function/macros instead of direct accessing HB_STACK members
+ added hb_retptrGC()
* harbour/source/vm/fm.c
+ added hb_xRefInc(), hb_xRefDec(), hb_xRefFree(), hb_xRefCount(),
hb_xRefResize() functions. They are internal Harbour VM functions
and covered by internal API macro. Should not be used by 3-rd
party code because we may change them in the future or even remove.
* harbour/source/vm/garbage.c
+ added hb_gcRefInc(), hb_gcRefDec(), hb_gcRefFree(), hb_gcRefCount()
functions. These are also internal function which corresponds to the
above hb_x*() ones.
* changed Step 3 of GC pass and execution of clean-up function to be
safe for recursive calls and additional activity.
Ryszard see my note and s_pDeletedBlock
+ added GC inspected HB_IT_POINTER items.
* harbour/source/vm/hvm.c
* separated profiler code
* separated class code from HVM
+ added support for loading and unloading libraries with PCODE modules
+ added support for pure PCODE functions
+ added support for string item resizing and preallocating string buffer
+ added some new multipcode functions for -gc3 optimization
+ added hb_vmProcessSymbolsExt(), hb_vmRegisterSymbols(),
hb_vmFreeSymbols(), hb_vmBeginSymbolGroup(),
hb_vmInitSymbolGroup(), hb_vmExitSymbolGroup()
* changed hb_vmProcessSymbols() to return address of register symbol
table. For normal code it's the same address as given in parameter
so it does not break backward binary compatibility.
+ use new code for operator overloading
* changed FOR EACH to dynamically check iteration scope in
hb_vmEnumNext()/hb_vmEnumPrev() and remove max number of iteration
stored on HVM stack
* temporary use hb_itemUnRefOnce() instead of hb_itemUnRefRefer() as
workaround for possible GPF. I'd like Ryszard will chose the final
version
* harbour/source/vm/itemapi.c
+ added support for preallocating string buffer size
+ added hb_itemUnShareString() and hb_itemReSizeString()
* updated string items to use counters allocated with each
memory block by xh_xgrab()/hb_xalloc()
* updated codeblock and array items to use GC reference counters
+ added GC inspected HB_IT_POINTER items.
* generate RT error in hb_itemUnreOnce() for enumerator items
out of scope
+ added hb_itemPutPtrGC()
* harbour/source/vm/macro.c
* use pDynSym->pSymbol->value.pFunPtr instead of pDynSym->pFunPtr
* harbour/source/vm/maindllp.c
* updated usage of hb_vmProcessSymbols()
* added hb_vmProcessSymbolsExt()
* harbour/source/vm/memvars.c
+ added hb_memvarGetItem()
- removed hb_memvarValueDecGarbageRef()
* harbour/source/vm/proc.c
+ added #include "hbapicls.h"
* harbour/source/vm/pvalue.c
* do not access stack structure directly but use hb_stack*()
functions (macros)
* harbour/source/vm/runner.c
* synced with xHarbour
* harbour/utils/hbtest/rt_misc.prg
* added overloading "=" operator. Now "==" and "=" can be overloaded
with different methods
All names I used for new functions/macros can be changed. Please look at
it and if you will some better propositions then we can use it.
hb_vmProcessSymbolsExt() is added but not used yet.
* harbour/include/hbsetup.ch
* enable HB_COMPAT_FLAGSHIP by default
I hope it will not be a problem - if it does then I can disable it
but in *nixes for a long time FlagShip was the only one Clipper
alternative and some of its functions are quite often used in
Clipper/FoxPro programs ported to *nixes so I'd want to keep it
enabled at least when HB_OS_LINUX/HB_OS_UNIX is defined.
* harbour/include/hbvm.h
+ added missing extern in hb_vmAtInit() and hb_vmAtExit() declarations
* harbour/include/hbvmpub.h
* formatting
* harbour/source/rdd/dbcmd.c
! fixed the problem with fieldput(<n>,nil) at phantom recrod reported
by Victor
* do not use C level HB_ITEM
* harbour/source/rdd/dbf1.c
* harbour/source/rdd/dbfcdx/dbfcdx1.c
* harbour/source/rdd/dbfntx/dbfntx1.c
! fixed possible GPF when "/an/existing/path/" was used as file name.
No in DOS in such case it will casue RT error that file:
/an/existing/path/.<ext>
cannot be created (like in Clipper) but in other systems (f.e. Linux)
which allow to use such file names it will work without any problems.
* harbour/source/rdd/dbffpt/dbffpt1.c
* do not use C level HB_ITEM
* harbour/source/rtl/Makefile
+ harbour/source/rtl/strpeek.c
+ added STRPEEK and STRPOKE FS functions covered by HB_COMPAT_FLAGSHIP
macro
* harbour/source/rtl/philes.c
! fixed GPF when unshareing string item buffer with embedded 0 by using
hb_itemUnShare()
* harbour/include/hbapiitm.h
* harbour/source/vm/itemapi.c
+ added hb_itemUnShare() - /* un-share given string item */
and hb_itemClone() - /* clone the given item */
* 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 ...
* 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
* 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