* harbour/src/rtl/hbcrc.c
! fixed hb_crcct() to work with polynomials smaller then 8 bit,
i.e. parity bit: x^1+1 => 3
% small simplification in hb_crc() function
* contrib/hbwin/win_prn2.c
+ Eliminated rest of HB_TCHAR*() calls.
Please review, and test for memory leaks.
; No more HB_TCHAR*() macros in hbwin code.
* contrib/hbwin/win_misc.c
+ Added cast.
* contrib/hbqt/hbqt_base.cpp
* Minor formatting.
* src/compiler/hbmain.c
* src/compiler/cmdcheck.c
* src/compiler/hbcomp.c
* src/compiler/hbusage.c
* include/hbcompdf.h
+ Added support for -i- and -i+ options. They will disable/enable
handling of INCLUDE envvar.
* config/rules.mk
+ Added -i- Harbour compiler switch to avoid any interference
with user set INCLUDE envvars.
* contrib/hbqt/hbqt_hbqmainwindow.cpp
* contrib/hbqt/hbqt_hbqmainwindow.h
* contrib/hbxbp/xbpwindow.prg
+ Implemented GC collectible pointer for HBQMainWindow().
/* Please do not commit anything in HBQT/HBXBP/HBIDE as I will be cleaning
up the code. BTW how can I invoke HBXBP_DEBUG() functionality.
I was just busy with the preparations of my daughter's wedding.
*/
* contrib/hbwin/mapi.c
+ Added support for unlimited number of recipients and
attached files. Please test and review.
* utils/hbmk2/hbmk2.prg
+ Added support for linux/open64. (Please test)
* INSTALL
+ Added open64.
* harbour/include/hbsetup.h
* harbour/include/hbdefs.h
* harbour/include/hbthread.h
* harbour/src/common/hbver.c
* harbour/bin/hb-func.sh
* harbour/bin/postinst.sh
* harbour/config/linux/gcc.mk
+ harbour/config/linux/open64.mk
+ added support for Open64 C/C++ compiler in Linux builds
* harbour/src/common/hbver.c
* removed unnecessary casting compiler version number parameters
to 'short'
* extended the size of szBuf buffer as requested by Tamas
* contrib/hbwin/mapi.c
+ Added support for UNICODE.
; Untested, I don't have a mailer on any Windows systems I have
access to to try it.
Please make tests with MSVC also, to check UNICODE.
! Fixed typo in prev modification.
! Added ( ULONG ) cast to -1 value.
+ Added copyright header.
* contrib/hbwin/tests/testmapi.prg
+ Added some test data to make it work.
(couldn't test it though, all I get is msgbox that I have no
mailer)
* src/rtl/gtwin/gtwin.c
* Using HB_SIZEOFARRAY().
* include/hbapi.h
* Typo in comment.
* ChangeLog
+ Added missing item to prev.
* contrib/hbwin/tests/testmapi.prg
! Fixed missing SVN props.
! Added missing SVN ID.
* Formatting.
; TOFIX: This example expects arrays and logical value from command line,
so it won't work.
* contrib/hbwin/Makefile
* contrib/hbwin/mapi.c
+ Added to Makefile.
! Added SVN ID.
! Added License header. (pls add your name to copyright headers)
! Fixed to use simple quote to include Harbour headers.
! Fixed Windows header inclusion.
! Disabled for UNICODE.
! Fixed to not use return value on stack as temporary variable.
! Fixed to not use static variable.
! Fixed UNICODE literals (also for WinCE).
! Fixed to not create NULL "holes" in passed to Windows lists
if received arrays have wrong content.
! Fixed to check return value of GetProcAddress().
% Optimized to only do parameter processing if MAPISendMail is available.
* Cleaned string parameter defaulting to "".
* Castings added and changed.
* Optimizations.
* Formatting (indentation, deleted unnecessary {}, variable scopes, ' ;' endings)
* Variable scopes.
* Using HB_SIZE.
* Avoiding duplicating constants.
+ Added some provisions for UNICODE support. Otherwise whole
code is disabled until this gets fully implemented.
; TODO: It'd be probably beneficial to remove artificial limit of
100 recipients and file attachments.
; NOTE: I didn't make any functional tests, so please make some.
An example/test code would be nice in tests subdir.
* harbour/include/hbwinuni.h
+ added new macro HB_ITEMGETSTR()
* harbour/src/rtl/gtwin/gtwin.c
* modified to use new UNICODE API instead of HB_TCHAR_*()
* harbour/contrib/hbwin/win_misc.c
* rewritten WIN_GETCOMMANDLINEPARAM()
New version does not use old HB_TCHAR_*() API and respect multiple
quoting by "" (i.e. .\"myapp"li"cation".exe)
TOFIX: WIN_ANSITOWIDE() and WIN_WIDETOANSI() are wrong and have
to be fixed. Please remember that number of character
after conversion to/from UNICODE can be different then
original number of chars, i.e. multibyte characters
can be replaced by single Unicode character or one Unicode
character may use few bytes representation.
* contrib/hbqt/hbqt_hbqmainwindow.cpp
* Temporarily disabled mutex for HBMainWindow.
Please report any problems and experiences, or any reason
for the mutex implemented here, it's possible that I'm
missing something.
* contrib/hbqt/qtgui/qtguis/Makefile
* contrib/hbqt/qtgui/Makefile
* contrib/hbqt/Makefile
* contrib/hbqt/detect.mk
* contrib/hbqt/hbqts/Makefile
* contrib/hbqt/qtnetwork/qtnetworks/Makefile
* contrib/hbqt/qtnetwork/Makefile
* Generalized the way QT component header dirs are enabled.
This makes it possible to use this logic with gtqtc.
* contrib/gtqtc/gtqtcs/Makefile
* contrib/gtqtc/Makefile
+ 'moc' logic synced with hbqt.
! Fixed to use QT component header inclusion.
* contrib/hbqt/hbqt_slots.cpp
* Line ending spaces.
* src/vm/dynlibhb.c
+ Using new UNICODE conversion macros in HB_LIBLOAD().
* INSTALL
* Minor.
* contrib/xhb/hbsyslog.c
+ HB_SYSLOGOPEN(): Added UNICODE support. (this bug was hidden
by explicit cast)
* Using HB_TRUE/HB_FALSE.
+ Using new UNICODE conversion macros in HB_SYSLOGMESSAGE().
(functionally not tested)
* Formatting.
* contrib/xhb/hblogdef.ch
+ Added comment that the header is used by C code.
* contrib/hbqt/detect.mk
! Fixed static build after last commit.
* contrib/hbwin/wapi_winbase.c
* contrib/hbwin/win_dll.c
* Variable renamed.
* contrib/hbwin/win_prn2.c
% Minor optimization.
* contrib/hbwin/win_osc.c
+ Using new UNICODE conversion macros in WIN_OSVERSIONINFO().
; NOTE: Remaining "problem area" is HB_TCHAR_* usage in low level
code, when conversion needs to be done from/to C buffer
instead of Harbour parameter/return value. The problem
is that I don't have a pattern for that.
* src/vm/strapi.c
% Minor optimization (using cdp variable instead of repeated hb_vmCDP() calls.)
* include/hbwinuni.h
+ Added HB_ITEMPUTSTR[LEN]() macros.
+ Added HB_STRUNSHARE() macro.
! Fixed typos in HB_ARRAYSETSTRLEN() macro values.
* contrib/hbwin/win_prn2.c
+ Using new HB_ITEMPUTSTR() macro instead of HB_TCHAR*().
* contrib/hbwin/win_misc.c
! WIN_RUNDETACHED(): Fixed to guarantee writable buffer in second
parameter of CreateProcess(). I've choosen to always pass a writable
buffer, although MS requires this only for UNICODE mode.
* contrib/hbwin/wapi_commctrl.c
+ Using new UNICODE parameter passing macros instead of HB_TCHAR*() ones.
! Fixed return values of WAPI_IMAGELIST_GETIMAGEINFO() to be empty
string instead of unset (NIL) in case of error.
+ contrib/hbqt/filelist.mk
! Missed from previous commit.
* contrib/hbwin/win_regc.c
* Removed trailing spaces (realized I used a temp instance
of 64-bit Far Manager for the last couple of days)
(there will be more)
* harbour/src/vm/strapi.c
* harbour/include/hbapistr.h
+ added new functions:
hb_itemPutStr(), hb_itemPutStrUTF8(), hb_itemPutStrU16(),
hb_arrayGetStr(), hb_arrayGetStrUTF8(), hb_arrayGetStrU16(),
hb_arraySetStrLen(), hb_arraySetStrLenUTF8(), hb_arraySetStrLenU16(),
hb_arraySetStr(), hb_arraySetStrUTF8(), hb_arraySetStrU16(),
* harbour/include/hbwinuni.h
* removed unnecessary and danger casting in UNICODE version of
HB_RETSTR(), HB_RETSTRLEN(), HB_STORSTR() and HB_STORSTRLEN() macros
* modify HB_ARRAYSETSTR() and HB_ARRAYSETSTRLEN() macros to use new
STR API functions
* harbour/external/Makefile
* modified the order of compiled libraries for better performance in
parallel compilation (-j<N>)
* contrib/hbwin/wapi_winbase.c
* Eliminated hb_parclen() call in WAPI_FORMATMESSAGE() function.
* contrib/hbwin/win_regc.c
* WIN_REGSETVALUEEX(): Adjusted casting to not drop const.
! WIN_REGSETVALUEEX(): Added support for UNICODE builds when
string types (non-binary data) are passed.
* contrib/hbwin/tests/testreg.prg
+ Extended with basic test for above.
* contrib/hbqt/Makefile
* contrib/hbqt/detect.mk
+ contrib/hbqt/moc.mk
* contrib/hbqt/hbqts/Makefile
* contrib/hbqt/qtgui/qtguis/Makefile
* contrib/hbqt/qtgui/Makefile
* contrib/hbqt/qtcore/qtcores/Makefile
* contrib/hbqt/qtcore/Makefile
* contrib/hbqt/qtnetwork/qtnetworks/Makefile
* contrib/hbqt/qtnetwork/Makefile
+ Moved 'moc' build logic to separate file.
+ Added support for MOC_HEADERS in all sub-libs.
This allows to avoid hacks to place every custom
created component in central lib. (It probably allows
to avoid central lib altogether.)
! Fixed broken static build after recent changes.
(I've readded central filelist.mk to avoid
redundancy, but the file isn't an automatically
generated one anymore)
% Optimized build to not provide all subsystem header
dirs for each QT sub-libs, only those which are needed.
Now QtCore header dir is passed to all components,
but QtGui and QtNetwork is passed only to these
subcomponents.
Central hbqt lib gets all dirs, but hopefully this
will be cleaned eventually.
% Cleaned to not use /Qt include dir. It's apparently
not needed.
* contrib/hbqt/qth/QObject.qth
* contrib/hbqt/qtcore/QObject.cpp
! Core component was referring to a GUI one, and hbqt_par_QWidget()
was used to retieve a QObject inside QObject wrappers.
Please fix me if it was intentional, but it didn't look right and
came out after cleaning header dir usage.
* contrib/hbide/hbide.hbp
+ Added MSVC link switched sent by Andi to make QT 4.6.0
libs to default Harbour build.
* include/hbwinuni.h
+ Added HB_ARRAYSETSTR*(). Based on Przemek's post.
* contrib/hbwin/wce_simc.c
* contrib/hbwin/wce_smsc.c
* contrib/hbwin/win_prn1.c
* contrib/hbwin/win_prn2.c
* contrib/hbwin/win_regc.c
+ Using new UNICODE parameter passing macros instead of HB_TCHAR*() ones.
* Minor rework WIN_TEXTOUT() and WIN_GETTEXTSIZE() to not use hb_parclen()
and protect some more against wrong length parameter.
; TOFIX: HB_ARRAYSETSTR() usage crashes (tested in non-UNICODE with testprn3)
I didn't want to undo the whole thing, but can't find the err either.
; TOFIX: hb_parclen() usage.
; TOFIX: HB_ARRAYSETSTR() with NULL string parameter.
; TOFIX: HB_PARSTRDEF() to really default to empty string for non-string params.
; TODO: Remaining HB_TCHAR_*() usages.
; TODO: Peer-review what I did.
* contrib/hbwin/wapi_winbase.c
! Fixed for WinCE after recent addition of new wrappers.
This means exclusion of WAPI_WAITFORSINGLEOBJECTEX() and
WAPI_WAITFORMULTIPLEOBJECTSEX() for this platform.
! Minor fix in size of allocated buffer in WAPI_FORMATMESSAGE().
(buffer was too large in non-UNICODE).
* include/hbextern.ch
+ Added HB_THREADONCEINIT().
* contrib/hbqt/hbqt.ch
* contrib/hbxbp/xbp.ch
! Moved XBP specific macro to HBXBP header.
* contrib/hbqt/tests/demoqt.prg
! Deleted no more needed init calls.
* contrib/hbqt/hbqt_events.cpp
+ Added TOFIX about GC collected pointer stored in low level
structure. (source of GPF).
* contrib/hbwin/win_misc.c
* contrib/hbwin/wapi_winbase.c
* contrib/hbwin/wapi_winuser.c
* contrib/hbwin/win_regc.c
* contrib/hbwin/win_prn1.c
* contrib/hbwin/win_prn3.c
* contrib/hbwin/wapi_shellapi.c
* contrib/hbwin/legacyco.c
- Deleted now unnecessary '( LP[C]TSTR )' casts.
+ Cleaned const usage in WIN_PRINTERSETDEFAULT().
F.e. OpenPrinter() has apparently wrong winapi declaration,
so a cast must have been added.
; TOFIX: CreateProcessW() second parameter has to be a read/write
buffer. Przemek, do you have an idea how to solve that
the cleanest way?
(for now I kept a cast, assuming that a buffer is
created by Harbour conversion API, but that's not
something it guarantees in the future.)
* harbour/include/hbapiitm.h
* harbour/src/vm/classes.c
* added new internal HVM macro
* harbour/src/vm/thread.c
+ added new function
hb_threadOnceInit( @<item> <value> ) -> <lInitialized>
It assigns <value> to <item> if <item> is NIL in MT safe way so it's
assigned only once. It's reduced but faster version of hb_threadOnce()
* harbour/include/hbapicdp.h
* define HB_WCHAR as wchar_t on Windows platforms for compilers which
refuse to make conversions between types using the same base type.
* harbour/contrib/hbwin/win_dll.c
* code cleanup
* contrib/hbqt/qth/QAbstractItemModel.qth
* contrib/hbqt/qth/QTableView.qth
* contrib/hbqt/hbqt_events.cpp
* contrib/hbqt/hbqt_slots.cpp
* contrib/hbqt/hbqt_hbqmainwindow.cpp
+ Added TOFIX (also one QUESTION) to these code parts.
All of them are potential leak or GPF generator issues.
Could someone take a look at these?
* contrib/hbqt/Makefile
- contrib/hbqt/hbqt_hbdrawingarea.h
- contrib/hbqt/hbqt_hbdrawingarea.cpp
- Deleted unused custom class.
* contrib/hbqt/qtgui/QTableView.cpp
* contrib/hbqt/qtcore/QAbstractItemModel.cpp
* Regenerated.
* contrib/hbqt/hbqt_events.cpp
* contrib/hbqt/hbqt_slots.cpp
! Fixed events/slots handling to make sure the objects
always exist on access.
% This also made explicit initialization from .prg
code unnecessary, so these two functions got deleted:
QT_SETEVENTFILTER(), QT_SETEVENTSLOTS()
! Fixed events/slots handling to reset thread local object
pointer to NULL after destruction.
* contrib/hbxbp/xbpsle.prg
* contrib/hbxbp/xbplistbox.prg
* contrib/hbxbp/xbpwindow.prg
* contrib/hbxbp/xbptreeview.prg
* contrib/hbxbp/xbpdialog.prg
* contrib/hbxbp/xbpspinbutton.prg
* contrib/hbxbp/xbpgeneric.prg
% Simple wrapper named HBXBP_SETEVENTFILTER() deleted and
replaced with QT_GETEVENTFILTER() calls.
(name still subject to change)
; NOTE: 1) In demoxbp MT mode build, the second dialog behaves
strangely. It updates the screen slowly and not at all.
Pritpal, please check it to make sure not some
recent change broke it.
2) Forgot to mention in prev entry, but removing
HBQMainWindow() mutex altogether didn't cause any
change/loss of functionality in my tests, so my
question is: Is it really needed?
* contrib/hbqt/hbqt_hbqmainwindow.cpp
* contrib/hbxbp/xbpgeneric.prg
+ Replaced HB_MUTEXCREATE() and HB_MUTEXDESTROY() with
automatic initialization and deinitialization.
; NOTE: From now on HBQT needs to be requested by apps
willing to use HBQT, with:
REQUEST HB_QT
This will ensure in the future that all init and
deinit procedure are done correctly. It also makes it
safe to use QT even from INIT and EXIT PROCECUREs.
* contrib/hbqt/tests/demoqt.prg
* contrib/hbxbp/tests/demoxbp.prg
* contrib/hbide/hbide.prg
+ Added REQUEST HB_QT.
* harbour/include/hbatomic.h
* removed 'static inline' from OpenWatcom ASM functions defined
by '#pragma aux ...' to make OpenWatcom < 1.8 happy.
Version 1.8 ignores 'static inline' attributes in such declarations.
* harbour/config/dos/watcom.mk
* harbour/utils/hbmk2/hbmk2.prg
* switched from DOS/4GW to DOS/32A extender. It's faster what is
noticeable also in final Harbour binaries, does not have DOS4G
command line limitations and has nice tools which allow to easy
set different runtime parameters (ss.exe) or compress final
executable (sc.exe)
BTW people having problem with maximum command line size in
OpenWatcom tools can replace DOS/4GW with DOS/32A in this tools
It can be made also globally by coping dos32a.exe to dos4gw.exe.
NOTE: I've found why DOS Harbour OpenWatcom application created
in my Linux box were not working. Just simply the directory
with DOS extender setup files was not in PATH.
Creating DOS OpenWatcom applications in other systems (i.e.
Linux or OS2) do not forget to add directory with DOS binaries
'%WATCOM%\binw' to PATH after directory with platform native
OpenWatcom binaries '%WATCOM%\bin*' or copy DOS extender
(dos32a.exe) to one of PATH directories.
* harbour/config/dos/watcom.mk
* added workaround for not included automatically by linker CLIB
library when Harbour is compiler in pure C mode. I hope it's only
temporary hack which we can remove in the future. I haven't added
it to hbmk2 so linking DOS applications using hbmk2 user will have
to add -lclib3r to hbmk2 parameters.
* harbour/config/common/watcom.mk
* disable DOS/32A banner messages
* contrib/hbqt/Makefile
+ Added generic support to MOC compile headers.
; If this works out well, it makes it possible to use granular
(non-monolythic) headers for 'Q_OBJECT' classes.
It's also possible to move this logic into sub-libs.
This may also mean that some hacks which were currently
employed can be solved cleanly.
Please test/review.
* contrib/hbqt/hbqt_slots.h
+ contrib/hbqt/hbqt_hbqtableview.h
* contrib/hbqt/hbqt_hbqtableview.cpp
* contrib/hbqt/qth/QTableView.qth
* contrib/hbqt/hbqt_hbdbfmodel.cpp
* contrib/hbqt/qth/QAbstractItemModel.qth
+ contrib/hbqt/hbqt_hbdrawingarea.h
* contrib/hbqt/hbqt_hbdrawingarea.cpp
+ contrib/hbqt/hbqt_hbqmainwindow.h
* contrib/hbqt/hbqt_hbqmainwindow.cpp
+ contrib/hbqt/hbqt_hbqsyntaxhighlighter.h
* contrib/hbqt/hbqt_hbqsyntaxhighlighter.cpp
* contrib/hbqt/qth/QSyntaxHighlighter.qth
+ contrib/hbqt/hbqt_events.h
* contrib/hbqt/hbqt_events.cpp
* Split monolithic hbqt_slots.h header to distinct
class headers.
* contrib/hbqt/generator/hbqtgen.prg
- contrib/hbqt/filelist.mk
* contrib/hbqt/Makefile
* Changed to not generate central filelist.mk.
(no dynamic files in central lib)
* config/rules.mk
- Deleted .l reference.
* contrib/hbqt/qtgui/QSyntaxHighlighter.cpp
* contrib/hbqt/qtgui/QTableView.cpp
* contrib/hbqt/qtcore/QAbstractItemModel.cpp
* Regenerated.
* contrib/hbqt/Makefile
* contrib/hbqt/generator/hbqtgen.prg
+ Moved static source files from filelist.mk to Makefile.
* contrib/hbqt/Makefile
* contrib/hbqt/hbqt_slots.cpp
+ contrib/hbqt/hbqt_events.cpp
+ Moved event filter related stuff to separate file.
% Cleaned lots of unnecessary QT headers includes.
* contrib/hbqt/hbqt_slots.cpp
* contrib/hbxbp/xbpgeneric.prg
* Rename: QT_QEVENTFILTER() -> QT_GETEVENTFILTER().
There will be some more renames to cleanup prefix usage.
* contrib/hbwin/win_regc.c
* Minor formatting.
* contrib/hbqt/generator/hbqtgen.prg
% Changed to only save files which have indeed changed
(to avoid unnecessary rebuilds)
* contrib/hbqt/Makefile
* contrib/hbqt/hbqt.h
* contrib/hbqt/hbqt_slots.h
- contrib/hbqt/hbqt_hbqtdbfmodel.cpp
+ contrib/hbqt/hbqt_hbdbfmodel.cpp
- contrib/hbqt/hbqt_hbqtsyntaxhighlighter.cpp
+ contrib/hbqt/hbqt_hbqsyntaxhighlighter.cpp
- contrib/hbqt/hbqt_hbqtmymainwindow.cpp
+ contrib/hbqt/hbqt_hbqmainwindow.cpp
- contrib/hbqt/hbqt_hbqtmydrawingarea.cpp
+ contrib/hbqt/hbqt_hbdrawingarea.cpp
- contrib/hbqt/hbqt_hbqttableview.cpp
+ contrib/hbqt/hbqt_hbqtableview.cpp
* contrib/hbqt/qth/QAbstractItemModel.qth
* contrib/hbqt/qth/QSyntaxHighlighter.qth
* contrib/hbqt/qth/QTableView.qth
* Following class renames done:
- HbSyntaxHighlighter -> HBQSyntaxHighlighter (HBIDE)
- HbDbfModel -> HBDbfModel (HBXBP)
- MyDrawingArea -> HBDrawingArea (UNUSED)
- MyMainWindow -> HBQMainWindow
- HbTableView -> HBQTableView (HBXBP)
; TOFIX: These classes seem to be the problematic parts of HBQT.
They violate layering, there are naming inconsistencies
(standard QT .prg level class internally refers to inherited
special Harbour class, they implement HBXBP and IDE functionality
embedded in HBQT to hack around the rule to not place .c
code in HBXBP/HBIDE, they are not using GC collected pointers,
they require mutexes which initialization isn't properly
solved, one class is nowhere used. etcect)
* contrib/hbxbp/xbpbrowse.prg
* contrib/hbxbp/xbpwindow.prg
* contrib/hbxbp/xbpdialog.prg
* Renames applied to HBXBP code.
* contrib/hbqt/qtgui/TQTableView.prg
* contrib/hbqt/qtgui/QSyntaxHighlighter.cpp
* contrib/hbqt/qtgui/QTableView.cpp
* contrib/hbqt/qtcore/TQAbstractItemModel.prg
* contrib/hbqt/qtcore/QAbstractItemModel.cpp
* Regenerated after .qth changes.