From 8db0ce3340e5275e5f58775dca64e57b5c967cab Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Tue, 16 Oct 2007 11:04:51 +0000 Subject: [PATCH] 2007-10-16 12:50 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * source/rtl/isprint.c ! Fixed ISPRINTER() on Win32 after last changes. Thanks Guillermo, pls test now. * source/rdd/dbcmd.c ! Marked as HB_EXTENSION: FIELDLEN(), FIELDDEC(), FIELDTYPE() * include/hbextern.ch * source/rdd/dbcmd.c ! Marked as HB_EXTENSION: DBDROP(), DBEXISTS(), RDDINFO() (they were properly marked in hbextern.ch but not in source) * include/hbextern.ch * source/rtl/disksphb.c * source/rtl/fssize.c * source/rtl/fstemp.c * source/rtl/inkey.c * source/rtl/oemansi.c * source/rtl/philes.c * source/rtl/setcolor.c * source/rtl/setfunc.prg * source/rtl/setkey.c * source/rtl/shadow.c * source/rtl/trace.c * source/rtl/valtostr.c * source/vm/dynsym.c + Removed HB_EXTENSION from all the .prg level functions prefixed with HB_. (there was a mixed situation here, but there's no need to mark any HB_ functions as extensions, as it's obvious by their name. So as a rule, no HB_ prefixed function should ever be marked as HB_EXTENSION anymore.) ! Fixed some inconsistencies in HB_EXTENSION between hbextern.ch and actual sources. * source/rtl/tgetlist.prg * One HB_EXTENSION changed to !HB_C52_STRICT because it was guarding a bugfix rather than a real extension. * source/rtl/gui.prg * _GetNumCol() is now always strictly compatible. NOTE added about sloppy C5.3 behaviour. * source/rtl/inkey.c * contrib/xhb/xhb.ch * contrib/xhb/xhbfunc.c ! __KEYBOARD() xhb hidden parameter extension moved to xhb lib. For similar functionality inside Harbour pls use HB_KEYPUT(). __KEYBOARD is now 100% C5.x compatible. * source/rtl/setfunc.prg * __SetFunction() extension now uses HB_KEYPUT() instead of __KEYBOARD() extended parameters. * source/compiler/hbfunchk.c * source/rtl/at.c ! AT() extra parameters handled when HB_EXTENSION is on (was !HB_C52_STRICT). (The first extra parameter is XPP and Flagship compatible. The three parameter version of this function is called AT3() in CAVO.) ! TRIM()/RTRIM() extra parameters handled on compiler level when HB_EXTENSION is on (default). ! FILE() parameter check turned off in compiler. (to be C5.x compatible) * source/rtl/alert.prg ! ALERT() Harbour extended parameter (1st parameter type) is now guarded with HB_EXTENSION instead of HB_C52_STRICT. * source/rtl/gete.c ! GETE[NV]() Harbour extended parameter guarded with HB_EXTENSION. * source/vm/proc.c ! PROCFILE() Harbour extended parameter guarded with HB_EXTENSION. * source/rtl/mlcfunc.c ! Harbour extended parameters for MEMOLINE()/MLCOUNT()/ MLPOS()/MLCTOPOS()/MPOSTOLC() are now guarded with HB_EXTENSION (instead of HB_C52_STRICT). It seems to be possible to specify custom EOLs for all these functions. (Maybe simple automatic Unix/Win EOL style handling would be better here) * source/vm/memvars.c ! Guarded Harbour extension in __MVRESTORE() with HB_EXTENSION. ; After this cleanup: - HB_EXTENSION is marking extra features living inside existing C5.x functions or classes, or Harbour extension functions not complying with the HB_ prefix rule (we have six such functions in RDD). If there are more extended parameters in Harbour pls mark them with HB_EXTENSION too. - HB_C52_STRICT is guarding bugfixes compared to C5.x. - No HB_ functions are guarded with HB_EXTENSION anymore. - We'd pbly need to review each HB_EXTENSIONs to check whether they are safe or not. - A list of HB_EXTENSIONs: - MLCOUNT() MEMOLINE() MLPOS() MLCPOS() MPOSTOLC() - 5th and up can specify custom EOLs. - ALERT() - 1st parameter type can be any type in Harbour, char only in C5.x - SET FUNCTION TO __SETFUNCTION - 2nd parameter can be numeric or array of numeric in Harbour. - SETKEY() - 3rd codeblock parameter ("isactive" block) - SAVESCREEN() - 5th parameter: lNoCheck (?) RESTSCREEN() - 6th parameter: lNoCheck (?) - AT() - 3rd and 4th parameters to set search range. 3rd parameter is also supported by XPP and FS. Results in compiler error in C5.x. (CAVO uses AT2() and AT3() for extended versions.) - TRIM() RTRIM() - 2nd parameter is an extension regarding space trimming mode. Results in compiler error in C5.x. - ALLTRIM() - 2nd parameter is an extension regarding space trimming mode. - GETE() GETENV() - 2nd parameter specifies a default value. Can be found in HB_GETENV(). - PROCFILE() - 1st parameter is a Harbour extension. Undocumented function in C5.x. The extension looks similar to the one found in Flagship. - __MVRESTORE() - 3rd/4th parameters are Harbour extensions to set variable name mask. Redirected from the internal 5.x function named __MRESTORE(). - DB*() - cRDD, nConnection, cCodePage extra parameters in many DB*() functions. TOFIX: None of them is marked as HB_EXTENSION. - SET()s - These are not marked as HB_EXTENSION. - ? - Is there anything else? --- harbour/ChangeLog | 128 +++++++ harbour/contrib/xhb/xhb.ch | 2 + harbour/contrib/xhb/xhbfunc.c | 30 ++ harbour/include/hbextern.ch | 567 ++++++++++++++--------------- harbour/source/compiler/hbfunchk.c | 16 +- harbour/source/rdd/dbcmd.c | 94 ++--- harbour/source/rtl/alert.prg | 28 +- harbour/source/rtl/at.c | 34 +- harbour/source/rtl/disksphb.c | 4 - harbour/source/rtl/fssize.c | 4 - harbour/source/rtl/fstemp.c | 4 - harbour/source/rtl/gete.c | 4 + harbour/source/rtl/gui.prg | 7 +- harbour/source/rtl/inkey.c | 19 - harbour/source/rtl/isprint.c | 30 +- harbour/source/rtl/mlcfunc.c | 2 +- harbour/source/rtl/oemansi.c | 4 - harbour/source/rtl/philes.c | 8 - harbour/source/rtl/setcolor.c | 4 - harbour/source/rtl/setfunc.prg | 2 +- harbour/source/rtl/setkey.c | 4 - harbour/source/rtl/shadow.c | 4 - harbour/source/rtl/tgetlist.prg | 2 +- harbour/source/rtl/trace.c | 4 - harbour/source/rtl/valtostr.c | 5 - harbour/source/vm/dynsym.c | 4 - harbour/source/vm/memvars.c | 9 + harbour/source/vm/proc.c | 8 +- 28 files changed, 574 insertions(+), 457 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 895b31a7a0..e2b6441fb7 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -8,6 +8,134 @@ 2002-12-01 13:30 UTC+0100 Foo Bar */ +2007-10-16 12:50 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) + * source/rtl/isprint.c + ! Fixed ISPRINTER() on Win32 after last changes. + Thanks Guillermo, pls test now. + + * source/rdd/dbcmd.c + ! Marked as HB_EXTENSION: FIELDLEN(), FIELDDEC(), FIELDTYPE() + + * include/hbextern.ch + * source/rdd/dbcmd.c + ! Marked as HB_EXTENSION: DBDROP(), DBEXISTS(), RDDINFO() + (they were properly marked in hbextern.ch but not in source) + + * include/hbextern.ch + * source/rtl/disksphb.c + * source/rtl/fssize.c + * source/rtl/fstemp.c + * source/rtl/inkey.c + * source/rtl/oemansi.c + * source/rtl/philes.c + * source/rtl/setcolor.c + * source/rtl/setfunc.prg + * source/rtl/setkey.c + * source/rtl/shadow.c + * source/rtl/trace.c + * source/rtl/valtostr.c + * source/vm/dynsym.c + + Removed HB_EXTENSION from all the .prg level functions + prefixed with HB_. + (there was a mixed situation here, but there's no need + to mark any HB_ functions as extensions, as it's obvious + by their name. So as a rule, no HB_ prefixed function + should ever be marked as HB_EXTENSION anymore.) + ! Fixed some inconsistencies in HB_EXTENSION between + hbextern.ch and actual sources. + + * source/rtl/tgetlist.prg + * One HB_EXTENSION changed to !HB_C52_STRICT because it + was guarding a bugfix rather than a real extension. + + * source/rtl/gui.prg + * _GetNumCol() is now always strictly compatible. + NOTE added about sloppy C5.3 behaviour. + + * source/rtl/inkey.c + * contrib/xhb/xhb.ch + * contrib/xhb/xhbfunc.c + ! __KEYBOARD() xhb hidden parameter extension moved to + xhb lib. For similar functionality inside Harbour + pls use HB_KEYPUT(). __KEYBOARD is now 100% C5.x + compatible. + + * source/rtl/setfunc.prg + * __SetFunction() extension now uses HB_KEYPUT() instead + of __KEYBOARD() extended parameters. + + * source/compiler/hbfunchk.c + * source/rtl/at.c + ! AT() extra parameters handled when HB_EXTENSION is on + (was !HB_C52_STRICT). (The first extra parameter is + XPP and Flagship compatible. The three parameter version + of this function is called AT3() in CAVO.) + ! TRIM()/RTRIM() extra parameters handled on compiler level + when HB_EXTENSION is on (default). + ! FILE() parameter check turned off in compiler. + (to be C5.x compatible) + + * source/rtl/alert.prg + ! ALERT() Harbour extended parameter (1st parameter type) + is now guarded with HB_EXTENSION instead of HB_C52_STRICT. + + * source/rtl/gete.c + ! GETE[NV]() Harbour extended parameter guarded with HB_EXTENSION. + + * source/vm/proc.c + ! PROCFILE() Harbour extended parameter guarded with HB_EXTENSION. + + * source/rtl/mlcfunc.c + ! Harbour extended parameters for MEMOLINE()/MLCOUNT()/ + MLPOS()/MLCTOPOS()/MPOSTOLC() are now guarded with HB_EXTENSION + (instead of HB_C52_STRICT). It seems to be possible to + specify custom EOLs for all these functions. (Maybe simple + automatic Unix/Win EOL style handling would be better here) + + * source/vm/memvars.c + ! Guarded Harbour extension in __MVRESTORE() with HB_EXTENSION. + + ; After this cleanup: + - HB_EXTENSION is marking extra features living inside existing C5.x + functions or classes, or Harbour extension functions + not complying with the HB_ prefix rule (we have six + such functions in RDD). If there are more extended + parameters in Harbour pls mark them with HB_EXTENSION + too. + - HB_C52_STRICT is guarding bugfixes compared to C5.x. + - No HB_ functions are guarded with HB_EXTENSION anymore. + - We'd pbly need to review each HB_EXTENSIONs to check whether they + are safe or not. + - A list of HB_EXTENSIONs: + - MLCOUNT() + MEMOLINE() + MLPOS() + MLCPOS() + MPOSTOLC() - 5th and up can specify custom EOLs. + - ALERT() - 1st parameter type can be any type in Harbour, char only in C5.x + - SET FUNCTION TO + __SETFUNCTION - 2nd parameter can be numeric or array of numeric in Harbour. + - SETKEY() - 3rd codeblock parameter ("isactive" block) + - SAVESCREEN() - 5th parameter: lNoCheck (?) + RESTSCREEN() - 6th parameter: lNoCheck (?) + - AT() - 3rd and 4th parameters to set search range. 3rd parameter is + also supported by XPP and FS. Results in compiler error in C5.x. + (CAVO uses AT2() and AT3() for extended versions.) + - TRIM() + RTRIM() - 2nd parameter is an extension regarding space trimming mode. + Results in compiler error in C5.x. + - ALLTRIM() - 2nd parameter is an extension regarding space trimming mode. + - GETE() + GETENV() - 2nd parameter specifies a default value. Can be found in HB_GETENV(). + - PROCFILE() - 1st parameter is a Harbour extension. Undocumented function in C5.x. + The extension looks similar to the one found in Flagship. + - __MVRESTORE() - 3rd/4th parameters are Harbour extensions to set variable name + mask. Redirected from the internal 5.x function named __MRESTORE(). + - DB*() - cRDD, nConnection, cCodePage extra parameters in many DB*() functions. + TOFIX: None of them is marked as HB_EXTENSION. + - SET()s - These are not marked as HB_EXTENSION. + - ? - Is there anything else? + 2007-10-16 09:29 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * include/hbextern.ch * source/rtl/gete.c diff --git a/harbour/contrib/xhb/xhb.ch b/harbour/contrib/xhb/xhb.ch index e67ac4659a..1b9fbb8f4f 100644 --- a/harbour/contrib/xhb/xhb.ch +++ b/harbour/contrib/xhb/xhb.ch @@ -60,6 +60,8 @@ #ifndef __XHARBOUR__ #pragma -ks+ REQUEST XHB_LIB + + #xtranslate __Keyboard([]) => xhb__Keyboard() #endif #endif /* __HARBOUR__ */ diff --git a/harbour/contrib/xhb/xhbfunc.c b/harbour/contrib/xhb/xhbfunc.c index 92fea42f71..093245a67e 100644 --- a/harbour/contrib/xhb/xhbfunc.c +++ b/harbour/contrib/xhb/xhbfunc.c @@ -53,6 +53,36 @@ #include "hbapi.h" #include "hbapiitm.h" +HB_FUNC_EXTERN( __KEYBOARD ); + +HB_FUNC( XHB__KEYBOARD ) +{ + if( ISCHAR( 1 ) ) + { + HB_FUNC_EXEC( __KEYBOARD ); + } + else if( ISNUM( 1 ) ) + { + hb_inkeyReset(); + hb_inkeyPut( hb_parni(1) ); + } + else if( ISARRAY( 1 ) ) + { + PHB_ITEM pArray = hb_param( 1, HB_IT_ARRAY ); + ULONG ulElements = hb_arrayLen( pArray ), ulIndex; + + hb_inkeyReset(); + + for( ulIndex = 1; ulIndex <= ulElements; ulIndex++ ) + { + if( hb_arrayGetType( pArray, ulIndex ) & HB_IT_NUMERIC ) + hb_inkeyPut( hb_arrayGetNI( pArray, ulIndex ) ); + } + } + else + hb_inkeyReset(); +} + HB_FUNC_EXTERN( HB_DESERIALIZE ); HB_FUNC( HB_DESERIALBEGIN ) diff --git a/harbour/include/hbextern.ch b/harbour/include/hbextern.ch index 5bd5c410ef..f10ea510ae 100644 --- a/harbour/include/hbextern.ch +++ b/harbour/include/hbextern.ch @@ -334,254 +334,13 @@ EXTERNAL VERSION EXTERNAL WORD EXTERNAL YEAR -/* Harbour extensions, always on */ +/* Harbour extensions */ +#ifdef HB_EXTENSION EXTERNAL DBDROP EXTERNAL DBEXISTS EXTERNAL RDDINFO - -EXTERNAL HB_ARGC -EXTERNAL HB_ARGCHECK -EXTERNAL HB_ARGSTRING -EXTERNAL HB_ARGV -EXTERNAL HB_COLORINDEX -EXTERNAL HB_COMPILER -EXTERNAL HB_PCODEVER -EXTERNAL HB_BUILDDATE -EXTERNAL HB_FNAMEMERGE -EXTERNAL HB_FNAMESPLIT -EXTERNAL HB_LANGNAME -EXTERNAL HB_LANGSELECT -EXTERNAL HB_LANGERRMSG -EXTERNAL HB_LANGMESSAGE -#ifndef HB_CDP_SUPPORT_OFF -EXTERNAL HB_SETCODEPAGE -EXTERNAL HB_TRANSLATE -EXTERNAL HB_CDPLIST -EXTERNAL HB_STRTOUTF8 -EXTERNAL HB_UTF8TOSTR -EXTERNAL HB_UTF8LEN -EXTERNAL HB_UTF8LEFT -EXTERNAL HB_UTF8RIGHT -EXTERNAL HB_UTF8PEEK -EXTERNAL HB_UTF8POKE -EXTERNAL HB_UTF8STUFF -EXTERNAL HB_UTF8SUBSTR -EXTERNAL HB_UTF8STRTRAN #endif -EXTERNAL HB_ISARRAY -EXTERNAL HB_ISBLOCK -EXTERNAL HB_ISCHAR -EXTERNAL HB_ISDATE -EXTERNAL HB_ISHASH -EXTERNAL HB_ISLOGICAL -EXTERNAL HB_ISMEMO -EXTERNAL HB_ISNIL -EXTERNAL HB_ISNULL -EXTERNAL HB_ISNUMERIC -EXTERNAL HB_ISOBJECT -EXTERNAL HB_ISPOINTER -EXTERNAL HB_ISSTRING -EXTERNAL HB_ISSYMBOL - -EXTERNAL HB_IDLEADD -EXTERNAL HB_IDLEDEL -EXTERNAL HB_IDLERESET -EXTERNAL HB_IDLESLEEP -EXTERNAL HB_IDLESTATE -EXTERNAL HB_RELEASECPU - -EXTERNAL HB_OSNEWLINE -EXTERNAL HB_APARAMS -EXTERNAL HB_PVALUE -EXTERNAL HB_FORNEXT -EXTERNAL HB_EXECFROMARRAY -EXTERNAL HB_METHODNAME -EXTERNAL HB_SETMACRO -EXTERNAL HB_STOD -EXTERNAL HB_WILDMATCH -EXTERNAL HB_CLOCKS2SECS -EXTERNAL HB_MATHERMODE -EXTERNAL HB_MATHERBLOCK -EXTERNAL HB_SERIALIZE -EXTERNAL HB_DESERIALIZE -EXTERNAL HB_HEXTONUM -EXTERNAL HB_NUMTOHEX -EXTERNAL HB_HEXTOSTR -EXTERNAL HB_STRTOHEX -EXTERNAL HB_ISPRINTER -EXTERNAL HB_GETENV - -EXTERNAL HB_INISETCOMMENT -EXTERNAL HB_INIREAD -EXTERNAL HB_INIWRITE - -EXTERNAL HBCLASS -EXTERNAL HBOBJECT -EXTERNAL HBSCALAR -EXTERNAL HBARRAY -EXTERNAL HBBLOCK -EXTERNAL HBCHARACTER -EXTERNAL HBDATE -EXTERNAL HBLOGICAL -EXTERNAL HBNIL -EXTERNAL HBNUMERIC - -EXTERNAL HB_LIBLOAD -EXTERNAL HB_LIBFREE -EXTERNAL HB_LIBDO -EXTERNAL HB_LIBERROR - -EXTERNAL HB_RANDOM -EXTERNAL HB_RANDOMINT -EXTERNAL HB_RANDOMSEED - -EXTERNAL HB_BITAND -EXTERNAL HB_BITOR -EXTERNAL HB_BITXOR -EXTERNAL HB_BITNOT -EXTERNAL HB_BITSET -EXTERNAL HB_BITRESET -EXTERNAL HB_BITTEST -EXTERNAL HB_BITSHIFT - -EXTERNAL HB_ADLER32 -EXTERNAL HB_CRC -EXTERNAL HB_CRC16 -EXTERNAL HB_CRC32 -EXTERNAL HB_CRCCT -EXTERNAL HB_MD5 -EXTERNAL HB_MD5FILE - -EXTERNAL HB_GTALERT -EXTERNAL HB_GTVERSION -EXTERNAL HB_GTSYS -EXTERNAL HB_GTINFO -EXTERNAL HB_SETDISPCP -EXTERNAL HB_SETKEYCP -EXTERNAL HB_SETTERMCP -EXTERNAL HB_GFXPRIMITIVE -EXTERNAL HB_GFXTEXT - -EXTERNAL HB_GETSTDERR -EXTERNAL HB_GETSTDIN -EXTERNAL HB_GETSTDOUT - -EXTERNAL __DYNSN2PTR -EXTERNAL __DYNSP2NAME - -/* Codepage support */ -EXTERNAL HB_CODEPAGE_BG866 -EXTERNAL HB_CODEPAGE_BGISO -EXTERNAL HB_CODEPAGE_BGMIK -EXTERNAL HB_CODEPAGE_BGWIN -EXTERNAL HB_CODEPAGE_CS852 -EXTERNAL HB_CODEPAGE_CSISO -EXTERNAL HB_CODEPAGE_CSKAM -EXTERNAL HB_CODEPAGE_CSWIN -EXTERNAL HB_CODEPAGE_DE -EXTERNAL HB_CODEPAGE_DEWIN -EXTERNAL HB_CODEPAGE_EL -EXTERNAL HB_CODEPAGE_ELWIN -EXTERNAL HB_CODEPAGE_ES -EXTERNAL HB_CODEPAGE_ESMWIN -EXTERNAL HB_CODEPAGE_ESWIN -EXTERNAL HB_CODEPAGE_FR -EXTERNAL HB_CODEPAGE_HR1250 -EXTERNAL HB_CODEPAGE_HR437 -EXTERNAL HB_CODEPAGE_HR852 -EXTERNAL HB_CODEPAGE_HU852 -EXTERNAL HB_CODEPAGE_HU852S -EXTERNAL HB_CODEPAGE_HUISO -EXTERNAL HB_CODEPAGE_HUISOS -EXTERNAL HB_CODEPAGE_HUWIN -EXTERNAL HB_CODEPAGE_HUWINS -EXTERNAL HB_CODEPAGE_IT437 -EXTERNAL HB_CODEPAGE_IT850 -EXTERNAL HB_CODEPAGE_ITISB -EXTERNAL HB_CODEPAGE_ITISO -EXTERNAL HB_CODEPAGE_LT -EXTERNAL HB_CODEPAGE_PL852 -EXTERNAL HB_CODEPAGE_PLISO -EXTERNAL HB_CODEPAGE_PLMAZ -EXTERNAL HB_CODEPAGE_PLWIN -EXTERNAL HB_CODEPAGE_PT850 -EXTERNAL HB_CODEPAGE_PTISO -EXTERNAL HB_CODEPAGE_RU1251 -EXTERNAL HB_CODEPAGE_RU866 -EXTERNAL HB_CODEPAGE_RUKOI8 -EXTERNAL HB_CODEPAGE_SK852 -EXTERNAL HB_CODEPAGE_SKISO -EXTERNAL HB_CODEPAGE_SKKAM -EXTERNAL HB_CODEPAGE_SKWIN -EXTERNAL HB_CODEPAGE_SL437 -EXTERNAL HB_CODEPAGE_SL852 -EXTERNAL HB_CODEPAGE_SLISO -EXTERNAL HB_CODEPAGE_SLWIN -EXTERNAL HB_CODEPAGE_SRWIN -EXTERNAL HB_CODEPAGE_SV850 -EXTERNAL HB_CODEPAGE_SVCLIP -EXTERNAL HB_CODEPAGE_SVWIN -EXTERNAL HB_CODEPAGE_TR857 -EXTERNAL HB_CODEPAGE_TRWIN -EXTERNAL HB_CODEPAGE_UA1251 -EXTERNAL HB_CODEPAGE_UA866 -EXTERNAL HB_CODEPAGE_UAKOI8 - -/* lang support */ -EXTERNAL HB_LANG_BG866 -EXTERNAL HB_LANG_BGISO -EXTERNAL HB_LANG_BGWIN -EXTERNAL HB_LANG_CA -EXTERNAL HB_LANG_CS852 -EXTERNAL HB_LANG_CSISO -EXTERNAL HB_LANG_CSKAM -EXTERNAL HB_LANG_CSWIN -EXTERNAL HB_LANG_DE -EXTERNAL HB_LANG_DEWIN -EXTERNAL HB_LANG_EL -EXTERNAL HB_LANG_ELWIN -EXTERNAL HB_LANG_EN -EXTERNAL HB_LANG_EO -EXTERNAL HB_LANG_ES -EXTERNAL HB_LANG_ESWIN -EXTERNAL HB_LANG_EU -EXTERNAL HB_LANG_FR -EXTERNAL HB_LANG_GL -EXTERNAL HB_LANG_HE862 -EXTERNAL HB_LANG_HEWIN -EXTERNAL HB_LANG_HR852 -EXTERNAL HB_LANG_HRISO -EXTERNAL HB_LANG_HU852 -EXTERNAL HB_LANG_HUCWI -EXTERNAL HB_LANG_HUISO -EXTERNAL HB_LANG_HUWIN -EXTERNAL HB_LANG_ID -EXTERNAL HB_LANG_IS850 -EXTERNAL HB_LANG_IT -EXTERNAL HB_LANG_KO -EXTERNAL HB_LANG_NL -EXTERNAL HB_LANG_PL852 -EXTERNAL HB_LANG_PLISO -EXTERNAL HB_LANG_PLMAZ -EXTERNAL HB_LANG_PLWIN -EXTERNAL HB_LANG_PT -EXTERNAL HB_LANG_RO -EXTERNAL HB_LANG_RU866 -EXTERNAL HB_LANG_RUKOI8 -EXTERNAL HB_LANG_RUWIN -EXTERNAL HB_LANG_SL437 -EXTERNAL HB_LANG_SL852 -EXTERNAL HB_LANG_SLISO -EXTERNAL HB_LANG_SLWIN -EXTERNAL HB_LANG_SR852 -EXTERNAL HB_LANG_SRISO -EXTERNAL HB_LANG_SRWIN -EXTERNAL HB_LANG_TR857 -EXTERNAL HB_LANG_TRWIN -EXTERNAL HB_LANG_ZHB5 -EXTERNAL HB_LANG_ZHGB - /* HiPer-SEEK / CFTS compatible functions */ @@ -626,8 +385,6 @@ EXTERNAL SX_DECRYPT EXTERNAL SX_DTOP EXTERNAL SX_PTOD - - /* CA-Cl*pper compatible internal functions */ EXTERNAL CLIPPER520 @@ -690,6 +447,20 @@ EXTERNAL __XSAVESCREEN EXTERNAL __DBSQL EXTERNAL __RDDGETTEMPALIAS +EXTERNAL __GETMSGPRF +EXTERNAL __OPGETPRF +EXTERNAL __OPCOUNT +EXTERNAL __SETPROFILER +EXTERNAL __TRACEPRGCALLS + +EXTERNAL __DYNSN2PTR +EXTERNAL __DYNSP2NAME +EXTERNAL __DYNSCOUNT +EXTERNAL __DYNSGETINDEX +EXTERNAL __DYNSGETNAME +EXTERNAL __DYNSISFUN +EXTERNAL __DYNSN2SYM +EXTERNAL __DYNSGETPRF EXTERNAL __CLASSADD EXTERNAL __CLASSH @@ -714,27 +485,6 @@ EXTERNAL __CLSMODMSG EXTERNAL __CLSNEW EXTERNAL __CLSPARENT -EXTERNAL __ERRINHANDLER -EXTERNAL __ERRRT_BASE -EXTERNAL __ERRRT_SBASE -EXTERNAL __HRBRUN -EXTERNAL __HRBLOAD -EXTERNAL __HRBDO -EXTERNAL __HRBUNLOAD -EXTERNAL __HRBGETFU -EXTERNAL __HRBDOFU -EXTERNAL __MVCLEAR -EXTERNAL __MVDBGINFO -EXTERNAL __MVEXIST -EXTERNAL __MVGET -EXTERNAL __MVPRIVATE -EXTERNAL __MVPUBLIC -EXTERNAL __MVPUT -EXTERNAL __MVRELEASE -EXTERNAL __MVRESTORE -EXTERNAL __MVSAVE -EXTERNAL __MVSCOPE -EXTERNAL __MVXRELEASE EXTERNAL __OBJADDDATA EXTERNAL __OBJADDINLINE EXTERNAL __OBJADDMETHOD @@ -756,6 +506,37 @@ EXTERNAL __OBJSENDMSG EXTERNAL __OBJSETVALUELIST EXTERNAL __SENDER +EXTERNAL __PP_INIT +EXTERNAL __PP_PATH +EXTERNAL __PP_RESET +EXTERNAL __PP_ADDRULE +EXTERNAL __PP_PROCESS +EXTERNAL __PP_STDRULES + +EXTERNAL __HRBRUN +EXTERNAL __HRBLOAD +EXTERNAL __HRBDO +EXTERNAL __HRBUNLOAD +EXTERNAL __HRBGETFU +EXTERNAL __HRBDOFU + +EXTERNAL __ERRINHANDLER +EXTERNAL __ERRRT_BASE +EXTERNAL __ERRRT_SBASE + +EXTERNAL __MVCLEAR +EXTERNAL __MVDBGINFO +EXTERNAL __MVEXIST +EXTERNAL __MVGET +EXTERNAL __MVPRIVATE +EXTERNAL __MVPUBLIC +EXTERNAL __MVPUT +EXTERNAL __MVRELEASE +EXTERNAL __MVRESTORE +EXTERNAL __MVSAVE +EXTERNAL __MVSCOPE +EXTERNAL __MVXRELEASE + /* The debugger interface */ EXTERNAL HB_DBG_INVOKEDEBUG @@ -991,26 +772,233 @@ EXTERNAL _TYPEFILE /* Harbour extensions */ -#ifdef HB_EXTENSION +EXTERNAL HB_ARGC +EXTERNAL HB_ARGCHECK +EXTERNAL HB_ARGSTRING +EXTERNAL HB_ARGV +EXTERNAL HB_COLORINDEX +EXTERNAL HB_COMPILER +EXTERNAL HB_PCODEVER +EXTERNAL HB_BUILDDATE +EXTERNAL HB_FNAMEMERGE +EXTERNAL HB_FNAMESPLIT +EXTERNAL HB_LANGNAME +EXTERNAL HB_LANGSELECT +EXTERNAL HB_LANGERRMSG +EXTERNAL HB_LANGMESSAGE +#ifndef HB_CDP_SUPPORT_OFF +EXTERNAL HB_SETCODEPAGE +EXTERNAL HB_TRANSLATE +EXTERNAL HB_CDPLIST +EXTERNAL HB_STRTOUTF8 +EXTERNAL HB_UTF8TOSTR +EXTERNAL HB_UTF8LEN +EXTERNAL HB_UTF8LEFT +EXTERNAL HB_UTF8RIGHT +EXTERNAL HB_UTF8PEEK +EXTERNAL HB_UTF8POKE +EXTERNAL HB_UTF8STUFF +EXTERNAL HB_UTF8SUBSTR +EXTERNAL HB_UTF8STRTRAN +#endif +EXTERNAL HB_ISARRAY +EXTERNAL HB_ISBLOCK +EXTERNAL HB_ISCHAR +EXTERNAL HB_ISDATE +EXTERNAL HB_ISHASH +EXTERNAL HB_ISLOGICAL +EXTERNAL HB_ISMEMO +EXTERNAL HB_ISNIL +EXTERNAL HB_ISNULL +EXTERNAL HB_ISNUMERIC +EXTERNAL HB_ISOBJECT +EXTERNAL HB_ISPOINTER +EXTERNAL HB_ISSTRING +EXTERNAL HB_ISSYMBOL -EXTERNAL __DYNSCOUNT -EXTERNAL __DYNSGETINDEX -EXTERNAL __DYNSGETNAME -EXTERNAL __DYNSISFUN -EXTERNAL __DYNSN2SYM -EXTERNAL __DYNSGETPRF -EXTERNAL __GETMSGPRF -EXTERNAL __OPGETPRF -EXTERNAL __OPCOUNT -EXTERNAL __SETPROFILER -EXTERNAL __TRACEPRGCALLS +EXTERNAL HB_IDLEADD +EXTERNAL HB_IDLEDEL +EXTERNAL HB_IDLERESET +EXTERNAL HB_IDLESLEEP +EXTERNAL HB_IDLESTATE +EXTERNAL HB_RELEASECPU -EXTERNAL __PP_INIT -EXTERNAL __PP_PATH -EXTERNAL __PP_RESET -EXTERNAL __PP_ADDRULE -EXTERNAL __PP_PROCESS -EXTERNAL __PP_STDRULES +EXTERNAL HB_OSNEWLINE +EXTERNAL HB_APARAMS +EXTERNAL HB_PVALUE +EXTERNAL HB_FORNEXT +EXTERNAL HB_EXECFROMARRAY +EXTERNAL HB_METHODNAME +EXTERNAL HB_SETMACRO +EXTERNAL HB_STOD +EXTERNAL HB_WILDMATCH +EXTERNAL HB_CLOCKS2SECS +EXTERNAL HB_MATHERMODE +EXTERNAL HB_MATHERBLOCK +EXTERNAL HB_SERIALIZE +EXTERNAL HB_DESERIALIZE +EXTERNAL HB_HEXTONUM +EXTERNAL HB_NUMTOHEX +EXTERNAL HB_HEXTOSTR +EXTERNAL HB_STRTOHEX +EXTERNAL HB_ISPRINTER +EXTERNAL HB_GETENV + +EXTERNAL HB_INISETCOMMENT +EXTERNAL HB_INIREAD +EXTERNAL HB_INIWRITE + +EXTERNAL HB_LIBLOAD +EXTERNAL HB_LIBFREE +EXTERNAL HB_LIBDO +EXTERNAL HB_LIBERROR + +EXTERNAL HB_RANDOM +EXTERNAL HB_RANDOMINT +EXTERNAL HB_RANDOMSEED + +EXTERNAL HB_BITAND +EXTERNAL HB_BITOR +EXTERNAL HB_BITXOR +EXTERNAL HB_BITNOT +EXTERNAL HB_BITSET +EXTERNAL HB_BITRESET +EXTERNAL HB_BITTEST +EXTERNAL HB_BITSHIFT + +EXTERNAL HB_ADLER32 +EXTERNAL HB_CRC +EXTERNAL HB_CRC16 +EXTERNAL HB_CRC32 +EXTERNAL HB_CRCCT +EXTERNAL HB_MD5 +EXTERNAL HB_MD5FILE + +EXTERNAL HB_GTALERT +EXTERNAL HB_GTVERSION +EXTERNAL HB_GTSYS +EXTERNAL HB_GTINFO +EXTERNAL HB_SETDISPCP +EXTERNAL HB_SETKEYCP +EXTERNAL HB_SETTERMCP +EXTERNAL HB_GFXPRIMITIVE +EXTERNAL HB_GFXTEXT + +EXTERNAL HB_GETSTDERR +EXTERNAL HB_GETSTDIN +EXTERNAL HB_GETSTDOUT + +/* Codepage support */ +EXTERNAL HB_CODEPAGE_BG866 +EXTERNAL HB_CODEPAGE_BGISO +EXTERNAL HB_CODEPAGE_BGMIK +EXTERNAL HB_CODEPAGE_BGWIN +EXTERNAL HB_CODEPAGE_CS852 +EXTERNAL HB_CODEPAGE_CSISO +EXTERNAL HB_CODEPAGE_CSKAM +EXTERNAL HB_CODEPAGE_CSWIN +EXTERNAL HB_CODEPAGE_DE +EXTERNAL HB_CODEPAGE_DEWIN +EXTERNAL HB_CODEPAGE_EL +EXTERNAL HB_CODEPAGE_ELWIN +EXTERNAL HB_CODEPAGE_ES +EXTERNAL HB_CODEPAGE_ESMWIN +EXTERNAL HB_CODEPAGE_ESWIN +EXTERNAL HB_CODEPAGE_FR +EXTERNAL HB_CODEPAGE_HR1250 +EXTERNAL HB_CODEPAGE_HR437 +EXTERNAL HB_CODEPAGE_HR852 +EXTERNAL HB_CODEPAGE_HU852 +EXTERNAL HB_CODEPAGE_HU852S +EXTERNAL HB_CODEPAGE_HUISO +EXTERNAL HB_CODEPAGE_HUISOS +EXTERNAL HB_CODEPAGE_HUWIN +EXTERNAL HB_CODEPAGE_HUWINS +EXTERNAL HB_CODEPAGE_IT437 +EXTERNAL HB_CODEPAGE_IT850 +EXTERNAL HB_CODEPAGE_ITISB +EXTERNAL HB_CODEPAGE_ITISO +EXTERNAL HB_CODEPAGE_LT +EXTERNAL HB_CODEPAGE_PL852 +EXTERNAL HB_CODEPAGE_PLISO +EXTERNAL HB_CODEPAGE_PLMAZ +EXTERNAL HB_CODEPAGE_PLWIN +EXTERNAL HB_CODEPAGE_PT850 +EXTERNAL HB_CODEPAGE_PTISO +EXTERNAL HB_CODEPAGE_RU1251 +EXTERNAL HB_CODEPAGE_RU866 +EXTERNAL HB_CODEPAGE_RUKOI8 +EXTERNAL HB_CODEPAGE_SK852 +EXTERNAL HB_CODEPAGE_SKISO +EXTERNAL HB_CODEPAGE_SKKAM +EXTERNAL HB_CODEPAGE_SKWIN +EXTERNAL HB_CODEPAGE_SL437 +EXTERNAL HB_CODEPAGE_SL852 +EXTERNAL HB_CODEPAGE_SLISO +EXTERNAL HB_CODEPAGE_SLWIN +EXTERNAL HB_CODEPAGE_SRWIN +EXTERNAL HB_CODEPAGE_SV850 +EXTERNAL HB_CODEPAGE_SVCLIP +EXTERNAL HB_CODEPAGE_SVWIN +EXTERNAL HB_CODEPAGE_TR857 +EXTERNAL HB_CODEPAGE_TRWIN +EXTERNAL HB_CODEPAGE_UA1251 +EXTERNAL HB_CODEPAGE_UA866 +EXTERNAL HB_CODEPAGE_UAKOI8 + +/* lang support */ +EXTERNAL HB_LANG_BG866 +EXTERNAL HB_LANG_BGISO +EXTERNAL HB_LANG_BGWIN +EXTERNAL HB_LANG_CA +EXTERNAL HB_LANG_CS852 +EXTERNAL HB_LANG_CSISO +EXTERNAL HB_LANG_CSKAM +EXTERNAL HB_LANG_CSWIN +EXTERNAL HB_LANG_DE +EXTERNAL HB_LANG_DEWIN +EXTERNAL HB_LANG_EL +EXTERNAL HB_LANG_ELWIN +EXTERNAL HB_LANG_EN +EXTERNAL HB_LANG_EO +EXTERNAL HB_LANG_ES +EXTERNAL HB_LANG_ESWIN +EXTERNAL HB_LANG_EU +EXTERNAL HB_LANG_FR +EXTERNAL HB_LANG_GL +EXTERNAL HB_LANG_HE862 +EXTERNAL HB_LANG_HEWIN +EXTERNAL HB_LANG_HR852 +EXTERNAL HB_LANG_HRISO +EXTERNAL HB_LANG_HU852 +EXTERNAL HB_LANG_HUCWI +EXTERNAL HB_LANG_HUISO +EXTERNAL HB_LANG_HUWIN +EXTERNAL HB_LANG_ID +EXTERNAL HB_LANG_IS850 +EXTERNAL HB_LANG_IT +EXTERNAL HB_LANG_KO +EXTERNAL HB_LANG_NL +EXTERNAL HB_LANG_PL852 +EXTERNAL HB_LANG_PLISO +EXTERNAL HB_LANG_PLMAZ +EXTERNAL HB_LANG_PLWIN +EXTERNAL HB_LANG_PT +EXTERNAL HB_LANG_RO +EXTERNAL HB_LANG_RU866 +EXTERNAL HB_LANG_RUKOI8 +EXTERNAL HB_LANG_RUWIN +EXTERNAL HB_LANG_SL437 +EXTERNAL HB_LANG_SL852 +EXTERNAL HB_LANG_SLISO +EXTERNAL HB_LANG_SLWIN +EXTERNAL HB_LANG_SR852 +EXTERNAL HB_LANG_SRISO +EXTERNAL HB_LANG_SRWIN +EXTERNAL HB_LANG_TR857 +EXTERNAL HB_LANG_TRWIN +EXTERNAL HB_LANG_ZHB5 +EXTERNAL HB_LANG_ZHGB EXTERNAL HB_ANSITOOEM EXTERNAL HB_CLRAREA @@ -1125,7 +1113,16 @@ EXTERNAL HB_INETCRLF EXTERNAL HB_INETISSOCKET #endif /* __PLATFORM__DOS */ -#endif /* HB_EXTENSION */ +EXTERNAL HBCLASS +EXTERNAL HBOBJECT +EXTERNAL HBSCALAR +EXTERNAL HBARRAY +EXTERNAL HBBLOCK +EXTERNAL HBCHARACTER +EXTERNAL HBDATE +EXTERNAL HBLOGICAL +EXTERNAL HBNIL +EXTERNAL HBNUMERIC /* FlagShip extension */ diff --git a/harbour/source/compiler/hbfunchk.c b/harbour/source/compiler/hbfunchk.c index 39193644c5..0f6cb7078f 100644 --- a/harbour/source/compiler/hbfunchk.c +++ b/harbour/source/compiler/hbfunchk.c @@ -47,10 +47,10 @@ static HB_FUNCINFO hb_StdFunc[] = { "AADD" , 2, 2 }, { "ABS" , 1, 1 }, { "ASC" , 1, 1 }, -#if defined( HB_C52_STRICT ) - { "AT" , 2, 2 }, -#else +#if defined( HB_EXTENSION ) { "AT" , 2, 4 }, +#else + { "AT" , 2, 2 }, #endif { "BOF" , 0, 0 }, { "BREAK" , 0, 1 }, @@ -72,9 +72,7 @@ static HB_FUNCINFO hb_StdFunc[] = { "EXP" , 1, 1 }, { "FCOUNT" , 0, 0 }, { "FIELDNAME" , 1, 1 }, -#if !defined( HB_C52_STRICT ) { "FILE" , 1, 1 }, -#endif { "FLOCK" , 0, 0 }, { "FOUND" , 0, 0 }, { "INKEY" , 0, 2 }, @@ -99,7 +97,11 @@ static HB_FUNCINFO hb_StdFunc[] = { "RLOCK" , 0, 0 }, { "ROUND" , 2, 2 }, { "ROW" , 0, 0 }, +#if defined( HB_EXTENSION ) { "RTRIM" , 1, 2 }, /* Second parameter is a Harbour extension */ +#else + { "RTRIM" , 1, 1 }, +#endif { "SECONDS" , 0, 0 }, { "SELECT" , 0, 1 }, { "SETPOS" , 2, 2 }, @@ -110,7 +112,11 @@ static HB_FUNCINFO hb_StdFunc[] = { "SUBSTR" , 2, 3 }, { "TIME" , 0, 0 }, { "TRANSFORM" , 2, 2 }, +#if defined( HB_EXTENSION ) { "TRIM" , 1, 2 }, /* Second parameter is a Harbour extension */ +#else + { "TRIM" , 1, 1 }, +#endif { "TYPE" , 1, 1 }, { "UPPER" , 1, 1 }, { "VAL" , 1, 1 }, diff --git a/harbour/source/rdd/dbcmd.c b/harbour/source/rdd/dbcmd.c index 22ad9aaed7..5d3b9f9125 100644 --- a/harbour/source/rdd/dbcmd.c +++ b/harbour/source/rdd/dbcmd.c @@ -884,6 +884,47 @@ HB_FUNC( FCOUNT ) hb_retni( uiFields ); } +HB_FUNC( FIELDGET ) +{ + PHB_ITEM pItem = hb_itemNew( NULL ); + AREAP pArea = ( AREAP ) hb_rddGetCurrentWorkAreaPointer(); + USHORT uiField = hb_parni( 1 ); + + if( pArea && uiField ) + { + SELF_GETVALUE( pArea, uiField, pItem ); + } + + hb_itemReturnForward( pItem ); + hb_itemRelease( pItem ); +} + +#ifdef HB_EXTENSION + +HB_FUNC( FIELDLEN ) +{ + AREAP pArea = ( AREAP ) hb_rddGetCurrentWorkAreaPointer(); + + if( pArea ) + { + USHORT uiIndex; + if( ( uiIndex = hb_parni( 1 ) ) > 0 ) + { + PHB_ITEM pItem = hb_itemNew( NULL ); + + if( SELF_FIELDINFO( pArea, uiIndex, DBS_LEN, pItem ) == SUCCESS ) + { + hb_itemReturnForward( pItem ); + hb_itemRelease( pItem ); + return; + } + hb_itemRelease( pItem ); + } + } + + hb_retni(0); +} + HB_FUNC( FIELDDEC ) { AREAP pArea = ( AREAP ) hb_rddGetCurrentWorkAreaPointer(); @@ -909,33 +950,19 @@ HB_FUNC( FIELDDEC ) hb_retni(0); } -HB_FUNC( FIELDGET ) -{ - PHB_ITEM pItem = hb_itemNew( NULL ); - AREAP pArea = ( AREAP ) hb_rddGetCurrentWorkAreaPointer(); - USHORT uiField = hb_parni( 1 ); - - if( pArea && uiField ) - { - SELF_GETVALUE( pArea, uiField, pItem ); - } - - hb_itemReturnForward( pItem ); - hb_itemRelease( pItem ); -} - -HB_FUNC( FIELDLEN ) +HB_FUNC( FIELDTYPE ) { AREAP pArea = ( AREAP ) hb_rddGetCurrentWorkAreaPointer(); if( pArea ) { USHORT uiIndex; + if( ( uiIndex = hb_parni( 1 ) ) > 0 ) { PHB_ITEM pItem = hb_itemNew( NULL ); - if( SELF_FIELDINFO( pArea, uiIndex, DBS_LEN, pItem ) == SUCCESS ) + if( SELF_FIELDINFO( pArea, uiIndex, DBS_TYPE, pItem ) == SUCCESS ) { hb_itemReturnForward( pItem ); hb_itemRelease( pItem ); @@ -945,9 +972,11 @@ HB_FUNC( FIELDLEN ) } } - hb_retni(0); + hb_retc( NULL ); } +#endif + HB_FUNC( FIELDNAME ) { char * szName; @@ -1004,31 +1033,6 @@ HB_FUNC( FIELDPUT ) } } -HB_FUNC( FIELDTYPE ) -{ - AREAP pArea = ( AREAP ) hb_rddGetCurrentWorkAreaPointer(); - - if( pArea ) - { - USHORT uiIndex; - - if( ( uiIndex = hb_parni( 1 ) ) > 0 ) - { - PHB_ITEM pItem = hb_itemNew( NULL ); - - if( SELF_FIELDINFO( pArea, uiIndex, DBS_TYPE, pItem ) == SUCCESS ) - { - hb_itemReturnForward( pItem ); - hb_itemRelease( pItem ); - return; - } - hb_itemRelease( pItem ); - } - } - - hb_retc( NULL ); -} - HB_FUNC( FLOCK ) { AREAP pArea = ( AREAP ) hb_rddGetCurrentWorkAreaPointer(); @@ -2489,6 +2493,8 @@ HB_FUNC( DBFILEPUT ) } #endif +#ifdef HB_EXTENSION + /*******************************************/ /* here we have the NEW RDD level functions DBDROP, DBEXISTS, RDDINFO */ HB_FUNC( DBDROP ) @@ -2571,6 +2577,8 @@ HB_FUNC( RDDINFO ) } } +#endif + /* __dbTrans( nDstArea, aFieldsStru, bFor, bWhile, nNext, nRecord, lRest ) */ HB_FUNC( __DBTRANS ) { diff --git a/harbour/source/rtl/alert.prg b/harbour/source/rtl/alert.prg index 9f8c14e1e1..27faf406e4 100644 --- a/harbour/source/rtl/alert.prg +++ b/harbour/source/rtl/alert.prg @@ -34,8 +34,7 @@ /* NOTE: Clipper will return NIL if the first parameter is not a string, but this is not documented. This implementation converts the first parameter to a string if another type was passed. You can switch back - to Clipper compatible mode by defining constant - HB_C52_STRICT. [vszakats] */ + to Clipper compatible mode by undefining constant HB_EXTENSION. [vszakats] */ /* NOTE: Clipper handles these buttons { "Ok", "", "Cancel" } in a buggy way. This is fixed. [vszakats] */ @@ -62,15 +61,7 @@ FUNCTION Alert( xMessage, aOptions, cColorNorm, nDelay ) #endif -#ifdef HB_C52_STRICT - - IF !ISCHARACTER( xMessage ) - RETURN NIL - ENDIF - - cMessage := StrTran( xMessage, ";", Chr( 10 ) ) - -#else +#ifdef HB_EXTENSION IF PCount() == 0 RETURN NIL @@ -83,7 +74,7 @@ FUNCTION Alert( xMessage, aOptions, cColorNorm, nDelay ) lFirst := .T. FOR nEval := 1 TO Len( xMessage ) IF ISCHARACTER( cLine := xMessage[ nEval ] ) - cMessage += IIF( lFirst, "", Chr( 10 ) ) + cLine + cMessage += iif( lFirst, "", Chr( 10 ) ) + cLine lFirst := .F. ENDIF NEXT @@ -103,6 +94,14 @@ FUNCTION Alert( xMessage, aOptions, cColorNorm, nDelay ) ENDIF +#else + + IF !ISCHARACTER( xMessage ) + RETURN NIL + ENDIF + + cMessage := StrTran( xMessage, ";", Chr( 10 ) ) + #endif IF !ISARRAY( aOptions ) @@ -133,11 +132,11 @@ FUNCTION Alert( xMessage, aOptions, cColorNorm, nDelay ) #ifdef HB_C52_STRICT /* NOTE: Clipper allows only four options [vszakats] */ ELSEIF Len( aOptionsOK ) > 4 - aSize( aOptionsOK, 4 ) + ASize( aOptionsOK, 4 ) #endif ENDIF - RETURN HB_gtAlert( cMessage, aOptionsOK, cColorNorm, cColorHigh, nDelay ); + RETURN hb_gtAlert( cMessage, aOptionsOK, cColorNorm, cColorHigh, nDelay ); #ifdef HB_C52_UNDOC @@ -148,4 +147,3 @@ PROCEDURE __NONOALERT() RETURN #endif - diff --git a/harbour/source/rtl/at.c b/harbour/source/rtl/at.c index 86e0b4dfb9..32ecd22a50 100644 --- a/harbour/source/rtl/at.c +++ b/harbour/source/rtl/at.c @@ -56,23 +56,7 @@ /* locates a substring in a string */ -#if defined( HB_C52_STRICT ) - -HB_FUNC( AT ) -{ - PHB_ITEM pSub = hb_param( 1, HB_IT_STRING ); - PHB_ITEM pText = hb_param( 2, HB_IT_STRING ); - - if( pText && pSub ) - { - hb_retnl( hb_strAt( hb_itemGetCPtr( pSub ), hb_itemGetCLen( pSub ), - hb_itemGetCPtr( pText ), hb_itemGetCLen( pText ) ) ); - } - else - hb_errRT_BASE_SubstR( EG_ARG, 1108, NULL, "AT", HB_ERR_ARGS_BASEPARAMS ); -} - -#else +#if defined( HB_EXTENSION ) HB_FUNC( AT ) { @@ -103,4 +87,20 @@ HB_FUNC( AT ) hb_errRT_BASE_SubstR( EG_ARG, 1108, NULL, "AT", HB_ERR_ARGS_BASEPARAMS ); } +#else + +HB_FUNC( AT ) +{ + PHB_ITEM pSub = hb_param( 1, HB_IT_STRING ); + PHB_ITEM pText = hb_param( 2, HB_IT_STRING ); + + if( pText && pSub ) + { + hb_retnl( hb_strAt( hb_itemGetCPtr( pSub ), hb_itemGetCLen( pSub ), + hb_itemGetCPtr( pText ), hb_itemGetCLen( pText ) ) ); + } + else + hb_errRT_BASE_SubstR( EG_ARG, 1108, NULL, "AT", HB_ERR_ARGS_BASEPARAMS ); +} + #endif diff --git a/harbour/source/rtl/disksphb.c b/harbour/source/rtl/disksphb.c index bb345e6db0..b1835f91ac 100644 --- a/harbour/source/rtl/disksphb.c +++ b/harbour/source/rtl/disksphb.c @@ -66,8 +66,6 @@ #include #endif -#ifdef HB_EXTENSION - HB_FUNC( HB_DISKSPACE ) { char szPathBuf[ 4 ]; @@ -374,5 +372,3 @@ HB_FUNC( HB_DISKSPACE ) hb_retnlen( dSpace, -1, 0 ); } - -#endif diff --git a/harbour/source/rtl/fssize.c b/harbour/source/rtl/fssize.c index bbf4797e53..b731e9583c 100644 --- a/harbour/source/rtl/fssize.c +++ b/harbour/source/rtl/fssize.c @@ -100,12 +100,8 @@ HB_FOFFSET hb_fsFSize( BYTE * pszFileName, BOOL bUseDirEntry ) return 0; } -#ifdef HB_EXTENSION - HB_FUNC( HB_FSIZE ) { hb_retnint( ISCHAR( 1 ) ? hb_fsFSize( ( BYTE * ) hb_parc( 1 ), ISLOG( 2 ) ? hb_parl( 2 ) : TRUE ) : 0 ); } - -#endif diff --git a/harbour/source/rtl/fstemp.c b/harbour/source/rtl/fstemp.c index 12bf37678b..93b8becde1 100644 --- a/harbour/source/rtl/fstemp.c +++ b/harbour/source/rtl/fstemp.c @@ -243,8 +243,6 @@ HB_EXPORT FHANDLE hb_fsCreateTemp( const BYTE * pszDir, const BYTE * pszPrefix, #endif -#ifdef HB_EXTENSION - HB_FUNC( HB_FTEMPCREATE ) { BYTE szName[ _POSIX_PATH_MAX + 1 ]; @@ -256,5 +254,3 @@ HB_FUNC( HB_FTEMPCREATE ) hb_storc( ( char *) szName, 4 ); } - -#endif diff --git a/harbour/source/rtl/gete.c b/harbour/source/rtl/gete.c index b3dba80549..c5bfe32b02 100644 --- a/harbour/source/rtl/gete.c +++ b/harbour/source/rtl/gete.c @@ -107,7 +107,11 @@ HB_FUNC( GETENV ) { if( szValue ) hb_xfree( szValue ); +#ifdef HB_EXTENSION hb_retc( hb_parc( 2 ) ); +#else + hb_retc( NULL ); +#endif } } else diff --git a/harbour/source/rtl/gui.prg b/harbour/source/rtl/gui.prg index 1aff65e777..b539c6932f 100644 --- a/harbour/source/rtl/gui.prg +++ b/harbour/source/rtl/gui.prg @@ -67,6 +67,10 @@ FUNCTION _SetVideoMode( nMode ) RETURN 0 +/* NOTE: Original _GetNumCol() will not recognize colors written + in lowercase. We're replicating this behaviour in this + compatibility function. [vszakats] */ + FUNCTION _GetNumCol( cColor ) LOCAL nPos @@ -76,9 +80,6 @@ FUNCTION _GetNumCol( cColor ) IF ( nPos := At( ",", cColor ) ) > 0 cColor := Left( cColor, nPos - 1 ) ENDIF - #ifndef HB_C52_STRICT - cColor := Upper( cColor ) - #endif RETURN AScan( { "B", "G", "BG", "R", "RB", "GR", "W", "N+", "B+", "G+", "BG+", "R+", "RB+", "GR+", "W+" }, {| tmp | tmp == cColor } ) diff --git a/harbour/source/rtl/inkey.c b/harbour/source/rtl/inkey.c index 001a6032c0..253912ad1e 100644 --- a/harbour/source/rtl/inkey.c +++ b/harbour/source/rtl/inkey.c @@ -570,26 +570,8 @@ HB_FUNC( __KEYBOARD ) s_StrBufferPos = 0; } } -#if defined( HB_EXTENSION ) - else if( ISNUM( 1 ) ) - { - hb_inkeyPut( hb_parni(1) ); - } - else if( ISARRAY( 1 ) ) - { - PHB_ITEM pArray = hb_param( 1, HB_IT_ARRAY ); - ULONG ulElements = hb_arrayLen( pArray ), ulIndex; - - for( ulIndex = 1; ulIndex <= ulElements; ulIndex++ ) - { - if( hb_arrayGetType( pArray, ulIndex ) & HB_IT_NUMERIC ) - hb_inkeyPut( hb_arrayGetNI( pArray, ulIndex ) ); - } - } -#endif } -#ifdef HB_EXTENSION HB_FUNC( HB_KEYPUT ) { if( ISNUM( 1 ) ) @@ -615,7 +597,6 @@ HB_FUNC( HB_KEYPUT ) } } } -#endif HB_FUNC( NEXTKEY ) { diff --git a/harbour/source/rtl/isprint.c b/harbour/source/rtl/isprint.c index c538388563..a3e79ced7f 100644 --- a/harbour/source/rtl/isprint.c +++ b/harbour/source/rtl/isprint.c @@ -124,19 +124,6 @@ HB_EXPORT BOOL hb_printerIsReady( char * pszPrinterName ) bIsPrinter = FALSE; } -#elif defined(HB_WIN_32_PRINTERS) - - { - HANDLE hPrinter; - - bIsPrinter = FALSE; - if( *pszPrinterName && OpenPrinter( pszPrinterName, &hPrinter, NULL ) ) - { - bIsPrinter = ! IsPrinterError( hPrinter ); - CloseHandle( hPrinter ); - } - } - #else /* NOTE: Platform independent method, at least it will compile and run @@ -172,10 +159,25 @@ HB_FUNC( ISPRINTER ) HB_FUNC( HB_ISPRINTER ) { #if defined(HB_WIN_32_PRINTERS) + + /* NOTE: This Win32 specific bitmap printer support would have to + go somewhere else. [vszakats] */ + char DefaultPrinter[MAXBUFFERSIZE]; DWORD pdwBufferSize = MAXBUFFERSIZE; + HANDLE hPrinter; + char * pszPrinterName; DPGetDefaultPrinter( ( LPTSTR ) &DefaultPrinter, &pdwBufferSize ); - hb_retl( hb_printerIsReady( ISCHAR( 1 ) ? hb_parc( 1 ) : ( char * ) DefaultPrinter ) ); + pszPrinterName = ISCHAR( 1 ) ? hb_parc( 1 ) : ( char * ) DefaultPrinter; + + if( *pszPrinterName && OpenPrinter( pszPrinterName, &hPrinter, NULL ) ) + { + hb_retl( ! IsPrinterError( hPrinter ) ); + CloseHandle( hPrinter ); + } + else + hb_retl( FALSE ); + #else char * pszPrinter = hb_parc( 1 ); hb_retl( hb_printerIsReady( pszPrinter ? pszPrinter : ( char * ) "LPT1" ) ); diff --git a/harbour/source/rtl/mlcfunc.c b/harbour/source/rtl/mlcfunc.c index abe1774e31..db9f2f4404 100644 --- a/harbour/source/rtl/mlcfunc.c +++ b/harbour/source/rtl/mlcfunc.c @@ -149,7 +149,7 @@ static PHB_EOL_INFO hb_mlGetEOLs( int iParam, int * piEOLs ) int iEOLs = 0; char * szEOL; -#ifndef HB_C52_STRICT +#ifdef HB_EXTENSION ULONG ulLen, ul; szEOL = hb_parc( iParam ); diff --git a/harbour/source/rtl/oemansi.c b/harbour/source/rtl/oemansi.c index 07ca879e19..11d6caaf31 100644 --- a/harbour/source/rtl/oemansi.c +++ b/harbour/source/rtl/oemansi.c @@ -58,8 +58,6 @@ #include "hbapi.h" #include "hbapiitm.h" -#ifdef HB_EXTENSION - HB_FUNC( HB_ANSITOOEM ) { PHB_ITEM pString = hb_param( 1, HB_IT_STRING ); @@ -102,8 +100,6 @@ HB_FUNC( HB_OEMTOANSI ) hb_retc( NULL ); } -#endif - #ifdef HB_COMPAT_XPP /* NOTE: Xbase++ compatible function */ diff --git a/harbour/source/rtl/philes.c b/harbour/source/rtl/philes.c index b796898aa0..52328f7e62 100644 --- a/harbour/source/rtl/philes.c +++ b/harbour/source/rtl/philes.c @@ -87,8 +87,6 @@ HB_FUNC( FCREATE ) } } -#ifdef HB_EXTENSION - HB_FUNC( HB_FCREATE ) { if( ISCHAR( 1 ) ) @@ -105,8 +103,6 @@ HB_FUNC( HB_FCREATE ) } } -#endif - HB_FUNC( FREAD ) { PHB_ITEM pBuffer = hb_param( 2, HB_IT_STRING ); @@ -269,8 +265,6 @@ HB_FUNC( CURDIR ) hb_retc( ( char * ) byBuffer ); } -#ifdef HB_EXTENSION - HB_FUNC( HB_FEOF ) { USHORT uiError = 6; @@ -329,5 +323,3 @@ HB_FUNC( HB_OSDRIVESEPARATOR ) hb_retc( NULL ); #endif } - -#endif diff --git a/harbour/source/rtl/setcolor.c b/harbour/source/rtl/setcolor.c index aead353923..3d1f9f2b04 100644 --- a/harbour/source/rtl/setcolor.c +++ b/harbour/source/rtl/setcolor.c @@ -89,8 +89,6 @@ HB_FUNC( SETBLINK ) hb_retl( bPreviousBlink ); } -#ifdef HB_EXTENSION - HB_FUNC( HB_COLORTON ) { if( ISCHAR( 1 ) ) @@ -115,5 +113,3 @@ HB_FUNC( HB_NTOCOLOR ) else hb_retc( "N/N" ); } - -#endif diff --git a/harbour/source/rtl/setfunc.prg b/harbour/source/rtl/setfunc.prg index ca466bffbd..db41ee81af 100644 --- a/harbour/source/rtl/setfunc.prg +++ b/harbour/source/rtl/setfunc.prg @@ -72,7 +72,7 @@ PROCEDURE __SetFunction( nFunctionKey, xKeySeq ) #else IF ISCHARACTER( xKeySeq ) #endif - SetKey( nFunctionKey, {|| __Keyboard( xKeySeq ) } ) + SetKey( nFunctionKey, {|| __Keyboard(), hb_KeyPut( xKeySeq ) } ) ELSE SetKey( nFunctionKey, NIL ) ENDIF diff --git a/harbour/source/rtl/setkey.c b/harbour/source/rtl/setkey.c index 42fbf81457..6ffe26939b 100644 --- a/harbour/source/rtl/setkey.c +++ b/harbour/source/rtl/setkey.c @@ -216,8 +216,6 @@ HB_FUNC( SETKEY ) } } -#if defined( HB_EXTENSION ) - /* Sets the same block for an array of keycodes */ HB_FUNC( HB_SETKEYARRAY ) @@ -344,5 +342,3 @@ HB_FUNC( HB_SETKEYCHECK ) hb_retl( bIsKeySet ); } - -#endif diff --git a/harbour/source/rtl/shadow.c b/harbour/source/rtl/shadow.c index 678e515000..27edf07473 100644 --- a/harbour/source/rtl/shadow.c +++ b/harbour/source/rtl/shadow.c @@ -53,8 +53,6 @@ #include "hbapi.h" #include "hbapigt.h" -#ifdef HB_EXTENSION - HB_FUNC( HB_SHADOW ) { if( hb_pcount() >= 4 ) @@ -75,8 +73,6 @@ HB_FUNC( HB_CLRAREA ) hb_parni( 5 ) ); } -#endif - #ifdef HB_C52_UNDOC HB_FUNC( DBGSHADOW ) diff --git a/harbour/source/rtl/tgetlist.prg b/harbour/source/rtl/tgetlist.prg index d7c43b4edf..3c1473baae 100644 --- a/harbour/source/rtl/tgetlist.prg +++ b/harbour/source/rtl/tgetlist.prg @@ -1238,7 +1238,7 @@ METHOD TBApplyKey( oGet, oTB, nKey, oMenu, aMsg ) CLASS HBGetList oGet:ExitState := GE_UP CASE nKey == K_ENTER -#ifdef HB_EXTENSION +#ifndef HB_C52_STRICT IF !oTb:Stable() oTb:ForceStable() ENDIF diff --git a/harbour/source/rtl/trace.c b/harbour/source/rtl/trace.c index e1e85bb3b7..66a98d0bb6 100644 --- a/harbour/source/rtl/trace.c +++ b/harbour/source/rtl/trace.c @@ -53,8 +53,6 @@ #include "hbapi.h" #include "hbtrace.h" -#ifdef HB_EXTENSION - HB_FUNC( HB_TRACESTATE ) { hb_retni( hb_tracestate( ISNUM( 1 ) ? hb_parni( 1 ) : -1 ) ); @@ -73,5 +71,3 @@ HB_FUNC( HB_TRACESTRING ) HB_TRACE(HB_TR_ALWAYS, (szMessage) ); } } - -#endif diff --git a/harbour/source/rtl/valtostr.c b/harbour/source/rtl/valtostr.c index 202e2d0415..352f430be3 100644 --- a/harbour/source/rtl/valtostr.c +++ b/harbour/source/rtl/valtostr.c @@ -53,8 +53,6 @@ #include "hbapi.h" #include "hbapiitm.h" -#ifdef HB_EXTENSION - HB_FUNC( HB_VALTOSTR ) { ULONG ulLen; @@ -149,6 +147,3 @@ HB_FUNC( HB_STRTOEXP ) hb_retclen_buffer( pszResult, ulRet ); } } - -#endif - diff --git a/harbour/source/vm/dynsym.c b/harbour/source/vm/dynsym.c index 767d079a23..fc2978c73c 100644 --- a/harbour/source/vm/dynsym.c +++ b/harbour/source/vm/dynsym.c @@ -485,8 +485,6 @@ void hb_dynsymRelease( void ) } } -#ifdef HB_EXTENSION - HB_FUNC( __DYNSCOUNT ) /* How much symbols do we have: dsCount = __dynsymCount() */ { hb_retnl( ( long ) s_uiDynSymbols ); @@ -553,8 +551,6 @@ HB_FUNC( __DYNSGETPRF ) /* profiler: It returns an array with a function or proc #endif } -#endif - HB_FUNC( __DYNSN2PTR ) { char * szName = hb_parc( 1 ); diff --git a/harbour/source/vm/memvars.c b/harbour/source/vm/memvars.c index b79918201e..5ecc24e009 100644 --- a/harbour/source/vm/memvars.c +++ b/harbour/source/vm/memvars.c @@ -1435,7 +1435,11 @@ HB_FUNC( __MVRESTORE ) { /* Clipper checks for the number of arguments here here, but we cannot in Harbour since we have two optional parameters as an extension. */ +#ifdef HB_EXTENSION if( ISCHAR( 1 ) && ISLOG( 2 ) ) +#else + if( hb_pcount() == 2 && ISCHAR( 1 ) && ISLOG( 2 ) ) +#endif { PHB_FNAME pFileName; char szFileName[ _POSIX_PATH_MAX + 1 ]; @@ -1478,8 +1482,13 @@ HB_FUNC( __MVRESTORE ) BYTE buffer[ HB_MEM_REC_LEN ]; char * pszMask; +#ifdef HB_EXTENSION pszMask = hb_memvarGetMask( 3 ); bIncludeMask = !ISLOG( 4 ) || hb_parl( 4 ); +#else + pszMask = "*"; + bIncludeMask = TRUE; +#endif while( hb_fsRead( fhnd, buffer, HB_MEM_REC_LEN ) == HB_MEM_REC_LEN ) { diff --git a/harbour/source/vm/proc.c b/harbour/source/vm/proc.c index c29c21e9e7..18cc37193b 100644 --- a/harbour/source/vm/proc.c +++ b/harbour/source/vm/proc.c @@ -73,8 +73,6 @@ #include "hbstack.h" #include "hbvm.h" -#ifdef HB_EXTENSION - HB_FUNC( HB_METHODNAME ) { char szName[ HB_SYMBOL_NAME_LEN + HB_SYMBOL_NAME_LEN + 5 ]; @@ -82,8 +80,6 @@ HB_FUNC( HB_METHODNAME ) hb_retc( hb_procname( hb_parni( 1 ) + 1, szName, TRUE ) ); } -#endif - HB_FUNC( PROCNAME ) { char szName[ HB_SYMBOL_NAME_LEN + HB_SYMBOL_NAME_LEN + 5 ]; @@ -108,6 +104,7 @@ HB_FUNC( PROCLINE ) HB_FUNC( PROCFILE ) { +#ifdef HB_EXTENSION PHB_SYMB pSym = NULL; if( ISSYMBOL( 1 ) ) @@ -140,6 +137,9 @@ HB_FUNC( PROCFILE ) } hb_retc( hb_vmFindModuleSymbolName( hb_vmGetRealFuncSym( pSym ) ) ); +#else + hb_retc( NULL ); +#endif } #endif