* harbour/src/rdd/dbfcdx/dbfcdx1.c
* minor code cleanup
* harbour/src/vm/macro.c
% eliminated memory allocation in macro compiler for object item assign
operation
* updated hb_macroGenMessage() to work like hb_compilerGenMessage()
* harbour/src/vm/memvars.c
* reverted HB_ISIZ -> int
* harbour/include/hbmacro.h
* harbour/include/hbexprop.h
* harbour/include/hbexpra.c
* harbour/src/common/expropt1.c
- eliminated old hb_compExprNewSend()/hb_macroExprNewSend()
+ added common for compiler and macrocompiler functions:
hb_compExprNewSend(),
hb_compExprNewMacroSend(),
hb_compExprNewMethodObject()
* harbour/include/hbcomp.h
* harbour/src/compiler/harbour.y
* harbour/src/compiler/harbour.yyc
* harbour/src/compiler/harbour.yyh
* use new functions for send coperator
% eliminated asMessage structure - it was the biggest one so this
modification reduce total memory usage by grammar stack
+ added new terminal symbol MacroAny and simplified some rules using it
+ added static function hb_compCheckMethod() used for enumerator
messages
- eliminated public function hb_compForEachVarError()
* harbour/src/macro/macro.y
* harbour/src/macro/macro.yyc
* use new functions for send coperator
* include/hbapi.h
* src/vm/memvars.c
* ULONG -> HB_SIZE where applicable
* int -> HB_ISIZ where it was used for size
* src/vm/macro.c
! LONG -> long for date/time.
* include/hbchksum.h
* src/rtl/hbadler.c
* src/rtl/hbcrc.c
* src/rtl/hbi18n1.c
* contrib/hbmzip/hbmzip.c
* ULONG -> HB_U32 for crc32 and adler32
* ULONG -> HB_U16 for crc16
(the crc table was also changed to HB_U16, pls speak up if this
may cause less-optimal performance than previous state.)
* int -> HB_ISIZ where it was used for size (in adler loop)
* include/hbapi.h
* HB_VMHANDLE is now mapped to 'unsigned long' instead of ULONG
* contrib/hbwin/win_bmp.c
- Deleted no more necessary cast.
* src/vm/runner.c
! Fixed error reported by Petr.
I'm not really sure about the problem, and current code
is not 100% future proof as a HB_SIZE is passed by reference
where ULONG ptr is expected.
* include/hbsetup.h
+ Added HB_DEPRECATED. Can be used as function or variable attribute.
* contrib/hbide/resources/findinfiles.ui
* contrib/hbide/resources/findinfiles.uic
* contrib/hbide/hbide.ch
* contrib/hbide/hbide.prg
* contrib/hbide/idefindreplace.prg
* contrib/hbide/ideobject.prg
* contrib/hbide/idesaveload.prg
! Fixed for RegEx to be compiled with case sensivity.
BTW, hb_regEx( compiledRegExp, cString, lCaseSensitive, ... )
does not honor <lCaseSensitive> attribute. Only
hb_compRegEx() honors.
+ Implemented to remember last find folder and search expression.
* contrib/hbide/resources/findinfiles.ui
* contrib/hbide/resources/findinfiles.uic
* contrib/hbqt/qtgui/QSizePolicy.cpp
* contrib/hbqt/qth/QSizePolicy.qth
* contrib/hbqt/THbQtUI.prg
* contrib/hbide/hbide.prg
* contrib/hbide/idedocks.prg
* contrib/hbide/ideeditor.prg
* contrib/hbide/idefindreplace.prg
* contrib/hbide/ideobject.prg
+ Added more info in "Results".
! Core normalization.
+ Implemented RegEx search.
I am not good at this engine, please test.
% Changed TODO => DONE in one entry in ChangeLog.
* src/vm/runner.c
* BYTE -> char
* contrib/hbct/ctstrfil.c
* LONG -> HB_ISIZ
* contrib/hbmzip/hbmzip.c
* Changed to use FS API instead of C RTL.
* Using std Harbour method to include windows.h.
* package/winuni/RELNOTES
+ Added note about downgrade to mingw64 4.4.0, which is
a more stable release than 4.5.0, and where .dlls also
work properly.
* config/wce/mingwarm.mk
* config/win/mingw.mk
! Fixed to not use -fomit-frame-pointer option for debug builds.
! Hack added to disable -fomit-frame-pointer for hbwin lib.
; TOFIX: Fix hb_Dynacall() to not be sensitive on this option
in mingw builds. Is it possible?
* contrib/hbxbp/xbpdialog.prg
! Fixed a long-standing bug where oDlg:close slot was
hiding the window instead of passing taking appropriate
action when user was opting not to close the window
returning .F. from this codeblock.
* contrib/hbide/resources/findinfiles.ui
* contrib/hbide/resources/findinfiles.uic
* contrib/hbqt/THbQtUI.prg
* contrib/hbide/hbide.ch
* contrib/hbide/hbide.prg
* contrib/hbide/ideeditor.prg
* contrib/hbide/idefindreplace.prg
* contrib/hbide/idemisc.prg
* contrib/hbide/ideprojmanager.prg
* contrib/hbide/idesaveload.prg
+ Implemented "Search" option activated via "Search" toolbar icon.
This implementation presents a dialog to select any number of
available "Projects", one "Folder", and "Opened Tabs" in any
combination".
The results are presented in within-the-dialog edit window
in a nicely colored and formatted way. This editor also provides
for "Select All", "Copy", "Clear", "Print", "Find...",
"Zoom In/Out" and some more ( to be activated ) options.
These options are visible in context menu activated with
right-clicking inside the "Results" editor.
This implemetation also facilitates multiple instances of the
"Search" dialogs carrying on the operation at the same time.
Double-click on any line will open an edit-tab in the main editing
area, cursor will be positioned highlighted on the "Expression"
string, keeping the focus in "Results" editor only.
Normal usage is carrying the expected actions but I must be
ignoring something important. Please test.
Please forward any suggessions you think will make it more useful.
; TODO: Regex implementation.
Regex for multiple lines.
Including sub-folders.
Including sub-projects.
"Replace" implementation ( I am exploring how it can be safest )
* src/rtl/gttone.c
+ Using ANSI C types.
! ULONG -> DWORD for Windows API calls.
* src/rtl/direct.c
! ULONG -> HB_FATTR
* src/rtl/itemseri.c
* include/hbapiitm.h
* ULONG -> HB_SIZE
* src/rtl/samples.c
+ Using ANSI C types. This fixes possible
incompatibilities with original .prg implementation
in Clipper.
* contrib/hbhpdf/harupdf.c
* Conversion to libharu BOOL value cleaned.
* include/hbapicdp.h
* utils/hbmk2/hbmk2.prg
* Formatting.
* src/rtl/setpos.c
* src/rtl/console.c
! Fixed SETPOS() and DEVPOS() to return the first parameter
unconditionally. For SETPOS() it's protected with 'HB_CLP_UNDOC
or HB_COMPAT_C53', for DEVPOD() it's protected with 'HB_CLP_UNDOC'
only.
* src/rtl/diskspac.c
* Using 'int' for drive spec.
* Minor cleanup.
; Please review me.
* harbour/src/rtl/filesys.c
* updated HB_FS_[SG]ETDRIVE() macros to operate on 'int' type
* changed 'unsigned int' to 'int' in code using HB_FS_[SG]ETDRIVE()
macros
* harbour/src/vm/task.c
* harbour/src/vm/classes.c
* harbour/src/rtl/strpeek.c
* updated to use ANSI types
* harbour/src/rtl/hbmd5.c
% small optimization (more compiler friendly code due to fixed alignment)
* src/rtl/console.c
* src/rtl/shadow.c
! Fixed three remaining places where color value was cast to BYTE type.
; QUESTION1: What to do with BYTE in hb_fs*Drv() calls?
Should it be int or unsigned int?
; QUESTION2: What to do with BYTE types in checksum calculations and
low level color storage, is HB_U8 type good?
* src/rtl/transfrm.c
* src/rtl/memofile.c
* BYTE -> char
* src/rtl/gtkbstat.c
* Formatting.
* harbour/include/hbapifs.h
* harbour/src/rtl/filebuf.c
* harbour/contrib/hbmemio/memio.c
* harbour/contrib/hbnetio/netiocli.c
+ added new method:
void Flush( PHB_FILE pFile, HB_BOOL fDirty );
to replaceable RDD IO structure (HB_FILE)
+ added new function:
void hb_fileFlush( PHB_FILE pFile, HB_BOOL fDirty );
* harbour/src/rdd/dbfntx/dbfntx1.c
* harbour/src/rdd/dbfnsx/dbfnsx1.c
* harbour/src/rdd/dbfcdx/dbfcdx1.c
* harbour/src/rdd/dbffpt/dbffpt1.c
* use hb_fileFlush()
* harbour/src/vm/hvm.c
* harbour/include/hbxvm.h
! fixed hb_xvm{Local,Static,Module}Name() to use 'const char *'
instead of 'char *' - modifications by Xavi (jarabal)
* harbour/include/hbapi.h
* harbour/include/hbxvm.h
* harbour/include/hbmacro.h
* harbour/include/hbcompdf.h
* harbour/src/vm/hvm.c
* harbour/src/vm/macro.c
* harbour/src/vm/memvars.c
* replaced some 'BYTE' types with 'unsigned char' or 'int' types
* cleanup some other casting and types to reduce conversions
between function calls
* harbour/src/common/expropt1.c
; updated comments
* harbour/include/hbpp.h
* harbour/include/hbexprop.h
* harbour/include/hbexpra.c
* harbour/include/hbexprb.c
* eliminated HB_EXPR_PCODE?() macros
! fixed potential GPF trap during compilation of _GET_() functions
which can be exploited by strange code using some special expressions
as get variable.
TODO: eliminate hb_compExprClone() used in hb_compExprSetGetBlock(),
our optimization module does not care about shared expressions
so it can be source of serious problems in the future if someone
use this functions for non optimized expression which will be
reduced later.
* emulate clipper behavior for codeblock optimizations and do
not optimize all codeblocks if -kc switch is used and codeblocks
is inside non optimized part of code like (Clipper has such
places)
% simplified and optimized some functions like hb_compExprReduceList()
* contrib/hbfbird/tests/test.prg
! Fixed to work at all. This code was complete nonsense.
+ Added more status display.
; Anyhow basic tests shows that recent FB changes are okay,
but class wrapper never worked and tests were either
dummies or wrong. Please test hbfbird with real life
code.
* contrib/hbfbird/tests/stress.prg
* Formatting.
* contrib/hbfbird/tests/testapi.c
! Fixed to not refer to env specific IP. The table name is still
wrong though.
* contrib/hbfbird/tfirebrd.prg
+ Added TOFIX about very old and very basic problem in the
FB class wrapper.
* contrib/hbmysql/mysql.c
! Fixed to use GC collected objects.
+ Added RTEs when wrong object is passed.
! Fixed to make MYSQL_FIELD_COUNT() available regardless of
mysql lib version we're building against. It will return
zero if mysql lib doesn't support it.
; Deprecated MYSQL_CLOSE() and MYSQL_FREE_RESULT(). It's
enough to replace them with NIL assigments, or simply
delete them.
; Please test it.
* contrib/hbmysql/tmysql.prg
+ Changed to not use deprecated functions.
* src/common/hbffind.c
* src/rtl/fssize.c
* Formatting.
* contrib/hbfbird/firebird.c
+ Added GC collected object for db connection.
* Replaced HB_RETNL_FBERROR() with actual code to make
code flow apparent.
* Replaced DIALECT constant with Firebird predefined one.
! Fixed to use ISC_STATUS_ARRAY instead of status arrays
with arbitrary sizes like MAX_FIELDS.
+ Throwing RTEs if non-db pointer is passed in places
where it is required.
* Adjusted scope of some variables.
! Fixed several leaks in FBQUERY().
% Optimized to use hb_xrealloc() instead of using
subsequent hb_xfree()/hb_xgrab() calls.
% Other optimizations.
+ Added TOFIX to more memory leaks.
! Fixed FBGETDATA() to not crash when NULL pointer is passed.
! Fixed FBGETDATA() to not crash when negative position
parameter is passed.
; TOFIX: Convert remaining memory objects to GC collected
ones. Unfortunately the code is quite dirty in this
respect, so it require more serious rewrite in places.
; TOFIX: Address TOFIXes in code.
; Please test it, I don't use this, and didn't make
functional tests.
* contrib/hbfbird/tests/test.prg
+ Displays error on connection failure.
* Formatting.
* utils/hbmk2/hbmk2.prg
+ Enabled -workdir option for non -inc modes.
* Change default workdir to be the OS temp dir.
Please test it, especially on non-win OSes.
* src/rtl/fstemp.c
* include/hbapifs.h
* include/hbextern.ch
+ Added HB_DIRTEMP() .prg level function. Returns name of temp dir,
with closing backslash.
+ Added hb_fsTempDir() .c level function.
; Please review, especially MS-DOS, OS/2, which I won't be able
to test.
* src/rtl/fstemp.c
* Cleanup: Deleted hb_fsCreateTempLow(), made layout more clear.
; TOFIX: For some builds, MS-DOS, OS/2 and WIN without WIN IO
the temp directory will be wrongly calculated by checking
TMPDIR envvar. Such envvar seems *nix specific.
If new hb_fsTempDir() will be tested, above can be fixed
by using this new function.
* package/winuni/RELNOTES
+ Noted update to Firebird 2.5.0rc1
* contrib/hbpgsql/postgres.c
+ Marked recently deprecated function as HB_LEGACY_LEVEL3.
* contrib/hbfbird/firebird.c
* Cleanup for a macro.
* contrib/hbnetio/utils/netiosrv.prg
+ Using HB_HRB_BIND_FORCELOCAL when loading .hrb.
* contrib/hbnetio/utils/modules/test.prg
+ Marked function as STATIC.
* ChangeLog
* Old TODO marked DONE.
* harbour/include/hbvm.h
* harbour/src/vm/hvm.c
* covered hb_vmPushState() and hb_vmPopState() functions by
HB_LEGACY_LEVEL3 macro. These functions are depreciated,
hb_vmRequestReenter()/hb_vmRequestRestore() should be used
instead.
* harbour/contrib/hbct/video.c
* pacified DJGPP warning
* harbour/external/jpeg/Makefile
* define HAVE_STDLIB_H - it's necessary for exit() function used in
jerror.c
* utils/hbmk2/hbmk2.pt_BR.po
* utils/hbmk2/hbmk2.hu_HU.po
* utils/hbmk2/hbmk2.prg
+ Added some details on <script> usage. Most probably it's still
confusing, I you know a better way, tell.
* contrib/hbfimage/fi_winfu.c
* Formatting.
* contrib/hbpgsql/tpostgre.prg
+ Formatted.
! Indented.
% Optimized to use SWITCH/CASE.
% Optimized to avoid ASize() and AAdd() in a few places.
+ Using constants for structure array positions.
* contrib/hbpgsql/tpostgre.prg
* contrib/hbpgsql/postgres.ch
* contrib/hbpgsql/postgres.c
+ Added and using HBPG_META_* constants.
* harbour/src/rdd/dbfcdx/dbfcdx1.c
! do not verify FOR expression just after loading new index file
in SIXCDX RDD. It's CL52 DBFCDX / SIX3 SIXCDX compatible behavior
but Harbour DBFCDX and CL53 DBFCDX / COMIX verifies both KEY and
FOR expressions when index is loaded.
! fixed RTE numbers to be CL53 compatible when index with wrong
(returning wrong results) KEY or FOR expression is loaded.
* harbour/src/vm/hvm.c
* harbour/src/vm/itemapi.c
* harbour/src/rtl/errapi.c
* harbour/contrib/xhb/cstructc.c
* changed HB_TRACE_STEALTH() to HB_TRACE()
* harbour/include/hbtrace.h
* harbour/include/hbstack.h
* harbour/src/vm/estack.c
* harbour/src/nortl/nortl.c
+ added hb_traceset() and hb_traceinfo()
* harbour/include/hbtrace.h
* harbour/src/common/hbtrace.c
* use hb_traceset()/hb_traceinfo() instead of hb_tr_file_, hb_tr_line_,
hb_tr_level_
- removed hb_tr_file_, hb_tr_line_, hb_tr_level_
+ added hb_tr_stealth() function and modified HB_TRACE_STEALTH()
macro to not touch any of hb_tr_*_ global variables
+ added HB_TR_FM macro which can be used to infrom FM statistic
module that it should take filename and line number from hb_tr_*_
global variables
* harbour/src/vm/fm.c
- removed dummy code with HB_TR_LEVEL setting - HB_TR_LEVEL is
always defined by hbtrace.h
* use hb_traceset()/hb_traceinfo() instead of hb_tr_file_, hb_tr_line_,
hb_tr_level_
* respect HB_TR_FM
* harbour/src/rtl/gttrm/gttrm.c
* formatting
* harbour/src/vm/itemapi.c
* harbour/src/vm/extend.c
* harbour/src/rtl/descend.c
* harbour/src/rtl/hbgtcore.c
* harbour/src/rtl/mtran.c
* harbour/src/rtl/samples.c
* harbour/src/common/hbstr.c
* harbour/src/common/hbdate.c
! fixed possible GPF traps in HB_TRACE() messages caused by %s used
for not \0 terminated strings or uninitialized buffers
* contrib/hbide/hbide.hbp
* contrib/hbide/hbide.prg
* contrib/hbide/idedocks.prg
* contrib/hbide/idefindreplace.prg
* contrib/hbide/idemisc.prg
* contrib/hbide/ideprojmanager.prg
* contrib/hbide/iderequests.prg
* contrib/hbide/idethemes.prg
* contrib/hbide/resources/projectproperties.ui
+ contrib/hbide/resources/finddialog.uic
+ contrib/hbide/resources/findinfiles.uic
+ contrib/hbide/resources/findsource.uic
+ contrib/hbide/resources/mainwindow.uic
+ contrib/hbide/resources/projectproperties.uic
+ contrib/hbide/resources/selectionlist.uic
+ contrib/hbide/resources/selectproject.uic
+ contrib/hbide/resources/themes.uic
* contrib/hbqt/hbqt.ch
* contrib/hbqt/qtgui/QLabel.cpp
* contrib/hbqt/qtgui/QSizePolicy.cpp
* contrib/hbqt/qtgui/QSpacerItem.cpp
* contrib/hbqt/qth/QLabel.qth
* contrib/hbqt/qth/QSizePolicy.qth
* contrib/hbqt/qth/QSpacerItem.qth
* contrib/hbqt/THbQtUI.prg
* contrib/hbxbp/xbpdialog.prg
* contrib/hbxbp/xbpwindow.prg
+ This commit implements .uic files generated
via uic.exe of Qt distribution given a .ui file.
And hence eliminated the wooping cargo of QtUiTools.lib
which consumes arount 23+ MB over and above of application load.
All the dialogs/windows used in hbIDE are fully functional.
This implementation is in parallel of previous one and
either can be used. The difference in syntax is ( and as used in hbIDE )
#ifdef HBIDE_USE_UIC
oDlg := HbQtUI():new( ::oIDE:resPath + "selectproject.uic", ::oDlg:oWidget ):build()
#else
oDlg := HbQtUI():new( ::oIDE:resPath + "selectproject.ui", ::oDlg:oWidget ):create()
#endif
To take advantage of this feature you need to compile hbIDE
with -dHBIDE_USE_UIC. You can examine the task manager for memory
usage, with and without -dHBIDE_USE_UIC.
Please note that this implementation is not 100% complete.
I could synchronize the dialogs of hbIDE only. Though most of the
code is good for daily-use widgets still we need to add some
more functionality into the code. But it is simple. Mainly
we be needing more constants included in hash to convert
string defines to numeric representation.
Please test and report any issues.
* contrib/hbpgsql/postgres.c
! PQEXECPARAMS() fixed to not GPF when non-array is passed as 3rd parameter.
! PQESCAPEBYTEACONN() fixed to not GPF when non-string is passed as 2nd parameter.
! PQFNUMBER() fixed GPF (after prev commit)
% Deleted hb_pcount() checks. This served no useful purpose. It's better to
check for HB_IS*() is we want to enforce some parameters.
* contrib/hbpgsql/postgres.c
* contrib/hbpgsql/tests/test.prg
* Destructor PQCLOSETRACE() marked as deprecated, replaced in
test app with NIL assignment.
! Fixes to FILE object type.
; All this is only relevant if built with NODLL flag.
* contrib/hbpgsql/postgres.c
+ Added GC support for all remaining pointer types (result/cancel/FILE).
+ Added RTE when wrong pointer or wrong number of parameter is passed
to functions.
This means that behavior is now INCOMPATIBLE when wrong parameters
are encountered in these functions.
; Destructor functions PQFREECANCEL(), PQCLOSE(), PQCLEAR() marked
as 'deprecated'.
These are not needed, it's enough to assign NIL to their holder
variables on .prg level.
% Cleanups along the way.
; TODO: Fix sloppy parameter checking which only check number of
parameters instead of enforcing expected type.
; Please test.
* contrib/hbpgsql/tests/async.prg
* contrib/hbpgsql/tests/test.prg
* contrib/hbpgsql/tests/cache.prg
* contrib/hbpgsql/tests/stress.prg
% Replaced deprecated destructor functions with '<var> := NIL'.
* utils/hbmk2/hbmk2.prg
* Formatting.
* harbour/src/rtl/direct.c
! do not strip other attributes when "V" is set - it's neither
DOS not Clipper compatible behavior
Clipper passes attributes to OS and then OS decides about
their interpretation, i.e. FreeDOS replicates hardcoded
in our previous DIRECTORY() code behavior but MS-DOS doesn't.
% small simplification
* harbour/src/common/hbffind.c
! fixed emulation of DOS volum attribute in MS-Windows builds of
hb_fsFindFirst()/hb_fsFindNext().
It also fixes problem in HBCT FILEATTR() function in MS-Windows
builds.
This is still not full DOS emulation. Exact emulation should
automatically add trailing \ to given path, detect drive letter
and resolve their current directories. If some windows users
think it's important then they can extend this emulation.
Now it can be done as local modifications only.
Please test with real MS-Windows.
! fixed error code setting in UNICODE MS-Windows builds of
hb_fsFindFirst()/hb_fsFindNext().
* harbour/contrib/hbct/files.c
* removed old hack which is not longer necessary for current code.
* harbour/include/hbapifs.h
* small modifications to make HB_FNAME structure alignment independent
* harbour/src/vm/hvm.c
! fixed GPF when WITH OBJECT reference is used inside codeblock
evaluated outside WITH OBJECT / ENDWITH structure
TODO: forbid using WITH OBJECT references in nested codeblocks
* src/rtl/Makefile
* src/rtl/cdpapi.c
+ src/rtl/cdpapihb.c
* include/hbapicdp.h
+ Moved Harbour level functions to a separate file.
I had to rename and publish three static functions.
Eventually the low level part should go to hbcommon lib.
; TODO: HB_CDPLIST() is still to be moved, I couldn't find out elegant
low-level API to solve it.
* contrib/hbct/files.c
* 0 -> HB_FA_ALL.
* utils/hbmk2/hbmk2.pt_BR.po
* utils/hbmk2/hbmk2.hu_HU.po
* utils/hbmk2/hbmk2.prg
+ Added verbose information when hbmk2 is run from outside Harbour tree
and HB_INSTALL_PREFIX is not set either. Just a wild guess what might
cause difficulty for some users when trying to use hbmk2.
* src/rtl/fssize.c
* contrib/hbqt/hbqt_hbevents.cpp
* Formatting.