* harbour/common.mak
* harbour/source/lang/Makefile
+ harbour/source/lang/msgnl.c
+ added Dutch language module by Rene Koot
* harbour/config/os2/gcc.cf
* commented out -DTCPV40HDRS in CFLAGS
* harbour/make_gnu.cmd
* added commented by default: set C_USR=-DTCPV40HDRS %C_USR%
* harbour/contrib/libnf/menu1.prg
* harbour/contrib/libnf/pegs.prg
* harbour/contrib/libnf/popadder.prg
* harbour/contrib/libnf/savesets.prg
* harbour/source/debug/dbgmenu.prg
+ added missing #include "common.ch" for HB_SYMBOL_UNUSED()
* harbour/include/hbclass.ch
* renamed __HB_SYMBOL_UNUSED() to __HB_CLS_SYMBOL_UNUSED() to keep
the same name convention as for other hbclass definitions/commands
* harbour/include/hbsetup.h
* added commented by default #define HB_PP_MULTILINE_STRING
with small description
* harbour/source/rtl/net.c
* added missing #include(s) for OS2 build
* harbour/source/rdd/dbfcdx/dbfcdx1.c
* formatting
* harbour/contrib/tip/Makefile
- harbour/contrib/tip/atokens.c
* removed HB_ATOKENS()
- harbour/source/rtl/teditorl.c
- removed __STRTOKEN(), __STRTKPTR()
* harbour/common.mak
* harbour/source/rtl/Makefile
* harbour/include/hbextern.ch
+ harbour/source/rtl/hbtoken.c
+ added set of functions to manipulate string tokens:
HB_TOKENCOUNT( <cString>, [ <cDelim> ], [ <lSkipStrings> ],
[ <lDoubleQuoteOnly> ] ) -> <nTokens>
HB_TOKENGET( <cString>, <nToken>, [ <cDelim> ], [ <lSkipStrings> ],
[ <lDoubleQuoteOnly> ] ) -> <cToken>
HB_TOKENPTR( <cString>, @<nSkip>, [ <cDelim> ], [ <lSkipStrings> ],
[ <lDoubleQuoteOnly> ] ) -> <cToken>
HB_ATOKENS( <cString>, [ <cDelim> ], [ <lSkipStrings> ],
[ <lDoubleQuoteOnly> ] ) -> <aTokens>
All these functions use the same method of tokenization. They can
accept as delimiters string longer then one character. By default
they are using " " as delimiter. " " delimiter has special mening
Unlike other delimiters repeted ' ' characters does not create empty
tokens, f.e.: HB_ATOKENS( " 1 2 3 " ) returns array { "1", "2" }
Any other delimiters are restrictly counted, f.e. HB_ATOKENS( ",,1,,2,")
return array: { "", "", "1", "", "2", "" }.
+ added emulation for old __STRTOKEN(), __STRTKPTR() and xHarbour's
__STRTOKENCOUNT() by HB_TOKEN*() functions. They do not return
exactly the same result as __STRT*() functions which in some cases
ignored some delimiters and return wrong results.
* harbour/source/rdd/Makefile
+ harbour/source/rdd/dbsql.c
+ added __DBSQL() function
* harbour/include/hbsetup.h
* harbour/source/vm/fm.c
+ added support for native Windows memory allocation functions
It can be enabled by HB_FM_WIN32_ALLOC macro and disable C-RTL
memory manager.
* harbour/tests/mousetst.prg
* touch screen output before MPRESENT() to work with GTXWC
* harbour/source/compiler/harbour.y
* harbour/source/compiler/harbour.yyc
! fixed false warning about unreachable code in
switch ...; case ...; exit; case ...
statement
* disabled some error messages about illegal pass by reference
now HVM should not allow to create cyclic reference chain
* harbour/source/rtl/hbregex.c
+ added HB_REGEXHAS() and HB_REGEXLIKE()
* harbour/source/rtl/net.c
* added support for <nType> parameter in NETNAME() like in xHarbour
when nType == 1 NETNAME() returns user name instead of host name.
* harbour/source/rtl/tgetlist.prg
! Fixed bug #1692268. The fix simply removes two strange lines
of code which tried to modify the internal TGet() var "Type",
after it read the value contained in the TGet(). Since this would
be the job of TGet() alone, and Type() is not an assignable
var in CA-Cl*pper, it very much looks like a workaround
for something (maybe a shortcoming of an earlier version of
TGet()). If anyone knows what was to be achieved with that,
pls shout.
* harbour/include/Makefile
+ harbour/include/hbchksum.h
* harbour/source/rtl/Makefile
+ harbour/source/rtl/hbadler.c
+ harbour/source/rtl/hbcrc.c
+ harbour/source/rtl/hbmd5.c
+ added functions to calculate different checksums
HB_ADLER( <cValue> [, <nStart> ] ) -> <nCC>
HB_CRC32( <cValue> [, <nStart> ] ) -> <nCRC>
HB_CRC16( <cValue> [, <nStart> ] ) -> <nCRC>
HB_CRC ( <cValue> [, <nStart> ] [, <nPolynomial> ] ) -> <nCRC>
HB_CRCCT( <cValue> [, <nStart> ] [, <nPolynomial> ] ) -> <nCRC>
HB_MD5( <cString> ) -> <cMD5>
HB_MD5FILE( <cFileName> ) -> <cMD5>
HB_CRC() is general CRC function which can be used for any polynomial
given as second argument, f.e.: 0x104C11DB7 is CRC32 polynomial,
0x18005 -> CRC16, 0x11021 -> CRC16 X.26, 0x1393 -> CRC12, 0x101 -> LCR8
HB_CRCCT() makes exactly the same job but it uses broken algorithm.
Unfortunately it seems that this broken version is widely used by many
other projects, f.e. HB_CRCCT() gives exactly the same results as
COM_CRC() from CT3. Generated results are usually "good enough" but
if you do not need compatibility with some other tools which uses
broken CRC algorithm then I suggest to not use it.
HB_ADLER() is ADLER32 check sum - this function gives the same results
as HB_CHECKSUM in xHarbour.
HB_MD5*() functions are from Dmitry V. Korzhov code modified a
little bit by me for other then x86@32 machines files and buffers
longer then 2^32. I also fixed possible problems with wrong results
in some cases.
* harbour/source/compiler/hbmain.c
* increase number of optimization passes
* harbour/source/pp/ppcore.c
* cleaned C compiler warning
* harbour/source/pp/ppcore.c
+ added support for multiline string concatenated by ';'
f.e.:
cVar := "line 1;
line 2;
line 3"
To enable the above it's necessary to build PP with
HB_PP_MULTILINE_STRING macro.
It's not Clipper compatible extension and it's not enabled by default
anyhow old PP worked in such way so I'm leaving the decision to Harbour
community if the above should be enabled by default or not.
* harbour/common.mak
* updated for new files - please check
* harbour/harbour.spec
* added compiler library
* harbour/bin/pack_src.sh
* harbour/bin/hb-func.sh
* updated for new files and libraries
* harbour/config/w32/mingw32.cf
* harbour/config/w32/watcom.cf
* harbour/config/w32/xcc.cf
* added winsock libraries
* harbour/include/hbapicdp.h
* harbour/source/rtl/cdpapi.c
+ added hb_cdpicmp() - not case sensitive version of hb_cdpcmp()
* harbour/include/hbapiitm.h
* harbour/source/vm/itemapi.c
+ hb_itemStrICmp(), hb_itemCopyFromRef(), hb_itemMoveFromRef()
* harbour/include/hbapi.h
* harbour/include/hbcomp.h
* harbour/include/hbcompdf.h
* harbour/include/hbexpra.c
* harbour/include/hbexprb.c
* harbour/include/hbexprop.h
* harbour/include/hbmacro.h
* harbour/include/hbpcode.h
* harbour/include/hbvmpub.h
* harbour/include/hbxvm.h
* harbour/source/common/expropt1.c
* harbour/source/compiler/complex.c
* harbour/source/compiler/genc.c
* harbour/source/compiler/gencc.c
* harbour/source/compiler/gencli.c
* harbour/source/compiler/genhrb.c
* harbour/source/compiler/genobj32.c
* harbour/source/compiler/harbour.y
* harbour/source/compiler/harbour.yyc
* harbour/source/compiler/harbour.yyh
* harbour/source/compiler/hbdead.c
* harbour/source/compiler/hbfix.c
* harbour/source/compiler/hblbl.c
* harbour/source/compiler/hbmain.c
* harbour/source/compiler/hbopt.c
* harbour/source/compiler/hbpcode.c
* harbour/source/compiler/hbstripl.c
* harbour/source/macro/macro.y
* harbour/source/macro/macro.yyc
* harbour/source/macro/macro.yyh
* harbour/source/macro/macrolex.c
* harbour/source/vm/Makefile
* harbour/source/vm/arrays.c
* harbour/source/vm/asort.c
* harbour/source/vm/classes.c
* harbour/source/vm/eval.c
* harbour/source/vm/garbage.c
* harbour/source/vm/hvm.c
* harbour/source/vm/itemapi.c
* harbour/source/vm/macro.c
+ harbour/source/vm/hashes.c
+ harbour/source/vm/hashfunc.c
+ added hash items, f.e.:
local h1 := {=>}, h2 := { "a"=>1.234, "b"=>2.345 }
? h2[ "a" ], h2[ "b ]
+ added support for DYNAMIC function declaration - it allow to define
functions which are lately bound at runtime, f.e.:
/*** t01.prg ***/
dynamic func1
proc main()
local h:=__hrbload("t02.hrb")
? func1()
return
/*** t02.prg ***/
func func1
return "Hello!!!"
% use new FUNCALL structure to hold EXTERNAL and DYNAMIC functions,
it reduce memory usage, FUNCALL is much smaller then FUNCTION
% use symbol scope bits when possible instead of making some linear scan
+ added new enumarator message: __ENUMKEY - it allow to access
key value when hash item is base enumerator value, f.e.:
proc main()
local v, h:={"a"=>1.000,"b"=>2.000,"c"=>3.000}
heval( h, { |k,v,i| qout( k, v, i ) } ); ?
for each v in h
? v, "=>", v:__enumKey(), v:__enumValue(), v:__enumIndex(), ;
valtype(v:__enumBase())
v += 0.123
next
? ;heval( h, { |k,v,i| qout( k, v, i ) } )
return
+ added C level hb_hash*() functions
+ added support for full HASH item cloning and updated array cloning
to also clone nested hashes - please note that xHarbour does not do
that, in xHarbour ACLONE() clones _ONLY_ nested arrays and HCLONE()
_DOES_NOT_ clone _ANY_ nested items.
* harbour/include/hbextern.ch
+ added hash functions HB_H*()
* changed INET*() functions to HB_INET*()
+ added hash functions H*() and socket functions INET*() when
HB_COMPAT_XHB is set
* harbour/include/hbtypes.h
+ added missing HB_EXTERN_BEGIN / HB_EXTERN_END
* harbour/include/hbpp.h
* harbour/source/pp/ppcore.c
! added protection against automatic word concatenation in some cases
! fixed preprocessing expressions when match marker matches ';' token
* harbour/source/rtl/Makefile
+ harbour/source/rtl/itemseri.c
+ added functions for item serialization: HB_SERIALIZE() and
HB_DESERIALIZE() - these function are not binary compatible
with xHarbour functions with the same names but make very
similar job with the exception to serialization of codeblock
and object variables - Harbour does not allow to serialize
codeblocks and serialize objects as arrays.
In most cases these functions can replace the xHarbour ones
+ added HB_DESERIALBEGIN() and HB_DESERIALIZE() functions covered
by HB_COMPAT_XHB macro - this functions are only for compatibility
with existing xHarbour code, In Harbour HB_DESERIALBEGIN() is
dummy function which returns first parameter and HB_DESERIALNEXT()
is a simple wrapper to HB_DESERIALIZE() so it's not necessary to
use them.
* harbour/source/rtl/hbinet.c
* changed INET*() functions to HB_INET*() and enable them for default
build
+ added INET*() functions wrappers covered by HB_COMPAT_XHB macro
* harbour/source/rtl/hbrandom.c
+ added HB_RANDOMINT() - xHarbour compatible
* harbour/source/rtl/len.c
+ added support for HASHes
* harbour/source/rtl/valtype.c
+ added support for HASHes
+ added set of HB_IS*() functions - they are a little bit faster then
calling VALTYPE( v ) == <cVal>
- removed HB_ISBYREF() - this function cannot longer work, it was using
a Clipper incompatible anomalies in passing variables by reference I
fixed so it has to stop to work. If it will be realy necessary to
implement HB_ISBYREF() function then please inform me - it will have
to be done at compiler level or with some much deeper HVM stack
checking.
* harbour/source/vm/extend.c
! fixed hb_extIsArray() and hb_extIsObject() to work well with
parameters passed by reference.
Please note that now hb_extIsArray() return TRUE only for pure arrays
not object values.
* harbour/contrib/Makefile
+ harbour/contrib/tip/Changelog
+ harbour/contrib/tip/Makefile
+ harbour/contrib/tip/atokens.c
+ harbour/contrib/tip/base64x.c
+ harbour/contrib/tip/cgi.prg
+ harbour/contrib/tip/client.prg
+ harbour/contrib/tip/credent.prg
+ harbour/contrib/tip/cstr.prg
+ harbour/contrib/tip/encb64.prg
+ harbour/contrib/tip/encmthd.c
+ harbour/contrib/tip/encoder.prg
+ harbour/contrib/tip/encqp.prg
+ harbour/contrib/tip/encurl.prg
+ harbour/contrib/tip/ftpcln.prg
+ harbour/contrib/tip/hbhex2n.c
+ harbour/contrib/tip/httpcln.prg
+ harbour/contrib/tip/mail.prg
+ harbour/contrib/tip/popcln.prg
+ harbour/contrib/tip/smtpcln.prg
+ harbour/contrib/tip/tip.ch
+ harbour/contrib/tip/url.prg
+ harbour/contrib/tip/utils.c
+ added TIP library - code borrowed from xHarbour
Please test - a lot of above code is not well tested, also some peaces
were written over year ago for different things (f.e. serialization for
NETRDD) and now I collected them and committed.
The TIP library was not tested at all. It can be compiled but I cannot
say if it works - I hope that people familiar with it can make necessary
test and fixes.
It's also not the final version of low level HASH item code. I'm working
on more efficient structure which uses binary tries but I cannot say when
I'll finish it (maybe in this weekend or maybe in next year) so I committed
working version now even if I'm not happy with overall performance (BTW
not worser then in xHarbour)
* harbour/include/hbapi.h
* harbour/include/hbapiitm.h
* harbour/source/vm/garbage.c
* harbour/source/vm/extend.c
* harbour/source/vm/itemapi.c
+ added hb_gcFunc(), hb_parptrGC(), hb_itemGetPtrGC()
hb_parptrGC() and hb_itemGetPtrGC() uses GC cleanup function address
to validate if pointer item points to expected memory block type
* harbour/source/common/hbhash.c
* harbour/source/compiler/hbident.c
* formatting and minor modifications
* harbour/source/pp/pplib.c
* harbour/source/pp/pplib2.c
* use hb_parptrGC() to be sure that given pointer item points
to PP structure
+ harbour/include/hbregex.h
+ harbour/source/rtl/hbregex.c
* harbour/source/rtl/Makefile
* harbour/common.mak
+ added support for regular expressions. Now it's enabled by default
only in *nixes (POSIX regex) and BCC 5.5 (PCRE regex). Setting
HB_PCRE_REGEX macro enables Perl-Compatible Regular Expressions
and HB_POSIX_REGEX - POSIX regular expressions. In xHarbour regex
support is enabled for all builds because PCRE source code is stored
in CVS. If you will want we can make the same.
+ the following C functions are available:
hb_regexCompile(), hb_regexGet(), hb_regexFree(), hb_regexMatch()
+ the following PGR functions are available:
HB_REGEXCOMP(), HB_ISREGEX(), HB_ATX(), HB_REGEX(), HB_REGEXMATCH(),
HB_REGEXSPLIT(), HB_REGEXATX(), HB_REGEXALL()
They are working in similar way to the ones in xHarbour with the
exception to some bug fixes and form of compiled regular expression.
In Harbour it's pointer item for which HB_ISREGEX() returns TRUE when
in xHarbour it's binary string.
* harbour/source/rdd/dbfcdx/dbfcdx1.c
* harbour/source/rdd/dbfntx/dbfntx1.c
* enabled code to seek in index using regular expressions
(DBOI_SKIPREGEX[BACK])
* harbour/include/hbexpra.c
* emulate xHarbour HB_ENUMINDEX() inside FOR EACH loop when
HB_COMPAT_XHB macro is set
It's only for compatibility - I strongly suggest to use
<unumvar>:__enumIndex()
which is more flexible and allow to chose the enumerator
variable not only the one from last loop
* harbour/include/hbexprb.c
* added comment removed from hbexpra.c
* harbour/source/compiler/hbmain.c
! fixed GPF which can appear when -b option is used in line numbering
inside codeblocks
* harbour/include/hbexpra.c
* emulate xHarbour HB_ENUMINDEX() inside FOR EACH loop when
HB_COMPAT_XHB macro is set
It's only for compatibility - I strongly suggest to use
<unumvar>:__enumIndex()
which is more flexible and allow to chose the enumerator
variable not only the one from last loop
* harbour/include/hbexprb.c
* added comment removed from hbexpra.c
* harbour/source/compiler/hbmain.c
! fixed GPF which can appear when -b option is used in line numbering
inside codeblocks
* harbour/common.mak
* harbour/makefile.bc
* harbour/makefile.vc
* harbour/bin/hb-func.sh
* harbour/config/global.cf
* harbour/include/error.ch
* harbour/include/hbcomp.h
* harbour/include/hbcompdf.h
* harbour/include/hbexpra.c
* harbour/include/hbexprb.c
- harbour/include/hbexprc.c
* harbour/include/hbexprop.h
* harbour/include/hbmacro.h
* harbour/source/Makefile
* harbour/source/common/expropt1.c
* harbour/source/common/expropt2.c
* harbour/source/compiler/Makefile
- harbour/source/compiler/exproptc.c
- harbour/source/compiler/harbour.c
* harbour/source/compiler/harbour.y
* harbour/source/compiler/harbour.yyc
* harbour/source/compiler/hbcomp.c
* harbour/source/compiler/hbgenerr.c
+ harbour/source/compiler/hbmain.c
* harbour/source/compiler/hbpcode.c
* harbour/source/macro/Makefile
* harbour/source/macro/macro.y
* harbour/source/macro/macro.yyc
- harbour/source/macro/macroc.c
+ harbour/source/main/Makefile
+ harbour/source/main/harbour.c
* harbour/source/vm/macro.c
* resolved name conflicts between compiler and macro compiler.
Now new compiler library is created.
There are some things which can be improved and cleaned yet
but it's enough to create single binaries with compiler+HVM+RTLs.
I updated non GNU make files but I cannot tested the modifications
- please check and fix me if necessary
* harbour/source/pp/ppcore.c
* clear included file counter in hb_pp_reset()
* insert space after stream comment /* */ - it's not Clipper
compatible but it's necessary as long as we have automatic
identifier concatenation
* harbour/config/os2/global.cf
* harbour/contrib/hgf/os2pm/os2pm.c
* harbour/include/hbdefs.h
* harbour/include/hbgtcore.h
* harbour/source/rdd/dbcmd.c
* harbour/source/vm/mainpm.c
* cleaned OS2 build errors and warnings reported by David Macias.
Modifications not tested - OS2 users will have to make tests and
reports problems.
* harbour/include/hbclass.ch
* cleaned scope error message
* harbour/include/hbpp.h
* harbour/source/pp/ppcore.c
* added hack for accepting expressions which start with ':' character
as regular/list match markers
* harbour/include/hbpp.h
* harbour/source/compiler/complex.c
* harbour/source/compiler/harbour.y
* harbour/source/compiler/harbour.yyc
* harbour/source/pp/ppcore.c
* updated lexer to recognize IF(<exp1>,<exp2>,<exp3>) in expressions like
IF(<exp,...>) - it allow to make some grammar rules much more simple.
* 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/include/hbstdgen.ch
* added #undef HB_COMPAT_XHB
* harbour/source/common/hbstr.c
* indenting
* harbour/source/compiler/ppcomp.c
* updated line numbering in #pragma dump code and error messages
executed for disabled code
* harbour/source/pp/ppcore.c
* changed the precedence of #pragma BEGINDIUMP/ENDDUMP - now
it has higher precedence then conditional compilation with
#IF[DEF]/#ENDIF
* added support for defined() pseudo function in #IF / #ELIF
directives, f.e.:
#if defined( __HARBOUR__ ) .and. !defined( HB_COMPAT_XHB )
#stdout "Harbour compiler compiled without xHarbour extensions."
#endif
* harbour/include/hbexprop.h
* harbour/source/common/expropt1.c
+ added hb_compExprAsNumSign()
* harbour/include/hbexprc.c
* optimize lValue++ and ++lValue
* harbour/source/common/hbdate.c
* minor optimization
* harbour/source/compiler/cmdcheck.c
* maximum supported warning level should be 3 not 4
* harbour/include/hbxvm.h
* harbour/source/compiler/gencc.c
* harbour/source/vm/hvm.c
* use separate functions for equal and exactly equal operations
* cleanup and some other minor optimizations
* harbour/source/compiler/hbopt.c
* optimize PCODEs for code like: lVar:=lVar, sVar:=sVar, mVar:=mVar, ...
* harbour/include/common.ch
* changed HB_SYMBOL_UNUSED( symbol ) to ( symbol := ( symbol ) )
It's a little bit simpler version and now it's also stripped by
PCODE optimizer
* harbour/source/compiler/harbour.c
* harbour/source/compiler/harbour.y
* harbour/source/compiler/harbour.yyc
* eliminated some redundant rules
* optimized PCODEs generated for FOR/NEXT code and removed some old
hardcoded optimization for local variables - if it will be worth
to optimize then such optimization will be done by expression
optimizer
* chaned a little bit WITHOBJECT syntax.
Now WITHOBJECT somefunc(); END is not silently ignored and call
to somefunc() is left. This optimization also works when there
are empty line between WITHOBJECT and END
* harbour/source/rdd/dbf1.c
! fixed for GPF in DBRI_RAWDATA, DBRI_RAWMEMOS (Peter Rees fix in
xHarbour)
* harbour/common.mak
* harbour/source/compiler/Makefile
* harbour/source/compiler/hbfix.c
+ harbour/source/compiler/hbopt.c
* divided hbfix.c into two separated functions:
- hb_compFixFuncPCode() which only fix generated PCODE updating
local parameters numbers when PARAMETERS is used
- hb_compOptimizePCode() which makes PCODE optimization
It allows to not execute hb_compFixFuncPCode() when PARAMETERS
is not use and execute hb_compOptimizePCode() more then once in
optimization process.
* harbour/hbgtmk.sh
* updated CVS server name
* harbour/include/hbcomp.h
* harbour/include/hbcompdf.h
* harbour/source/compiler/complex.c
* harbour/source/compiler/harbour.c
* harbour/source/compiler/harbour.y
* harbour/source/compiler/harbour.yyc
* harbour/source/compiler/hbcomp.c
* harbour/source/compiler/hbgenerr.c
* harbour/source/compiler/hbident.c
* changed code for generating in PCODE line numbers and module names
there was serious problem with line numbers and module names in old
code - in many cases line numbers were not generated at all or
generated in wrong places. Also file module name was not updated
when inside of function some code was included with #include
For such situation now modified version of HB_P_MODULE is generated
with module name only but without function name, f.e.:
HB_P_MODULE "test.prg:"
exactly the same form of HB_P_MODULE is used in xHarbour.
Debugger code should be updated to recognize such HB_P_MODULE version
Ryszard any chance that you can look at it?
And what about syncing with xHarbour debugger?
I can add some missing functions to compiler and HVM but I do not
want to update next peace of code myself. Sorry but I do not have
enough time. I'd prefer to finish some other things I'm working.
If Ryszard is busy can someone else try to port xHarbour debugger
to Harbour?
* harbour/contrib/libct/ctwfunc.c
* harbour/contrib/libct/ctwin.c
* harbour/contrib/libct/ctwin.h
+ added CTWIN compatible ALERT - it works in differ way then the
standard Clipper one. In the moment when CTWIN is activated
(it's enough to call any CTWIN function like WOPEN()/WBOARD(),...
or CTWINIT()) standard ALERT() is replaced by CTWIN one build
in inside CTWIN GT driver. It allocates separate window for ALERT
box and makes differ formatting of passed text.
TODO: add support for SET KEY blocks
* harbour/bin/hb-func.sh
* do not pass linking parameters to GCC/G++ when is used for
compilation only
* harbour/contrib/rdd_ads/Makefile
* set -DWIN32 for W32 compilation
* harbour/contrib/rdd_ads/makefile.bc
* formatting
* harbour/include/hbapi.h
* harbour/source/rtl/strcase.c
+ added hb_charUpper() and hb_charLower()
* harbour/include/hbapigt.h
* harbour/include/hbgtcore.h
* harbour/source/rtl/gtapi.c
* harbour/source/rtl/hbgtcore.c
+ added support for ALERT() on GT level - C functions: hb_gtAlert()/
hb_gt_Alert()
To replicate some details of Clipper and CT3 behavior ALERT() cannot
be implement only on upper level as .prg function
* harbour/source/rtl/gtfunc.c
+ added .prg function HB_GTALLERT()
* harbour/source/rtl/alert.prg
* redirected ALERT() to HB_GTALLERT()
* harbour/source/rtl/fstemp.c
* use the same case conversion as in low level hb_fs*() functions to
avoid possible problems with national characters
* harbour/source/rtl/dates.c
* harbour/source/rtl/set.c
* harbour/source/rtl/strmatch.c
* harbour/source/rtl/transfrm.c
* use hb_charUpper()
* casting
* harbour/contrib/rdd_ads/ads1.c
* do not release FLOCK() after DBAPPEND() - only RLOCKs should be
removed
* harbour/contrib/rdd_ads/rddads.h
* set ADS_REQUIRE_VERSION when not set by user scripts