* harbour/include/hbset.h
* harbour/source/vm/set.c
+ added hb_setSetItem2() C function for SETs which needs two parameters
+ added support for HB_SET_DECIMALS and HB_SET_EPOCH in hb_setSetItem()
Still 22 SETs are marked as TODO
+ added internal function hb_setSetFile() for HB_SET_ALTFILE,
HB_SET_EXTRAFILE, HB_SET_PRINTFILE - function body marked as TODO.
I'll implement it later.
* harbour/include/hbwmain.c
* pacified unused variable warning
* harbour/include/hbpp.h
* harbour/source/pp/ppcore.c
! do not report #if expression errors in #if PP directives when they are
in codedis activated by parent #if[def]/#elif/#else. It allows
to compiler code like:
#ifdef DEFINE
#if DEFINE >= 0x100
...
#endif
#endif
+ added logical expression reduction to not report #if expression errors
in code like:
#ifdef DEFINE && DEFINE >= 0x100
...
#endif
! fixed possible division by 0error in #if exporessions like #if 1 / 0
Now #if expression compiler error is generated
! restored some bit operators in #if directives wrongly disabled with
xHarbour stuff
* harbour/source/vm/hashfunc.c
% removed unnecessary hb_itemUnRef()
* common.mak
* source/vm/Makefile
* source/vm/vmmt/Makefile
* source/common/Makefile
* source/rtl/Makefile
- source/vm/fmhb.c
+ source/rtl/fmhb.c
- source/vm/hbmem.c
+ source/common/hbmem.c
* Moved hbfm (MEMORY() .prg function) from VM to RTL.
* Moved hbmem (hb_xmem*() C functions) from VM to COMMON.
- contrib/hbziparc/hbzipcpp.old
- Removed.
* contrib/hbcurl/hbcurl.c
% Removed two Harbour level functions not really
adding to functionality but forcing linkage of these
(otherwise unused) curl interfaces.
CURL_SHARE_STRERROR()
CURL_MULTI_STRERROR()
INCOMPATIBLE (but I doubt even a single user would be affected)
* source/rtl/version.c
! Fix to prev.
* make_vc.mak
* -GA option only used for HB_VISUALC_VER >= 70.
Please update this if older versions also support it.
* include/hbver.ch
* source/common/hbver.c
* Some more fiddling with version number terminology and
hb_version() values:
HB_VERSION_MICRO -> HB_VERSION_RELEASE
HB_VERSION_BLD_DATE_STR -> HB_VERSION_BUILD_DATE_STR
HB_VERSION_BLD_DATE -> HB_VERSION_BUILD_DATE
HB_VERSION_BLD_TIME -> HB_VERSION_BUILD_TIME
HB_VERSION_CHANGELOG_REV -> HB_VERSION_CHANGELOG_ID
Third part of version number could also be: PATCH, MICRO, BUILD
SVN revision could also be: BUILD
BUILD is inherently connected with a physical binary, so
I dropped it, PATCH is limiting and negativ, MICRO is not
very common (otherwise good), so a finally opted for
RELEASE. REVISION kept as is.
; If there are no objections I'll HB_VER_REVISION macro to
HB_VER_RELEASE. This will be an INCOMPATIBLE change, but
I expect not too many ppl being affected.
* TODO
- Removed MT as a TODO. Thanks Przemek for the nice job.
* harbour/include/hbapi.h
* harbour/source/vm/hashes.c
* harbour/source/vm/hashfunc.c
* changed hb_hSort() to execute sorting when hash is marked as needed
resorting instead of marking hash for resorting
* harbour/source/vm/fm.c
* formatting
* harbour/contrib/hbdbgfx/dbgfxc.c
! fixed casting in ASCII build
+ added support for UNICODE builds
* harbour/contrib/gtwvg/gtwvg.c
* cover LWA_ALPHA usage by #if ( _WIN32_WINNT >= 0x0500 )
to keep at least compile time compatibility with older systems
* common.mak
* source/vm/Makefile
* source/vm/vmmt/Makefile
* source/vm/fm.c
+ source/vm/fmhb.c
+ source/vm/hbmem.c
+ Moved functions not depending on FM_STATISTICS setting,
to separate files.
; NOTE: MEMORY() function should IMO move to rtl, and
hb_xmem*() functions to common lib.
* harbour/include/hbapi.h
* harbour/source/vm/hashfunc.c
* harbour/source/vm/hashes.c
+ added support for binary key order
% enable binary internal key order by default for new hash arrays
+ added .prg function to enable/disable/retrive binary order in hash
items:
hb_hSetBinary( <hValue>, <lOnOff> ) => <hValue>
hb_hBinary( <hValue> [, <lBinary> ] ) => <lBinary>
+ added support for hash array resorting. It's activated automatically
on 1-st key access/assign after changing binary or casematch hash
array flag
+ added .prg function hb_hSort( <hValue> ) => <hValue> which marks
hash array for sorting
* harbour/source/rtl/itemseri.c
% improved performance of hash array deserialization
TODO: add support for hash array flags and hash default value
serialization
* include/hbextern.ch
* common.mak
* source/codepage/Makefile
* source/codepage/cpeswinm.c
- source/codepage/cpes850.c
+ source/codepage/cpes850c.c
* source/codepage/cpesiso.c
+ source/codepage/cpesisoc.c
* source/codepage/cpeswin.c
+ source/codepage/cpeswinc.c
* source/codepage/cpesisom.c
* Spanish language support cleaned:
Modern collation made the default, fixed
CP linkage in ESWIN collations, Clipper
compatibility versions renamed to have an
ending 'C'
Now the following collations are supported:
ES850C - Clipper compatibility CP: IBM850
ESWINC - Clipper compatibility CP: Windows-1252
ESISOC - Clipper compatibility CP: ISO-8859-1
ESWIN - Modern CP: Windows-1252
ESISO - Modern CP: ISO-8859-1
ESMWIN - Compatibility with previous Harbour versions and xhb.
(this collation has wrong linkage, so everyone is
encouraged to use ESWIN or ESISO instead.)
Intentionally not added to hbextern.ch.
; TODO: Add ES850.
; TODO: Check whether Clipper compatibility is indeed true.
* contrib/rddsql/mysqldd.c
! Excluded sizeof() in #ifdef to compile with MinGW.
* contrib/hbhpdf/make_gcc.sh
! Fixed missing quote char.
* contrib/mtpl_gcc.mak
! Fixed to create its own OBJ dir. Not the ultimate
solution, pls enhance if you think.
* source/codepage/cpeswinm.c
* source/codepage/cpeswin.c
! Fixed linked codepage to be Windows-1252 instead of
ISO-8859-1. For the ISO versions, pls see ESISO variants.
* source/codepage/cpes850.c
* source/codepage/cpesisom.c
* Comments.
* contrib/make_gcc_all.sh
! Fixed to not include externally dependent contribs,
when HB_CONTRIBLIBS is specified by user.
* harbour/source/vm/thread.c
* removed casting to void* thread startup function passed
as _beginthread() parameter in OS2 builds. It should be checked if
it does not breaks GCC builds.
* harbour/source/rtl/seconds.c
* use getpid() instead of _getpid() in non GCC OS2 builds
* harbour/include/hbthread.h
! fixed typo
* harbour/source/vm/Makefile
* excluded mainpm.c from OS2 builds
* harbour/source/rtl/hbinet.c
* changed the #include order for OS2 OpenWatcom builds and added some
cleanups - please test other builds.
* common.mak
* source/codepage/Makefile
+ source/codepage/cpsviso.c
+ Added SVISO, which is the same as SVWIN, except it's
internally using ISO-8859-1 CP in sync with its name.
* source/codepage/cpsvwin.c
! Changed internal CP to Windows-1252 from ISO-8859-1,
so that it's in sync with its name.
* harbour/include/hbthread.h
* harbour/source/vm/thread.c
+ added ULONG _hb_gettid( void ) to OS2 builds - thanks to Maurilio
* harbour/source/rtl/hbinet.c
* changed a little bit the order of including header files in OS2 builds
(blink fix for OpenWatcom OS2 builds).
* common.mak
* source/codepage/Makefile
- source/codepage/cpesmwin.c
+ source/codepage/cpeswinm.c
+ source/codepage/cpesiso.c
+ source/codepage/cpesisom.c
* Renamed cpesmwin -> cpeswinm (ESMWIN -> ESWINM) (INCOMPATIBLE)
+ Added Spanish ISO natsort modules. Besides their ID,
they are idendical with current ESWIN* natsorts, because
the WIN versions for some reason are using ISO-8859 CP
instead of Windows-*. This is IMO wrong, even if these CPs
are similar or identical for the Spanish language.
* harbour/source/vm/dynlibhb.c
* forced casting in OS2 builds to eliminate problems with possible
differences between compilers in 'char' type sign
* harbour/source/rtl/filesys.c
! use _getcwd1() only in GCC OS2 builds - it's local GCC function
* removed some header files from OS2 build - please test if it does
not break GCC builds
* source/rtl/hbi18n.c
* Modified __I18N_GETTEXT() to not RTE when trs table
is non-array (like NIL).
* USHORT -> ULONG in a few places.
* source/rtl/gtwvt/gtwvt.c
* Minor formatting.
* source/rtl/gtwvt/gtwvt.c
+ Added support for HB_GTI_ICONRES, HB_GTI_ICONFILE
before the window is created.
! Fixed resource leak when HB_GTI_ICONFILE was used.
! Fixed problem with HB_GTI_ICONRES when it was resetting
the icon if a non-string/non-numeric parameter was passed
passed, which included simply trying to read the value
using hb_gtInfo( HB_GTI_ICONRES ). If this was an intented
feature, pls speak up.
; Please review these changes.
(this file somehow didn't get committed previously)
* harbour/source/rtl/itemseri.c
! fixed 8-bytes integer numbers deserialization
+ added support for serializing number with information about size
and decimal places. It can be activated by passing .T. as second
parameter to HB_SERIALIZE() function.
Mindaugas please test if this is what you asked for.
* harbour/source/rtl/hbi18n.c
* changed USHORT to ULONG to pacify warning and minor speed increase
(it eliminates later conversions to 32bits when variable is used)
* harbour/source/rtl/gtwvt/gtwvt.h
* harbour/source/rtl/gtwvt/gtwvt.c
! fixed HB_GTI_SETPOS_ROWCOL and HB_GTI_SETPOS_XY parameters decoding
* automatically resize caret when cell size is changed
* show window after setting its all parameters to eliminate visible
resizing and repositioning. It did not eliminate multiple calls to
hb_gt_wvt_FitSize() when windows is created. This has to be fixed
yet or at least low level actions in this function not repeated
when window and font dimensions are the same as in last call.
Please test it in real MS-Windows. It should reduce startup
flickering and increase the speed of initial code.
* source/rtl/gtwvt/gtwvt.h
* source/rtl/gtwvt/gtwvt.c
+ Added support for HB_GTI_ICONRES, HB_GTI_ICONFILE
before the window is created.
! Fixed resource leak when HB_GTI_ICONFILE was used.
! Fixed problem with HB_GTI_ICONRES when it was resetting
the icon if a non-string/non-numeric parameter was passed
passed, which included simply trying to read the value
using hb_gtInfo( HB_GTI_ICONRES ). If this was an intented
feature, pls speak up.
; Please review these changes.
* source/rtl/hbi18n.c
% Removed 'comment' field from language file header. Any text
can be added simply by adding it to the translation table.
* contrib/Makefile
! Missing hbdbgfx added here, too.
; BTW, I've intentionally left this lib out from the liblist
until we decide where to put these functions. There is
not much point maintaining for the sake of just a few functions.
If there are no objections, I'll be moving these functions
to hbwin (until someone updates the code to work outside
Windows).
* include/hbextern.ch
* source/rtl/memofile.c
+ Added HB_MEMOREAD() which is identical to MEMOREAD()
except it won't truncate the last byte (on non-UNIX
compatible systems) if it's a EOF char.
See also existing HB_MEMOWRIT().
[TOMERGE 1.0]
* include/hbextern.ch
* source/rtl/hbi18n.c
% Using buffered hb_file*() API in __I18N_LOAD()
instead of plain hb_fs*(). This will cause speedup when
buffering gets implemented in hb_file*(), because
currently two hb_fsRead() will be executed for each
string stored in the language file.
- __I18N_LOAD(): Because of the above, passing a file handle
is no longer possible.
+ Added __I18N_LOADFROMMEMORY( <mem> ) => trs
% Minor internal cleanups.
* include/hbextern.ch
* common.mak
* source/rtl/Makefile
+ source/rtl/hbi18n.c
+ Added basic/low level i18n functions:
__I18N_SAVE( cFileName | nHandle, aSortedTable [, cComment ] ) => lSuccess
__I18N_LOAD( cFileName | nHandle ) => trs
__I18N_GETTEXT( @cText, trs ) => NIL
; NOTE: These were originally based on Giancarlo Niccolai's work in xhb,
but everything was completely reworked, fixed, internals removed,
made portable, lighter, shorter and probably quicker. The used file
format is incompatible, slightly smaller and portable.
; NOTE: The internal format of 'trs' (loaded translation) is also
different. For minimal memory/speed overhead, I've choosen a one
dimensional array, as opposed to the original two dimensional
(like the input aSortedTable array).
; TODO: Higher level functions to handle selecting a default
language, loading files automatically, possibly caching
multiple loaded language translations in memory and providing
a high level HB_I18N_GETTEXT() function. We may also readd
a low-level function to create 'trs' from a memory object
instead of loading it from the disk. We should in any case make
the higher level the lightest and less app specific as possible.
* include/hbver.ch
* source/rtl/version.c
* utils/hbtest/rt_str.prg
* ChangeLog
! Fixed returning bit width.
* Reworked hb_version() parameter values as follows:
(also fixed some differences between docs here in the
previous entry and actual code)
HB_VERSION_HARBOUR (was: HB_V_HARBOUR )
HB_VERSION_COMPILER (was: HB_V_COMPILER )
HB_VERSION_MAJOR (was: HB_V_MAJOR )
HB_VERSION_MINOR (was: HB_V_MINOR )
HB_VERSION_MICRO (was: HB_V_REV )
HB_VERSION_STATUS (was: HB_V_STATUS )
HB_VERSION_REVISION (was: HB_V_COUNT )
HB_VERSION_BLD_DATE_STR (was: HB_V_DATE_TIME )
HB_VERSION_BLD_DATE (was: HB_V_DATE )
HB_VERSION_BLD_TIME (was: HB_V_TIME )
HB_VERSION_PCODE_VER (was: HB_V_PCODE )
HB_VERSION_PCODE_VER_STR (was: HB_V_PCODE_STR )
HB_VERSION_CHANGELOG_LAST (was: HB_V_CHANGELOG_LAST )
HB_VERSION_CHANGELOG_REV (was: HB_V_CHANGELOG_REV )
HB_VERSION_FLAG_PRG (was: HB_V_FLAG_HARBOUR )
HB_VERSION_FLAG_C (was: HB_V_FLAG_C )
HB_VERSION_FLAG_LINKER (was: HB_V_FLAG_LINKER )
HB_VERSION_BITWIDTH (was: HB_V_BITWIDTH )
HB_VERSION_ENDIANNESS (was: HB_V_ENDIANNESS )
This function makes deprecated following functions:
- HB_COMPILER() => hb_version( HB_VERSION_COMPILER )
- HB_PCODEVER() => hb_version( HB_VERSION_PCODE_VER_STR )
- HB_BUILDDATE() => hb_version( HB_VERSION_BLD_DATE_STR )
and macros:
- __ARCH16BIT__
- __ARCH32BIT__
- __ARCH64BIT__
- __LITTLE_ENDIAN__
- __BIG_ENDIAN__
- __PDP_ENDIAN__
- HB_VER_SVNID
- HB_VER_CHLID
- HB_VER_LENTRY
- HB_VER_C_USR
- HB_VER_L_USR
- HB_VER_PRG_USR
; TOFIX: Some term anomalies regarding 'REVISION'.
* source/vm/runner.c
* Minor formatting and added "s_" prefix to static var.