* harbour/include/hbxvm.h
* harbour/src/compiler/gencc.c
* harbour/src/vm/hvm.c
% added few functions increasing the execution speed of some PRG code
compiled with -gc3 switch
* harbour/include/hbcomp.h
* harbour/include/hbcompdf.h
* harbour/include/hbmacro.h
* harbour/include/hbexpra.c
* harbour/include/hbexprb.c
* harbour/src/common/funcid.c
* harbour/src/common/expropt1.c
* harbour/src/compiler/hbmain.c
* harbour/src/compiler/harbour.y
* harbour/src/compiler/harbour.yyc
* harbour/src/compiler/harbour.yyh
* harbour/src/vm/macro.c
+ added all reserved and restricted in Clipper functions to
hb_compGetFuncID()
+ extended hb_compGetFuncID() to expand short names of reserved functions
+ extended hb_compGetFuncID() to set function flags
* store expanded function name, ID and flags in HB_ET_FUN* expressions
% modified compiler and macrocompiler code to use function flags and
expanded names set by hb_compGetFuncID(). It allowed to eliminate
calling hb_compReservedName() for function call expressions giving
some small but noticeable speed improvement i.e. in macrocompiler.
* src/pp/ppcore.c
* src/compiler/cmdcheck.c
* src/compiler/hbusage.c
* include/hbpp.h
- Deleted -kl option. "multiline strings" converted back
to build-time option. It's not a documented option anymore,
usage is not recommended. See 2010-02-24 20:04 UTC+0100
for valid alternatives.
* src/pp/ppcore.c
* src/compiler/cmdcheck.c
* src/compiler/hbusage.c
* include/hbpp.h
+ Marked "multiline strings" feature as deprecated,
with HB_LEGACY_LEVEL3.
It's recommended to fix such code to be compatible
with Clipper (and other compatible) languages.
F.e.:
---
cVar := "line 1;
line 2;
line 3"
---
to standard:
--- F.e.:
cVar := "line 1" +;
"line 2" +;
"line 3"
---
or to another Harbour extension:
---
#pragma __cstream|cVar := %s
line 1
line 2
line 3
ENDTEXT
---
('+' operator will be optimized out by the compiler,
so there won't be any performance drop.)
* utils/hbmk2/hbmk2.prg
* Formatting.
* src/pp/ppcore.c
* src/compiler/cmdcheck.c
* src/compiler/hbusage.c
* include/hbpp.h
* include/hbsetup.h
* HB_USER_CFLAGS=-DHB_PP_MULTILINE_STRING feature converted
to compiler switch '-kl'.
INCOMPATIBLE. Users needing this feature now can use
standard Harbour builds by simply adding -kl Harbour
compiler flag. Old build-time macro is not supported
anymore.
* src/pp/pplib.c
* src/common/hbprintf.c
* src/rtl/gtclip.c
* src/rdd/dbfntx/dbfntx1.c
* src/rdd/dbfnsx/dbfnsx1.c
* src/rdd/dbfcdx/dbfcdx1.c
* src/rdd/dbffpt/dbffpt1.c
* src/compiler/hbpcode.c
* include/hbgtcore.h
* contrib/hbbmcdx/bmdbfcdx.c
* contrib/hbbtree/hb_btree.h
* contrib/hbbtree/hb_btree.c
! Fixed remaining type conversion problems after doing
live testing on win/bcc.
Please test it on other platforms.
* config/rules.mk
+ Enabled HB_LEGACY_TYPES_OFF on default Harbour
builds. This is required to keep new type usage
enforced.
* 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
* contrib/hbwin/win_prn1.c
+ Added support for printing RAW compressed formats JPEG and PNG BitMaps.
+ Added new PRGs functions: win_TypeBitMap() and win_CheckPrnDrvFormat()
Example of use in the class win_BMP()
* Changes in WIN_LOADBITMAPFILE, WIN_DRAWBITMAP to support new formats.
* contrib/hbwin/win_tprn.prg
+ Extended the class win_BMP() to allow printing compressed formats JPEG and PNG
if the printer driver allows.
+ Added method CheckPrnDrvFormat( oPrn, @cErrMsg ) for check printer driver.
+ New VAR INT Type. Type of BitMap: 1 == BM, 2 == JPEG, 3 == PNG
+ New VAR array DimXY. Original Image Dimensions X Y in pixels.
* New parameter aDimXY in LoadFile( cFileName, aDimXY )
* New parameter aDimXY in Draw( oPrn, aRectangle, aDimXY )
to introduce the original image dimensions in pixels X Y.
Some printer drivers may require the insertion of the original image dimensions
for processing, others read from the data source and by default only need have
aDimXY := { 1, 1 }
* Use DimXY VAR of win_BMP() in method DrawBitMap( oBmp ) of win_PRN()
* src/compiler/hbusage.c
+ Added author ID mail
* harbour/src/pp/ppcore.c
* pacified BCC warning
* harbour/src/compiler/harbour.yyc
* harbour/src/compiler/harbour.yyh
* regenerated with patched bison to pacify BCC warnings
* harbour/include/hbwinuni.h
+ added HB_ITEMCOPYSTR() macro
* harbour/src/common/hbwince.c
* redirected Beep() to MessageBeep() - it does not allow to set
time and duration but should generate some default system voice
signal - please test the results with real devices using WinCE/
Win Mobile
TODO: New MinGW support LockFileEx() and UnlockFileEx() but they are
part of coredll6 library not coredll. I guess it's designed to
use with Windows Mobile 6.x. Add compile and link time support
for it.
TODO: Add link time support for MinGWCE and non ARM processors.
New MinGWCE supports x86 compatible Intel CPUs for pocket devices.
* include/hbcompdf.h
* src/compiler/cmdcheck.c
* src/compiler/hbmain.c
* src/compiler/hbcomp.c
* src/compiler/hbopt.c
* src/compiler/hbusage.c
* src/compiler/hbgenerr.c
+ Added options to control error/warning output format/style
in Harbour, to make it possible to switch to formats which
are handled by popular IDEs, like Eclipse, Code::Blocks.
Currently these are supported:
-ge[0]: Clipper compatible (default)
-ge1: "IDE friendly". Mimics the one submitted by Lorenzo
for Eclipse.
The goal is to cover the most IDEs with the less options,
so please test them to reach this optimum.
* contrib/hbwin/win_reg.prg
* contrib/hbwin/win_os.prg
* contrib/hbwin/win_tprn.prg
* contrib/hbwin/wapi_winbase.c
* contrib/hbwin/hbwin.h
* contrib/hbwin/hbwin.ch
* contrib/hbwin/tests/testprn.prg
* contrib/hbwin/tests/testcom1.prg
* contrib/hbwin/tests/testcom2.prg
* contrib/hbwin/tests/testreg.prg
* contrib/hbwin/tests/testmapi.prg
* contrib/hbwin/win_com.c
* contrib/hbwin/win_prn1.c
* MM_TO_INCH macro moved from hbwin.ch to win_tprn.prg.
(INCOMPATIBLE is someone happened to use this in app code)
+ Prefixed all Windows constants with WIN_ in hbwin.ch.
+ Prefixed all hbwin specific constants with HB_ in hbwin.ch.
+ Retained all old legacy / deprecated hbwin.ch constants
for compatibility. Users are encourages to use the new
ones, as the old ones will be deleted in the future.
* Changed WIN_MULDIV() to use hb_retni() (instead of hb_retnl())
* WIN_MULDIV() renamed to WAPI_MULDIV() and moved
to wapi source. (INCOMPATIBLE, although it's unlikely anyone
is using WIN_MULDIV() so I didn't keep it.)
+ Added some additional printing related Windows constants.
+ Added comments to hbwin.ch saying which constant is used
in which WIN_*() function.
* HB_WIN_MAPI_* constants renamed to WIN_MAPI_*.
(I haven't dealt with compatibility as this is brand new
functions with not much users yet)
+ Marked all hbwin.ch deprecated macros with HB_LEGACY_LEVEL3
! Fixed to use hbwin.ch constants in few remaining places in testprn.prg
; Now it's possible to include hbwin.ch in .c files.
; QUESTION: Why RGB_* color constants aren't using pure colors?
If there is no special reason, I think it should be
changed to pure ones (with 0xFF components).
* src/compiler/hbgenerr.c
* Formatting.
* harbour/src/compiler/harbour.y
* harbour/src/compiler/harbour.yyh
* harbour/src/compiler/harbour.yyc
! pacified compile time error when ... is used as parameter in _HB_MEMBRER
declaration. TODO: Remove or fix this strong typing grammar rules.
* harbour/src/debug/dbgtwin.prg
* harbour/src/debug/dbgtmenu.prg
* harbour/src/debug/tbrwtext.prg
* harbour/src/debug/debugger.prg
* harbour/src/debug/dbgtinp.prg
* harbour/src/rtl/tbcolumn.prg
* harbour/src/rtl/listbox.prg
* harbour/src/rtl/pushbtn.prg
* harbour/src/rtl/treport.prg
* harbour/src/rtl/radiogrp.prg
* harbour/src/rtl/tthreadx.prg
* harbour/src/rtl/checkbox.prg
* harbour/src/rtl/tsymbol.prg
* harbour/src/rtl/teditor.prg
* harbour/src/rtl/tmenuitm.prg
* harbour/src/rtl/tbrowse.prg
* harbour/contrib/hbmysql/tmysql.prg
* harbour/contrib/xhb/stream.prg
* harbour/contrib/xhb/trpccli.prg
* harbour/contrib/xhb/hblognet.prg
* harbour/contrib/xhb/tfile.prg
* harbour/contrib/xhb/tframe.prg
* harbour/contrib/xhb/htjlist.prg
* harbour/contrib/xhb/hblog.prg
* harbour/contrib/xhb/trpc.prg
* harbour/contrib/xhb/thtm.prg
* harbour/contrib/xhb/tcgi.prg
* harbour/contrib/xhb/ttable.prg
* harbour/contrib/xhb/txml.prg
* harbour/contrib/xhb/hjwindow.prg
* harbour/contrib/xhb/htmutil.prg
* harbour/contrib/hbodbc/todbc.prg
* harbour/contrib/hbfbird/tfirebrd.prg
* harbour/contrib/xpp/tthreadx.prg
* harbour/contrib/hbpgsql/tpostgre.prg
* harbour/contrib/hbgd/gdchart.prg
* harbour/contrib/hbgd/gdimage.prg
* harbour/contrib/hbgd/gdbar.prg
* harbour/contrib/hbgd/gdbarcod.prg
* harbour/contrib/hbmisc/twirler.prg
* harbour/contrib/hbtip/thtml.prg
* harbour/contrib/hbtip/cgi.prg
* harbour/contrib/hbtip/httpcli.prg
* harbour/contrib/hbtip/smtpcli.prg
* harbour/contrib/hbtip/client.prg
* harbour/contrib/hbtip/ftpcli.prg
* harbour/contrib/hbtip/mail.prg
* harbour/contrib/hbtip/popcli.prg
* harbour/contrib/hbwin/win_tprn.prg
* harbour/contrib/hbbtree/tbtree.prg
* harbour/utils/hbformat/hbformat.prg
! fixed class method declarations to be synced with method implementations
All of the above missdeclarations were detected by compilation with:
HB_USER_PRGFLAGS=-DHB_CLS_PARAMS_ERR
Few years ago in hbclass.ch I defined PP rules to force strict method
declarations but I had to disable them due to problems with old PP.
I defined HB_CLS_NO_PARAMS_ERR and left this note in hbclass.ch:
> I have to enable this definition by default until we will not fix
> preprocessor. [druzus]
Current PP code works correctly so we can remove it and activate this
code. Anyhow as above commit shows a lot of code has been created with
wrong declarations. I fixed Harbour core code (except HBQT, HBXBP and
GTWVG - I hope Pritpal or Viktor will fix it) but setting
HB_CLS_PARAMS_ERR as default will exploit a lot of similar problems in
user code so I would like the hear other developers' opinions about it.
* 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.
* harbour/include/hbapilng.h
+ harbour/include/hbmsgreg.h
+ added common for all Harbour lang modules (msg*.c) header file
with initialization code
* harbour/src/lang/msgbe866.c
* harbour/src/lang/msgbewin.c
* harbour/src/lang/msgbg866.c
* harbour/src/lang/msgbgiso.c
* harbour/src/lang/msgbgmik.c
* harbour/src/lang/msgbgwin.c
* harbour/src/lang/msgca.c
* harbour/src/lang/msgcs852.c
* harbour/src/lang/msgcsiso.c
* harbour/src/lang/msgcskam.c
* harbour/src/lang/msgcswin.c
* harbour/src/lang/msgde.c
* harbour/src/lang/msgdewin.c
* harbour/src/lang/msgel.c
* harbour/src/lang/msgelwin.c
* harbour/src/lang/msgeo.c
* harbour/src/lang/msges.c
* harbour/src/lang/msgeswin.c
* harbour/src/lang/msgeu.c
* harbour/src/lang/msgfr.c
* harbour/src/lang/msggl.c
* harbour/src/lang/msghe862.c
* harbour/src/lang/msghewin.c
* harbour/src/lang/msghr437.c
* harbour/src/lang/msghr852.c
* harbour/src/lang/msghriso.c
* harbour/src/lang/msghrwin.c
* harbour/src/lang/msghu852.c
* harbour/src/lang/msghucwi.c
* harbour/src/lang/msghuiso.c
* harbour/src/lang/msghuwin.c
* harbour/src/lang/msgid.c
* harbour/src/lang/msgis850.c
* harbour/src/lang/msgit.c
* harbour/src/lang/msgko.c
* harbour/src/lang/msgltwin.c
* harbour/src/lang/msgnl.c
* harbour/src/lang/msgpl852.c
* harbour/src/lang/msgpliso.c
* harbour/src/lang/msgplmaz.c
* harbour/src/lang/msgplwin.c
* harbour/src/lang/msgpt.c
* harbour/src/lang/msgptiso.c
* harbour/src/lang/msgro.c
* harbour/src/lang/msgru866.c
* harbour/src/lang/msgrukoi.c
* harbour/src/lang/msgruwin.c
* harbour/src/lang/msgsk852.c
* harbour/src/lang/msgskiso.c
* harbour/src/lang/msgskkam.c
* harbour/src/lang/msgskwin.c
* harbour/src/lang/msgsl437.c
* harbour/src/lang/msgsl852.c
* harbour/src/lang/msgsliso.c
* harbour/src/lang/msgslwin.c
* harbour/src/lang/msgsr852.c
* harbour/src/lang/msgsriso.c
* harbour/src/lang/msgsrwin.c
* harbour/src/lang/msg_tpl.c
* harbour/src/lang/msgtr857.c
* harbour/src/lang/msgtrwin.c
* harbour/src/lang/msgua866.c
* harbour/src/lang/msguados.c
* harbour/src/lang/msguakoi.c
* harbour/src/lang/msguawin.c
* harbour/src/lang/msgzhb5.c
* harbour/src/lang/msgzhgb.c
* modified to use initialization code defined in common for all
lang modules header file.
* harbour/contrib/gtwvg/wvggui.c
* harbour/contrib/hbqt/qtgui/QApplication.cpp
* harbour/contrib/hbqt/qth/QApplication.qth
* use default GT startup cvode (#include "hbgtreg.h")
* harbour/include/hbinit.h
+ harbour/include/hbiniseg.h
* replaced HB_MSC_STARTUP code with more universal HB_DATASEG_STARTUP
* moved HB_DATASEG_STARTUP code to separate header file to reduce
modifications in other files when this code has to be changed or
extended
+ added support for startup code in OpenWatcom C builds. Now we can
create OpenWatcom Harbour binaries without forcing C++ mode.
I've tested Linux and Win32 builds and they works correctly.
Probably similar solution can be used also for other C compilers
which do not have native interface to define starup code.
* harbour/src/compiler/genc.c
* harbour/utils/hbmk2/hbmk2.prg
* harbour/include/hbcdpreg.h
* harbour/include/hbgtreg.h
* harbour/src/rtl/hbregex.c
* harbour/src/rdd/dbf1.c
* harbour/src/rdd/dbfcdx/dbfcdx1.c
* harbour/src/rdd/dbffpt/dbffpt1.c
* harbour/src/rdd/dbfnsx/dbfnsx1.c
* harbour/src/rdd/dbfntx/dbfntx1.c
* harbour/src/rdd/delim1.c
* harbour/src/rdd/sdf1.c
* harbour/src/pp/pplib3.c
* harbour/contrib/rddads/ads1.c
* harbour/contrib/rddads/adsx.c
* harbour/contrib/rddsql/sddfb/fbirddd.c
* harbour/contrib/rddsql/sddmy/mysqldd.c
* harbour/contrib/rddsql/sddodbc/odbcdd.c
* harbour/contrib/rddsql/sddpg/pgsqldd.c
* harbour/contrib/rddsql/sqlbase.c
* harbour/contrib/rddsql/sqlmix.c
* harbour/contrib/hbbmcdx/bmdbfcdx.c
* harbour/contrib/hbmemio/memio.c
* harbour/contrib/hbnetio/netiocli.c
* harbour/contrib/hbbtree/hb_btree.c
* harbour/contrib/hbwin/olecore.c
* harbour/contrib/hbwin/win_com.c
* modified to use HB_DATASEG_STARTUP instead of HB_MSC_STARTUP
Now HB_MSC_STARTUP is local macro used only in hbinit.h.
Please make MSVC build tests.
* harbour/contrib/hbmemio/memio.c
! declare s_fileFuncs structure as static
* removed unnecessary code to directly register HB_MEMIO symbol.
Mindaugas if you need it for some reasons then I can reactivate it
but I would like to know why it's necessary for you.
* harbour/src/vm/task.c
! added missing {}
* harbour/src/vm/fm.c
* locally disabled "unreachable code" warnings for dlmalloc.c
compilation by OpenWatcom in pure C mode
* harbour/src/rtl/hbzlibgz.c
* minor code cleanup
* harbour/src/rtl/filesys.c
* pacified OS/2 warnings
* harbour/contrib/hbcairo/core.c
! fixed casting for C++ builds
* harbour/contrib/hbwin/wapi_winbase.c
! fixed casting
* harbour/src/Makefile
* changed the order of compiled libraries to improve little bit
the speed in concurrent (-j<N>) builds
* src/macro/Makefile
- src/macro/macro.l
* src/compiler/Makefile
- src/compiler/harbour.l
- src/compiler/fixflex.c
* INSTALL
* config/c.mk
* config/rules.mk
* Deleted references to Flex and related files.
Flex is not used since long. It couldn't generate MT safe lexer code.
* utils/hbmk2/hbmk2.prg
+ Added -hbmake=<hbmake file> option which will attempt to
read hbmake project file and save it as .hbp file.
This is experimental and I'd like to ask hbmake users to
update/extend this converter code as I'm not hbmake user.
This feature is to aid users to migrate from hbmake to hbmk2.
Notice that along the same line converter could be written
for .xbp and xMate project files too.
* src/compiler/Makefile
- src/compiler/gencobj.c
* src/compiler/hbmain.c
* src/compiler/cmdcheck.c
* src/compiler/hbusage.c
* include/hbcompdf.h
* debian/rules
* mpkg_src.sh
* mpkg_tgz.sh
* harbour.spec
- Deleted support for harbour.cfg / compiler -go mode.
This was scheduled to be done after release, but since
hbmk2 seems to be a very solid tool now with visible
acceptance from users, it seems safe to make the move
now. This will mean that one less Harbour file will
"pollute" system locations, which is always a good
thing. Plus this part had a few bugs, which are now
also a thing of the past.
- examples/hbmake
- Deleted hbmake tool. This wasn't really working anyway,
and require -go mode, which was deleted.
Use hbmk2 instead.
* mpkg_src.sh
* mpkg_tgz.sh
! Fixed indentation to be consistent 4 chars.
* harbour/src/compiler/genc.c
* harbour/src/compiler/compi18n.c
* use "w' instead of "wb" in hb_fopen flags. It causes that in some
systems like DOS or Windows if CRTL supports it then all \n in
generated files will be automatically translated to native EOLs
(\r\n).
This modification should make .pot and .c files generated by
Harbour compiler more readable for DOS and Windows users.
* harbour/src/compiler/gencobj.c
! fixed wrong hb_fopen() flags 't' is not documented fopen() flag
so some systems may refuse to open files when it's used.
* harbour/src/rdd/dbfcdx/dbfcdx1.c
* removed old unused macros
* harbour/include/hbcompdf.h
* harbour/src/compiler/hbmain.c
* harbour/src/compiler/cmdcheck.c
* harbour/src/compiler/complex.c
* harbour/src/compiler/hbcomp.c
* harbour/src/compiler/gencobj.c
* harbour/src/compiler/hbusage.c
+ added support for -gd[.<destExt>] switch.
When used Harbour compiler generates also .d file with dependencies
list in the form like for make systems:
<destFile>: <sourceFiles,...>
optional .<destExt> parameter value can be used to replace default
extension in <destFile>.
Now users can generate .d files without additional overhead in the
same pass as normal compilation by simple adding -gd[.<destExt>]
switch to compilation command instead of executing harbour compiler
second time with -sm switch.
* harbour/doc/man/harbour.1
* updated man page
* harbour/utils/hbmk2/hbmk2.prg
* removed -kj switch - it's not longer necessary to improve -sm
* minor formatting
* harbour/src/compiler/cmdcheck.c
* minor formatting
* harbour/src/compiler/complex.c
% disabled lexer when -sm is used with -m switch.
In Harbour compiler lexer is only simple translator between PP and
grammar parser tokens so the overhead is rather small anyhow it
eliminates executing some unnecessary code.
If -sm switch is used then we need lexer to detect files included by
statements like:
DO <file> [WITH ... ]
_procReq_( <file> )
_procReq_( <file> + <ext> )
-m switch disable including such files so we can fully eliminate
lexer and preprocess PP tokens directly in a loop.
Now the cost of -sm switch is reduced to the PP cost plus some
minor static overhead.
* harbour/include/hbpp.h
* harbour/include/hbcompdf.h
* harbour/src/pp/ppcore.c
* harbour/src/compiler/hbmain.c
* harbour/src/compiler/cmdcheck.c
* harbour/src/compiler/ppcomp.c
* harbour/src/compiler/hbusage.c
* harbour/doc/man/harbour.1
+ added support for new compiler switch -sm which can be used to
generate dependencies list.
* modified HB_COMPILEBUF() function to return dependencies list
instead of .HRB file body when -sm switch is used. Files in
single module are separated by spaces and modules are separated
by TABs (chr(9))
To reduce overhead I suggest to use in programs like hbmk2
together with -sm also -kj switch - it disables some time
consuming optimizations in compiler code.
- source
+ src
* src/Makefile
* src/dynlib/mt/Makefile
* src/dynlib/Makefile
* INSTALL
* Makefile
* ChangeLog
* harbour.spec
* mpkg_tgz.sh
* Renamed 'source' dir to 'src' to move closer to other FOSS
projects. It's also easier to type, plus it has the side
effect that some cmdlines will be shorter in the
build process.