Commit Graph

207 Commits

Author SHA1 Message Date
Przemyslaw Czerpak
3d4a97040b 2008-07-17 18:19 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/contrib/hbw32/dllcall.c
    * minor cleanup in return values

  * harbour/contrib/hbole/ole2.c
    * cleaned casting in UNICODE conversions

  * harbour/source/common/expropt2.c
    * replicate CA-Cl*pper compile time optimization bugs:
         "" $ <literString>         => .T.
         AT( "", <literString> )    => 1
         CHR( 256 )                 => ""
      only when Harbour extensions (-kh) are not enabled, f.e.
      in strict Clipper compatibility mode (-kc)

  * harbour/utils/hbtest/rt_hvma.prg
  * harbour/utils/hbtest/rt_str.prg
    * updated to test Clipper and Harbour compile time modes in
      the above situations

  * harbour/common.mak
  * harbour/source/rtl/Makefile
  - harbour/source/rtl/strings.c
  * harbour/source/common/hbstr.c
    * moved hb_strEmpty() from RTL to COMMON library

  * harbour/include/hbexprb.c
  * harbour/include/hbexprop.h
  * harbour/source/common/expropt2.c
    + added compile time optimization for EMPTY() function
    ; removed 'TODO: empty optimization' note

  * harbour/source/rtl/itemseri.c
    % compress trailing spaces during string item serialization

  * harbour/include/hbapi.h
  * harbour/source/vm/hashes.c
    + added hb_hashAddNew() - works like hb_hashAdd() but it adds item
      only if new key is used

  * harbour/source/vm/hvm.c
    * use hb_hashAddNew() instead of hb_hashAdd() for HB_P_HASHGEN
      I cannot revert the order of hash item during compilation because
      it will also change the order of user expression evaluation.
2008-07-17 16:28:11 +00:00
Viktor Szakats
b1118f3481 2008-06-30 11:16 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* include/hbapi.h
   * source/rtl/set.c
   * source/vm/fm.c
     ! Fixed _SET_HBOUTLOG, _SET_HBOUTLOGINFO handling in fm.c.
       hb_setget*() functions cannot be used here as the set 
       system is deinited at this point. So local buffers are 
       holding the values.
2008-06-30 09:28:58 +00:00
Viktor Szakats
e708033e0e 2008-06-13 19:19 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* source/rtl/gtwvt/gtwvt.h
   * source/rtl/gtwvt/gtwvt.c
   * tests/wvtext.prg
     + Added hb_gtInfo( HB_GTI_SELECTCOPY, <cMenuText> )
       to set the menu text ("Mark and Copy" on startup).
       cMenuText mustn't be zero length. Setting the menu text 
       also enables select&copy automatically. The call 
       will return the previously set menu text. To get 
       the menu text without setting a new one, use: 
       hb_gtInfo( HB_GTI_SELECTCOPY, "" )
       This is good if someone wants to adapt the menu 
       text to the OS's or app's language.

   * doc/en/hb_apiit.txt
   * include/hbapi.h
   * include/hbapiitm.h
   * source/rtl/gtwin/gtwin.c
   * source/rtl/hbgtcore.c
   * source/rtl/gtgui/gtgui.c
   * source/rtl/gtwvt/gtwvt.c
   * source/vm/macro.c
   * source/vm/debug.c
   * source/vm/itemapi.c
   * source/vm/hvm.c
   * source/vm/arrays.c
   * source/vm/extend.c
   * source/rdd/dbfntx/dbfntx1.c
   * source/rdd/sdf1.c
   * source/rdd/dbfcdx/dbfcdx1.c
   * source/rdd/delim1.c
   * source/rdd/dbf1.c
   * source/rdd/dbffpt/dbffpt1.c
   * contrib/hbw32/w32_ole.c
   * contrib/gtwvg/gtwvg.c
   * contrib/rddads/ads1.c
   * contrib/hbmisc/spd.c
   * contrib/hbbmcdx/bmdbfcdx1.c
   * contrib/examples/rdddbt/dbfdbt1.c
     * I did a mistake in 1999 by giving the name hb_itemPutCPtr() 
       to the function which would have to be correctly named 
       hb_itemPutCLPtr() (notice the 'L' for 'length').
       So, now this was renamed to hb_itemPutCLPtr(), and stub was 
       added with the old name, and Harbour code was changed to use 
       the new one. I've also added hb_itemPutCPtr2() as a version 
       not requiring len parameter, the proper name would be hb_itemPutCPtr() 
       for this, but we cannot use without breakin compatiblity.

       IMPORTANT: I'd strongly suggest all 3rd parties to update 
       their code to use the call hb_itemPutCLPtr() instead of 
       hb_itemPutCLPtr().

       The final goal would be to have hb_itemPutCPtr() with two 
       parameters instead of the hakish looking hb_itemPutCPtr2().

       I'd welcome any opinions how to reach this goal. I didn't want to 
       break compatiblity with 3rd parties this time, but IMO we may do 
       it in 1.1, or even before 1.0.

     ! The above also fixes the (potential) problem when hb_retc_buffer()'s 
       szText parameter was evaluated twice if HB_API_MACROS was #defined.
2008-06-13 17:26:48 +00:00
Viktor Szakats
4761f7a5af 2008-05-27 09:43 UTC+0100 Viktor Szakats (harbour.01 syenar hu)
* include/hbapi.h
   * source/vm/hvm.c
   * source/vm/cmdarg.c
     + Added support for internal switch format:
       --hb:<internal switch>
       //hb:<internal switch>
       Both are equivalent to original CA-Cl*pper:
       //<internal switch>
2008-05-27 07:46:37 +00:00
Viktor Szakats
b5d578680c 2008-05-26 12:13 UTC+0100 Viktor Szakats (harbour.01 syenar hu)
* include/hbapi.h
   * source/vm/extend.c
     + Added hb_retc_null() which is equivalent to 
       hb_retc( NULL ) and will return an empty string.
       I opted for this because hb_retc( NULL ) usage is not 
       compatible with CA-Cl*pper _retc(), so it might create 
       problems when writing C code intended for both Clipper 
       and Harbour.

   * contrib/hbclipsm/stack.c
   * contrib/hbclipsm/environ.c
   * contrib/hbclipsm/status.c
   * contrib/hbclipsm/gauge.c
     % Optimizations.
     ; TOFIX: GAUGE*() still leaks and doesn't seem to function.

   * contrib/rddads/adsmgmnt.c
     % Optimizations (using hb_arraySet*()).
     ! Fixed typo in ADSMGGETOPENTABLES2().
2008-05-26 10:15:27 +00:00
Przemyslaw Czerpak
bf68197ca0 2008-04-09 20:42 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/ChangeLog
  * harbour/harbour.spec
    * reverted translation to UTF8 - Tomaz please check your editor
      settings and disable automatic translation to UTF8. It's not
      the first as such situation happens.

  * harbour/include/hbclass.ch
    + added two missing PP directives
    ! protected against some repeated external definitions

  * harbour/source/pp/Makefile
  * harbour/source/pp/hbppgen.c
  * harbour/source/pp/ppcore.c
  * harbour/source/common/hbver.c
  * harbour/source/common/hbverdsp.c
  * harbour/source/main/harbour.c
  * harbour/source/vm/cmdarg.c
  * harbour/utils/hbpp/hbpp.c
  * harbour/include/hbpp.h
  * harbour/include/hbcomp.h
  * harbour/include/hbver.h
  * harbour/include/hbapi.h
  * harbour/make_vcce.mak
  * harbour/make_b32.mak
  * harbour/make_vc.mak
  * harbour/make_gcc.mak
    + added support for dynamically set during compilation ChangeLog entry
      ChangeLog ID and SVN revision and compilation flags
      Now hbppgen creates in include directory hbverbld.h file with
      information extracted from ChangeLog. New hbppgen parameters:
         Syntax:  ./hbppgen <file>[.prg] [options]
         Options: -i<path>       add #include file search path
                  -c[<file>]     look for ChangeLog file
                  -o<file>       creates .c file with PP rules
                  -v<file>       creates .h file with version information
                  -w             write preprocessed (.ppo) input file
                  -q             disable information messages
    + added new C functions:
         int hb_verSvnID( void )
            - retrieves ChangeLog SVN revision number
         const char * hb_verSvnChangeLogID( void )
            - retrieves a static buffer containing ChangeLog ID string
         const char * hb_verSvnLastEntry( void )
            - retrieves a static buffer containing ChangeLog last entry string
         const char * hb_verFlagsC( void )
            - retrieves a static buffer containing build time C compiler
              flags in C_USR envvar
         const char * hb_verFlagsL( void )
            - retrieves a static buffer containing build time linker
              flags in L_USR envvar
         const char * hb_verFlagsPRG( void )
            - retrieves a static buffer containing build time Harbour compiler
              flags in PRG_USR envvar
    + added new default PP defines which can be used in .prg code compiled
      by Harbour compiler: HB_VER_LENTRY, HB_VER_CHLID, HB_VER_SVNID

  * harbour/source/rtl/gtxwc/gtxwc.c
    * formatting

  * harbour/source/rtl/gttrm/gttrm.c
    ! fixed redrawing GPM mouse pointer after screen updating

  * harbour/source/rtl/gtstd/gtstd.c
  * harbour/source/rtl/gtpca/gtpca.c
    * updated for compilation even if some POSIX macros are not supported
      f.e. problems with some DJGPP versions reported recently

  * harbour/source/debug/dbgentry.c
  * harbour/source/debug/dbgtobj.prg
  * harbour/source/debug/dbgbrwsr.prg
  * harbour/source/debug/dbgthsh.prg
  * harbour/source/debug/tbrwtext.prg
  * harbour/source/debug/dbgwa.prg
  * harbour/source/debug/debugger.prg
  * harbour/source/debug/dbghelp.prg
  * harbour/source/debug/dbgtarr.prg
    ! Fixed object inspector in the debugger.
    ! Added HbDbBrowser:invalidate() message. Fixes work area browsing in debugger.
    ! Added an minimalistic TBrowse implementation that is just enough
      for internal use by the debugger. Fixes miscellaneous problems e.g.
      when debugging a piece of code with RELATIONs turned on.
    Fixes by Phil Krylov borrowed from xHarbour.
2008-04-09 18:44:03 +00:00
Przemyslaw Czerpak
117324bc6a 2008-03-25 12:26 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/common.mak
  * harbour/source/lang/Makefile
  + harbour/source/lang/msgskiso.c
  + harbour/source/lang/msgskwin.c
  + harbour/source/lang/msgskkam.c
  + harbour/source/lang/msgsk852.c
    + added Slovak national messages by Gyula Bartal - many thanks

  * harbour/include/hbapi.h
  * harbour/source/vm/arrays.c
    ! Guarded hb_arraySetNLL() declaration with #ifndef HB_LONG_LONG_OFF.
    ! Fixed trace in hb_arraySetNInt().
      By Phil Krylov borrowed from xHarbour

  * harbour/include/hbgtcore.h
    ! added missing HB_EXTERN_BEGIN / HB_EXTERN_END
      By Ron Pinkas borrowed from xHarbour

  * harbour/source/rtl/gtos2/gtos2.c
    % updated for much faster screen updating in OS2 console - many
      thanks for Maurilio Longo for tests and code.

  * harbour/source/rtl/cdpapi.c
    ! fixed CP string translation for CPs with accented equal characters
    + added HB_UTF8CHR( <nUniVal> ) -> <cUtf8Char>
      It's compatible with the function HB_UTF8CHR() by Phil Krylov in
      xHarbour

  * harbour/source/rtl/gtsln/gtsln.h
    * removed repeated #include <unistd.h>

  * harbour/contrib/hbct/files.c
    ! fixed FILESEEK() called with 3-rd parameter set to .T. (exact
      attribute match)

  * harbour/config/os2/global.cf
    ! added fixes by David Arturo Macias Corona

  + harbour/make_os2_gcc.cmd
    + added build file for GCC OS2 users with minimal environment settings
2008-03-25 11:27:04 +00:00
Przemyslaw Czerpak
cf69097383 2008-03-12 17:43 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbapi.h
  * harbour/source/common/hbver.c
  * harbour/source/rtl/gttone.c
    * added hb_iswince() and fixed TONE() for WinCE

  * harbour/source/rtl/math.c
    ! added workaround for SIGFPE platforms which generate it instead of
      setting errno during execution of math functions

  * harbour/source/rtl/gtcrs/hb-charmap.def
    ! remap 0x9b (155) to '.' in Linux terminals - it's control code

  * harbour/source/rdd/dbsql.c
  * harbour/source/rdd/workarea.c
  * harbour/source/rdd/dbf1.c
    ! always restore current workarea in WA EVAL() method
    ! always use EVAL() method for user codeblocks and macros

  * harbour/source/rdd/dbcmd.c
    ! fixed DBRELATION() called without numeric parameters or with 0 to
      return first relation expression (Clipper compatible)

  * harbour/contrib/hbtip/thtml.prg
    ! fixed wrongly ported to Harbour xHarbour specific code

  * harbour/source/common/hbstr.c
    + added missing const in one declaration
    * formatting

  * harbour/source/rtl/transfrm.c
    ! fixed casting for C++ compilers

  * harbour/source/rtl/errorapi.c
  * harbour/source/rdd/dbfntx/dbfntx1.c
    ! cleanup warnings

  * harbour/source/common/hbtrace.c
  * harbour/source/rdd/dbcmdx.c
  * harbour/source/rdd/wafunc.c
  * harbour/source/rdd/dbffpt/dbffpt1.c
  * harbour/source/rdd/hbsix/sxcrypt.c
    * formatting
2008-03-12 16:44:16 +00:00
Viktor Szakats
b5ae06cc09 2008-01-31 17:40 UTC+0100 Viktor Szakats (harbour.01 syenar.hu)
* bin/hb-func.sh
     + Updated for lib name change.
       Please test & review.

   * source/rtl/net.c
   * include/hbapi.h
     + Added hb_netname() and hb_username() low level versions 
       of NETNAME() and hb_USERNAME().
2008-01-31 16:48:02 +00:00
Mindaugas Kavaliauskas
1e7aadcf86 2007-12-06 11:35 UTC+0200 Mindaugas Kavaliauskas (dbtopas/at/dbtopas.lt)
* harbour/source/lang/msgltwin.c
    * more changes from LT to LTWIN
  * harbour/common.mak
    * restored missing msgltwin.c 
  * harbour/include/hbapi.h
  * harbour/source/vm/hashes.c
    + added hash key support for pointer type
2007-12-06 09:34:22 +00:00
Przemyslaw Czerpak
d80b5e7389 2007-11-30 19:57 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbgtcore.h
  * harbour/source/rtl/hbgtcore.c
  * harbour/source/rtl/gtalleg/gtalleg.c
  * harbour/source/rtl/gtdos/gtdos.c
  * harbour/source/rtl/gtos2/gtos2.c
  * harbour/source/rtl/gtwin/gtwin.c
  * harbour/source/rtl/gtwvt/gtwvt.c
  * harbour/source/rtl/gtgui/gtgui.c
  * harbour/source/rtl/gtxwc/gtxwc.c
  * harbour/source/rtl/gtcrs/gtcrs.c
  * harbour/source/rtl/gtsln/gtsln.c
  * harbour/source/rtl/gttrm/gttrm.c
  * harbour/source/rtl/gtstd/gtstd.c
  * harbour/source/rtl/gtpca/gtpca.c
  * harbour/source/rtl/gtcgi/gtcgi.c
  * harbour/contrib/libct/ctwin.c
  * harbour/contrib/gtwvg/gtwvt.c
    + added GT ID (int s_GtId)

  * harbour/include/hbapigt.h
  * harbour/source/rtl/gtapi.c
    + added some missing wrappers for hb_gt_* functions to avoid
      including hbgtcore.h by non GT code - such functions separation
      will be important in MT mode where each thread can operate on
      different GT context (window)

  * harbour/contrib/libct/screen2.c
  * harbour/contrib/libct/screen1.c
  * harbour/contrib/libct/ctwfunc.c
    * use hb_gt* functions instead of hb_gt_*() ones

  * harbour/include/hbapigt.h
  * harbour/source/rtl/inkey.c
    * changed hb_setInkeyLast() to hb_inkeySetLast() to keep hb_inkey*()
      prefix in all inkey() related functions
    + added hb_inkeySetText()
    - removed hb_inkeyTranslate()

  * harbour/contrib/libct/setlast.c
    * use hb_inkeySetLast() instead of hb_setInkeyLast()

  * harbour/source/rdd/usrrdd/usrrdd.c
    * removed dummy xHarbour code not usable in Harbour

  * harbour/include/hbapi.h
  * harbour/source/vm/codebloc.c
  * harbour/source/vm/hvm.c
    * added const to BYTE * pCode parameter of hb_codeblockMacroNew()
2007-11-30 18:57:51 +00:00
Viktor Szakats
6b9e24dd93 2007-11-17 03:08 UTC+0100 Viktor Szakats (harbour.01 syenar.hu)
* make_vcce.bat
   * make_vcce.mak
     ! Minor corrections (syncing with existing files).

   * doc/genhtm.bat
     ! Minor fix to make it work out of the box.
     - Some obsolete stuff removed from it.

   * include/hbapiitm.h
   * include/hbapi.h
   * source/vm/itemapi.c
     + Added hb_itemPutCLConst() which is the same as 
       hb_itemPutCConst() but the buffer length can be passed.
       Same as xhb hb_itemPutCRawStatic().

   + contrib/xhb/hbcompat.h
     + Added C level compatibility header file.

   * contrib/win32/w32_ole.c
     ! hb_itemPutCRawStatic() -> hb_itemPutCLConst()
     ! Some more xhb API calls changed to Harbour ones.
     ! TraceLog() -> HB_TRACE()
     ! HB_ITEM s_OleAuto -> PHB_ITEM s_pOleAuto
       TOFIX (new): s_pOleAuto is not freed on app exit.
     ! Fixed a few more internal accesses by using API 
       calls.
     ; NOTE: There are four more complicated problems here 
             to be solved:
             1) hb_stackSetActionRequest() call
             2) Passing direct references to HB_ITEM .value 
                members to external functions.
             3) Storing "hidden" information in string ITEMs 
                prepended after the strings' actual content.
             4) Not freeing s_pOleAuto (this var BTW is used in 
                one static function only)

   * source/rtl/hbinet.c
   * source/rdd/dbcmd.c
     ! Changed some xhb C level API calls to Harbour ones.

   * contrib/xhb/Makefile
   * contrib/freeimage/Makefile
   * contrib/apollo/Makefile
   * contrib/firebird/Makefile
   * contrib/libct/Makefile
   * contrib/telepath/Makefile
   * contrib/pgsql/Makefile
   * contrib/gd/Makefile
   * contrib/libnf/Makefile
   * contrib/tip/Makefile
   * contrib/adordd/Makefile
   * contrib/rdd_ads/Makefile
   * contrib/btree/Makefile
   * contrib/samples/Makefile
   * contrib/mysql/Makefile
   * contrib/odbc/Makefile
   * contrib/pdflib/Makefile
     ! Added C and Harbour public headers to GNU makefiles.
     ! Added one missing SVN header.

   * contrib/pdflib/pdfhbdoc.ch
   * contrib/pdflib/pdf.ch
     ! Added missing SVN headers.

   - contrib/pdflib/pdflib.h
     - Removed this file which belongs to the pdflib 
       package. This package is needed anyway to use 
       this contrib. (but the contrib is badly broken)

   * contrib/pdflib/make_b32.bat
   * contrib/pdflib/make_vc.bat
     ! Minor typo.

   * source/rtl/persist.prg
     ! Prefixed static var name with "s_"
2007-11-17 02:26:51 +00:00
Viktor Szakats
7477bf4448 2007-11-12 01:14 UTC+0100 Viktor Szakats (harbour.01 syenar.hu)
* include/hbapi.h
     + Added xhb compatibility #define for hb_storclenAdopt()
       (equivalent to Harbour's hb_storclen_buffer())

   * contrib/xhb/hbcompat.ch
     + Added xhb IsDirectory() <-> hb_DirExists() translation.
       Harbour version works using access(), while xhb version 
       does a filefind, so Harbour will return a more accurate 
       result more quickly, but it won't work with wildcards.

   * source/rtl/persist.prg
     % Using hb_StrShrink()

   * common.mak
   * utils/hbdoc/Makefile
   * utils/hbdoc/ffile1.prg
   * utils/hbdoc/genasc.prg
   * utils/hbdoc/genchm.prg
   * utils/hbdoc/genhtm.prg
   * utils/hbdoc/genng.prg
   * utils/hbdoc/genos2.prg
   * utils/hbdoc/genpdf1.prg
   * utils/hbdoc/genrtf.prg
   * utils/hbdoc/gentrf.prg
   * utils/hbdoc/hbdoc.prg
   * utils/hbdoc/html.prg
   * utils/hbdoc/ng.prg
   * utils/hbdoc/os2.prg
   * utils/hbdoc/rtf.prg
   + utils/hbdoc/teeasc.prg
     + Synced with xhb.
     ; Someone who uses this tool, pls test.

   * common.mak
   * utils/hbmake/Makefile
   * utils/hbmake/ft_funcs.prg
   * utils/hbmake/hbmake.prg
   * utils/hbmake/hbmutils.prg
   * utils/hbmake/pickarry.prg
   * utils/hbmake/radios.prg
   + utils/hbmake/readline.c
   + utils/hbmake/tmake.prg
     + Synced with xhb.
     ; Someone who uses this tool, pls test.
2007-11-12 00:16:26 +00:00
Przemyslaw Czerpak
7bad05f1b6 2007-11-04 02:34 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbapi.h
  * harbour/source/common/hbstr.c
    + added hb_strlow()

  * harbour/source/rtl/fstemp.c
  * harbour/source/rtl/filesys.c
    ! fixed _SET_DIRSEPARATOR behavior - now it's always set to default
      OS directory separator what means no translations. If you want to
      enable some translations then it should be set to other value, f.e.
      in *nixes:
         set( _SET_DIRSEPARATOR, "\" )
      enables translations of "\" in paths to "/"

  * harbour/source/main/harbour.c
    + added support for new compiler switches:
         - Filename casing:
               -fn:l       (lower)
               -fn:u       (upper)
               -fn-        (disable - default)
               -fn         (disable - default)
         - Directory casing
               -fd:l       (lower)
               -fd:u       (upper)
               -fd-        (disable - default)
               -fd         (disable - default)
         - Path separator:
               -fp:<char>
               -fp         (default: OS defined)
         - Filename space trimming:
               -fs         (enable)
               -fs-        (disable - default)
      These switches works only in standalone compiler.
      When compiler is linked with HVM and RTL then corresponding
      _SET_* switches are used instead.
2007-11-04 01:34:59 +00:00
Viktor Szakats
e208b9a1d7 2007-10-24 03:54 UTC+0100 Viktor Szakats (harbour.01 syenar.hu)
* include/vm.api
   * include/hbapi.h
   * include/clipdefs.h
   * common.mak
   * source/vm/Makefile
   + source/vm/vm.c
     + Added skeletons for CA-Cl*pper-like C-level VM API.
       Types slightly modified for portability and to support 
       larger memory than C5x.
2007-10-24 02:00:45 +00:00
Viktor Szakats
82d8ab9d01 2007-10-23 13:30 UTC+0100 Viktor Szakats (harbour.01 syenar.hu)
* contrib/directx/w32_ddrw.cpp
   * contrib/directx/w32_ddrw.h
     ! Cleanup, formatting.
     ! Tabs converted to spaces.

   * contrib/libnf/aading.prg
   * contrib/libnf/aavg.prg
   * contrib/libnf/acctadj.prg
   * contrib/libnf/acctmnth.prg
   * contrib/libnf/acctqtr.prg
   * contrib/libnf/acctweek.prg
   * contrib/libnf/acctyear.prg
   * contrib/libnf/adessort.prg
   * contrib/libnf/aemaxlen.prg
   * contrib/libnf/aeminlen.prg
   * contrib/libnf/amedian.prg
   * contrib/libnf/anomatch.prg
   * contrib/libnf/any2any.prg
   * contrib/libnf/aredit.prg
   * contrib/libnf/asum.prg
   * contrib/libnf/at2.prg
   * contrib/libnf/bitclr.prg
   * contrib/libnf/bitset.prg
   * contrib/libnf/blink.prg
   * contrib/libnf/byt2bit.prg
   * contrib/libnf/byt2hex.prg
   * contrib/libnf/byteand.prg
   * contrib/libnf/byteneg.prg
   * contrib/libnf/bytenot.prg
   * contrib/libnf/byteor.prg
   * contrib/libnf/bytexor.prg
   * contrib/libnf/calendar.prg
   * contrib/libnf/clrsel.prg
   * contrib/libnf/cntryset.prg
   * contrib/libnf/d2e.prg
   * contrib/libnf/datecnfg.prg
   * contrib/libnf/dayofyr.prg
   * contrib/libnf/daytobow.prg
   * contrib/libnf/dectobin.prg
   * contrib/libnf/descend.c
   * contrib/libnf/dfile.prg
   * contrib/libnf/dhkey.h
   * contrib/libnf/diskfunc.prg
   * contrib/libnf/dispmsg.prg
   * contrib/libnf/dosver.prg
   * contrib/libnf/e2d.prg
   * contrib/libnf/easter.prg
   * contrib/libnf/elapmil.prg
   * contrib/libnf/elapsed.prg
   * contrib/libnf/eltime.prg
   * contrib/libnf/findith.prg
   * contrib/libnf/firstday.prg
   * contrib/libnf/floptst.prg
   * contrib/libnf/ftattr.c
   * contrib/libnf/ftint86.ch
   * contrib/libnf/ftmenuto.ch
   * contrib/libnf/fttext.c
   * contrib/libnf/gcd.prg
   * contrib/libnf/getenvrn.c
   * contrib/libnf/getver.c
   * contrib/libnf/getvid.c
   * contrib/libnf/hex2dec.prg
   * contrib/libnf/idle.c
   * contrib/libnf/invclr.prg
   * contrib/libnf/isbit.prg
   * contrib/libnf/isbiton.prg
   * contrib/libnf/isshare.prg
   * contrib/libnf/kspeed.c
   * contrib/libnf/lastday.prg
   * contrib/libnf/linked.prg
   * contrib/libnf/madd.prg
   * contrib/libnf/menu1.prg
   * contrib/libnf/menuto.prg
   * contrib/libnf/metaph.prg
   * contrib/libnf/miltime.prg
   * contrib/libnf/min2dhm.prg
   * contrib/libnf/month.prg
   * contrib/libnf/mouse.c
   * contrib/libnf/mouse1.prg
   * contrib/libnf/mouse2.prg
   * contrib/libnf/netpv.prg
   * contrib/libnf/nooccur.prg
   * contrib/libnf/ntow.prg
   * contrib/libnf/nwlstat.prg
   * contrib/libnf/nwsem.prg
   * contrib/libnf/nwuid.prg
   * contrib/libnf/ontick.c
   * contrib/libnf/origin.c
   * contrib/libnf/page.prg
   * contrib/libnf/pchr.prg
   * contrib/libnf/peek.c
   * contrib/libnf/pegs.prg
   * contrib/libnf/pending.prg
   * contrib/libnf/pickday.prg
   * contrib/libnf/poke.c
   * contrib/libnf/popadder.prg
   * contrib/libnf/prtesc.prg
   * contrib/libnf/prtscr.c
   * contrib/libnf/pvid.prg
   * contrib/libnf/qtr.prg
   * contrib/libnf/rand1.prg
   * contrib/libnf/readme.txt
   * contrib/libnf/restsets.prg
   * contrib/libnf/round.prg
   * contrib/libnf/savearr.prg
   * contrib/libnf/savesets.prg
   * contrib/libnf/scancode.prg
   * contrib/libnf/scregion.prg
   * contrib/libnf/setdate.prg
   * contrib/libnf/settime.prg
   * contrib/libnf/sinkey.prg
   * contrib/libnf/sleep.prg
   * contrib/libnf/sqzn.prg
   * contrib/libnf/sysmem.prg
   * contrib/libnf/tbwhile.prg
   * contrib/libnf/test.prg
   * contrib/libnf/vertmenu.prg
   * contrib/libnf/vidcur.prg
   * contrib/libnf/vidmode.prg
   * contrib/libnf/wda.prg
   * contrib/libnf/week.prg
   * contrib/libnf/workdays.prg
   * contrib/libnf/woy.prg
   * contrib/libnf/xbox.prg
   * contrib/libnf/year.prg
   - contrib/libnf/idle.c
   + contrib/libnf/ftidle.c
   + contrib/libnf/iamidle.c
   * contrib/libnf/Makefile
   * contrib/libnf/makefile.bc
   * contrib/libnf/makefile.vc
     + Added svn headers.
     ! Fixed FT_IDLE()
     ! Renamed idle.c to not clash with core idle.obj.
     ! FT_F*() functions fully ported from original NFLIB.
       Pls test.
     * Some minor cleanups, formatting.

   * include/filesys.api
     ! _fsRead(), _fsWrite() now more compatible.

   * include/hbundoc.api
     + Added _lcopy(), _ncopyuc(), _ncopylc() compatibility 
       functions.

   * include/hbapi.h
   * source/common/hbstr.c
     + Added hb_strncpyLower()
2007-10-23 11:32:22 +00:00
Przemyslaw Czerpak
b5d010fbeb 2007-10-01 19:42 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/rtl/errorapi.c
    + added protection against possible GPF when some assign methods
      were called without parameters

  * harbour/source/rdd/workarea.c
    * initialize uiFalgs also when DBS_FLAGS is not set

  * harbour/contrib/bmdbfcdx/bmdbfcdx1.c
    * fixed hb_cdxSkipFilter() declaration - it should be 'static' function

  * harbour/source/pp/ppcore.c
  * harbour/source/compiler/ppcomp.c
    + added support for changing all -k? switches by #pragma, f.e.;
         #pragma -ks+
         #pragma -kM-
         #pragma -kx1
         #pragma -kJ0

  * harbour/source/compiler/hbusage.c
    * changed -ks description

  * harbour/include/hbexpra.c
  * harbour/include/hbexprb.c
    * do not generate error message for negative indexes and
      [] operators are used for simple types when -ks option
      is used

  * harbour/include/hbvmpub.h
  * harbour/include/hbapi.h
  * harbour/source/vm/hvm.c
  * harbour/source/vm/extend.c
  * harbour/source/vm/itemapi.c
  * harbour/source/vm/memvars.c
    + added HB_IT_DEFAULT flags - it allows to check if item was changed

  * harbour/source/vm/memvars.c
  * harbour/include/hbvm.h
    ! fixed HB_IT_MEMOFLAG updating to be Clipper compatible. Here we are
      not Clipper compatible in one place: in clodeblock local parameters
      with memo values are marked as MEMO but if you leave function where
      codeblock were created then Clipper during detaching removes MEMO
      flag. In Harbour memo flag is kept.

  * harbour/include/hbvm.h
  * harbour/source/vm/classes.c
  * harbour/source/vm/hvm.c
    % improved speed of extended references used for SETGET methods
      and overloaded [] operators

  * harbour/include/hbapi.h
  * harbour/include/hbsetup.ch
  * harbour/source/compiler/hbcomp.c
  * harbour/source/vm/hvm.c
  * harbour/source/vm/macro.c
  * harbour/source/vm/cmdarg.c
    * removed HB_COMPAT_XHB flags - only one HB_COMPAT_XHB still exist
      in HVM in hashes.c - it will be removed soon.

  * harbour/source/common/hbverdsp.c
    * removed information about xHarbour compatibility mode - it's not
      longer used. We are emulating xHarbour behavior using external
      XHB library and standard compiler/HVM features

  * harbour/contrib/xhb/xhb.ch
  * harbour/contrib/xhb/xhbfunc.c
  * harbour/source/vm/arrayshb.c
    * moved XHB_AINS(), XHB_ADEL() from XHB lib to HVM as HB_AINS(), HB_ADEL()

  * harbour/contrib/xhb/xhb.ch
    + added #pragma -ks+
    + added transaltion for hb_enumindex( <enumvar> )

  + harbour/contrib/xhb/xhbenum.c
    + added emulation for HB_EUMMINDEX()

  * harbour/contrib/xhb/xhbfunc.c
    * do not add INET*() function wrappers for DOS builds or when
      HB_NO_DEFAULT_INET macro is set

  * harbour/contrib/xhb/xhbmsgs.c
    * added comment

  * harbour/contrib/Makefile
    + added TIP and XHB

  * harbour/make_rpm.sh
  * harbour/harbour.spec
    * removed HB_COMPAT_XHB, --with tip, --with xhb
      they are not longer necessary
2007-10-01 17:43:52 +00:00
Przemyslaw Czerpak
af5038b272 2007-09-28 14:08 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbapi.h
  * harbour/source/vm/itemapi.c
  * harbour/source/vm/garbage.c
    + added extended item references - it's universal reference which
      can be used by HVM for many different things without introducing
      new item types

  * harbour/include/hbexprb.c
    * respect -ks compiler also with <op>=, --, ++ operators

  * harbour/include/hbvm.h
  * harbour/source/vm/hvm.c
  * harbour/source/vm/classes.c
    + added extended references for SETGET methods used as object
      item references
    * use extended references to respect overloaded [] operator in
      object item references
    + added support for passing indexes to string item characters
      ( @cValue[n] ) by reference using extended references - extension
      enabled by -ks compiler switch and //flags:s RT switch. 
    + added hb_vmPushItemRef()

  * harbour/source/rdd/dbf1.c
  * harbour/source/rdd/usrrdd/usrrdd.c
    * use hb_vmPushItemRef()

  * harbour/contrib/xhb/xhbcomp.prg
  * harbour/contrib/xhb/xhbmsgs.c
    * overload +, -, *, %, ^, ++, -- in string and numeric scalar
      classes to emulated xHarbour behavior when 1 byte string is
      used as numeric value.
      Note: <nun> + <char1> in XHB lib gives numeric value when in
            xHarbour character. But because <nun> <anyOtherOper> <char1>
            in xHarbour gives numeric value then I guess that it's
            xHarbour bug and I should not replicate it, f.e.:
               proc main()
                  ? 1+"A", 131-"A", 33 * 2, 132 / chr(2), 133 % "C"
               return
    * overload +, - in hash scalar class to emulated xHarbour behavior
      for <hash> + <hash> and <hash> - <hash>
      Seems that now we can remove HB_COMPAT_XHB flag from HVM and keep
      Harbour compatibility only with -ks compile time switch and XHB
      library. Please make some tests with Harbour compiled without
      HB_COMPAT_XHB and xHarbour code using REQUEST XHB_LIB. It's possible
      that I missed sth but some basic test shows that our emulation is
      better then original and addresses places where xHarbour does not
      work at all or gives strange results, f.e.:

         #ifndef __XHARBOUR__
            request XHB_LIB
         #endif
         proc main()
            local h:={"ABC"=>123.45}
            ? h:abc
            h:abc+=1000   ; ? h:abc
            h["ABC"]+=1000; ? h:abc
            p(@h:abc)     ; ? h:abc
            p(@h["ABC"])  ; ? h:abc
         return
         proc p(x)
            x+=1000
         return

      or:

         #ifndef __XHARBOUR__
            request XHB_LIB
         #endif
         #include "hbclass.ch"
         proc main()
            local o:=myClass():new()
            o:setget:="ABC"; ? o:setget
            o:setget[2]:=42; ? o:setget
            o:setget[2]+=42; ? o:setget
            ? o:setget[2]+=42; ? o:setget
            ?
            o:var:="ABC"; ? o:var
            o:var[2]:=42; ? o:var
            o:var[2]+=42; ? o:var
            ? o:var[2]+=42; ? o:var
         return
         CREATE CLASS myClass
            VAR    var
            METHOD setget SETGET
         END CLASS
         METHOD setget( xNewVal ) CLASS myClass
            IF pcount() > 0
               ::var := xNewVal
            ENDIF
         RETURN ::var

  * harbour/include/hbapirdd.h
  * harbour/source/rdd/dbcmd.c
  * harbour/source/rdd/workarea.c
  * harbour/source/rdd/dbf1.c
  * harbour/source/rdd/dbffpt/dbffpt1.c
  * harbour/source/rdd/dbfcdx/dbfcdx1.c
  * harbour/source/rdd/dbfdbt/dbfdbt1.c
  * harbour/source/rdd/usrrdd/usrrdd.c
  * harbour/contrib/rdd_ads/ads1.c
    * changed second parameter in RELTEXT() method to PHB_ITEM
      Now RELTEXT() works like FILTERTEXT() and the size of
      expression is not limited. It's a modification I wanted
      to make for a long time and I think that now is a good
      moment to make it together with HB_FT_* modifications
    - rmoved not longer necessary HARBOUR_MAX_RDD_RELTEXT_LENGTH

  * harbour/source/rtl/gttrm/gttrm.c
    * small cleanup
2007-09-28 12:08:46 +00:00
Przemyslaw Czerpak
7ce01c556f 2007-09-15 22:35 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbapi.h
    + HB_ISFIRSTIDCHAR() and HB_ISNEXTIDCHAR() macros

  * harbour/source/rdd/wafunc.c
    * changed FIELD->, _FIELD->, <alias>-> stripping from expressions
      to respect shortcuts

  * harbour/source/compiler/hbmain.c
  * harbour/source/compiler/hbdead.c
  * harbour/source/compiler/hbopt.c
    * jump joining optimization changed to work also for code with line
      numbers
2007-09-15 20:35:30 +00:00
Przemyslaw Czerpak
13a2891d97 2007-08-31 03:20 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbapi.h
  * harbour/source/vm/dynsym.c
    + added hb_dynsymIsFunction()

  * harbour/source/rtl/filehb.c
    * updated comment

  * harbour/source/rtl/philes.c
    * renamed HB_F_EOF() to HB_FEOF()

  * harbour/source/rtl/scroll.c
  * harbour/source/rtl/transfrm.c
  * harbour/source/rtl/file.c
    * formatting

  * harbour/source/rtl/substr.c
  * harbour/source/rtl/trim.c
    % optimization

  * harbour/source/rtl/typefile.prg
    % use HB_ATOKENS() instead of static .prg function

  * harbour/source/rtl/setkey.c
    % optimization and protection aganst possible GPF when wrong array
      is passed to HB_SETKEYSAVE()

  * harbour/source/rtl/xhelp.c
    ! do not generate RT error when HELP symbol exist
      (f.e. after PUBLIC HELP) but HELP() function doesn't
    ! keep reference in parametes passed by reference to __XHELP()
    * use only PHB_DYNS instead of PHB_SYMB

  * harbour/source/rtl/seconds.c
    + added WIN32 version borrowed from XHARBOUR

  * harbour/source/rtl/trace.c
    ! protection against possible GPF when wrong parameters are passed

  * harbour/source/rtl/samples.c
    ! protection against possible GPF when wrong parameters are passed
      Warning! We have in this file few functions without HB_ prefix.
      Some of them may create conflicts with future functions for TIMEDATE
      items.

  * harbour/source/rtl/inkey.c
    + added support for passing array with key codes as __KEYBOARD()
      parameter, covered by HB_EXTENSION macro - this is xHarbour compatible
      extension. I do not like it but we already had extension with numeric
      parameters and probably it would be hard to remove it now and keep
      __KEYBOARD() code clean so I decided to add support also for arrays
      instead of creating new function and adding conditional code covered
      by HB_COMPAT_XHB macro.

  * harbour/source/rtl/setfunc.prg
    * accept extended __KEYBOARD() parameters when HB_EXTENSION macro
      is set.
2007-08-31 01:20:52 +00:00
Przemyslaw Czerpak
feda39d689 2007-08-30 03:55 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbapi.h
  * harbour/source/rtl/console.c
    * changed hb_conOutAlt() from static to global function.

  * harbour/include/hbapi.h
  * harbour/source/common/hbver.c
    + added hb_verBuildDate()

  * harbour/source/rtl/accept.c
    ! Fixed ACCEPT to respect SET CONSOLE and similar sets.

  * harbour/source/rtl/hbgtcore.c
  * harbour/contrib/libct/ctwin.c
    ! fixed chr(8) console output - it should erase character on the screen

  * harbour/include/set.ch
  * harbour/include/hbset.h
  * harbour/source/rtl/set.c
  * harbour/source/rtl/filesys.c
    + added _SET_TRIMFILENAME - when enabled low level hb_fs*() functions
      strip trailing and leading spaces from file names to emulate DOS
      like behavior - switch compatible with xHarbour


  * harbour/source/rtl/run.c
    * remove compiler type checking - if system() is not supported by
      some platform/compiler then I'd prefer to exclude it explicitly.

  * harbour/source/rtl/dircmd.prg
    + added support for extended DBF types and replaced some of
      Bin2W() by ASC()

  * harbour/source/rtl/defpath.c
    * use OS_HAS_DRIVE_LETTER macro to detect if platform supports drive
      letters

  * harbour/source/rtl/philes.c
    + added HB_FCOMMIT(), HB_OSERROR(), HB_OSDRIVESEPARATOR()
      Question: why we have HB_F_EOF() instead HB_FEOF()

  * harbour/source/rtl/oldbox.c
  * harbour/source/rtl/box.c
    ! fixed __BOX() to be Clipper compatible

  * harbour/source/rtl/math.c
  * harbour/source/rtl/dateshb.c
    * formatting and some minor improvements

  * harbour/source/rtl/isprint.c
  * harbour/source/vm/itemapi.c
  * harbour/source/rtl/ampm.c
  * harbour/source/rtl/inkey.c
  * harbour/source/rtl/gete.c
  * harbour/source/rtl/fkmax.c
  * harbour/source/rtl/langapi.c
  * harbour/source/rtl/colorind.c
  * harbour/source/rtl/mouseapi.c
  * harbour/source/rtl/readvar.prg
  * harbour/source/rtl/devoutp.prg
  * harbour/source/rtl/readkey.prg
    * code checking and formatting
    ! some minor fixes
    % some speed improvements

  * harbour/source/rtl/menuto.prg
  * harbour/source/rtl/radiogrp.prg
  * harbour/source/rtl/listbox.prg
  * harbour/source/rtl/checkbox.prg
  * harbour/source/rtl/pushbtn.prg
  * harbour/source/rtl/radiobtn.prg
    * code checking and formatting
    ! added fixes borrowed from xHarbour 
    ! some other fixes
    % some speed improvements

  * harbour/source/rtl/filehb.c
    + added commment

  * harbour/source/rtl/transfrm.c
    ! fixed integer numbers transformation when _SET_FIXED is on to
      be Clipper compatible

  * harbour/source/rtl/version.c
    + added HB_PCODEVER() and HB_BUILDDATE()

  * harbour/source/rtl/copyfile.c
    ! fixed __COPYFILE() - source and destination files should respect
      _SET_DEFAULT
2007-08-30 01:56:03 +00:00
Przemyslaw Czerpak
a455bf0d4c 2007-08-25 12:20 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbapi.h
  * harbour/source/vm/arrays.c
  * harbour/source/vm/extend.c
    ! fixed hb_stor*() functions return value to be Clipper compatible.
      These functions should return 1 _ONLY_ when the operation is really
      successful; otherwise, they return zero.
    + added hb_storclen_buffer(), hb_arraySetPtrGC()

  * harbour/config/darwin/gcc.cf
  * harbour/config/hpux/gcc.cf
  * harbour/config/dos/rsx32.cf
  * harbour/config/os2/gcc.cf
  * harbour/config/sunos/gcc.cf
  * harbour/config/w32/gcc.cf
  * harbour/config/w32/rsxnt.cf
    + added rtl library after gt drivers for linker which do not support
      backward references
2007-08-25 10:20:35 +00:00
Przemyslaw Czerpak
c775f56f50 2007-08-20 15:50 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbexprb.c
    * do not generate error for QSELF()[...] - Clipper allows such
      operation and because some valid Clipper code needs it then
      I disabled error message.

  * harbour/common.mak
  * harbour/source/rtl/Makefile
  + harbour/source/rtl/einstvar.prg
    + added undocumented CA-Cl*pper function _eInstVar() used to validate
      variable type in assign messages.

  * harbour/include/hbapi.h
  * harbour/source/vm/arrays.c
    * changed 'char *' to 'const char *' in hb_arraySetC() and hb_arraySetCL()

  * harbour/source/rdd/dbcmd.c
    * cleaned DBSKIPPER() code

  * harbour/source/rtl/browdb.prg
    * use written in C DBSKIPPER() function instead of static .prg Skipped()
      when HB_COMPAT_XPP macro is enabled

  * harbour/source/rtl/browse.prg
    ! fixes in BROWSE() function:
      ! displaying box characters
      + added CL53 compatible mouse actions
      + added mouse wheel actions
      + added support for deleting records (K_DEL)
      + added support for edit mode
      + added support for append mode
2007-08-20 13:50:18 +00:00
Przemyslaw Czerpak
85ffaae73a 2007-07-30 18:00 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbcompat.ch
    + added #xtranslate ISPOINTER( <xValue> )
    * simplified bit operator translations

  * harbour/include/hbapi.h
    + added #define hb_itemPutCStatic(...) hb_itemPutCConst(...)

  * harbour/include/hbapiitm.h
    - removed #define hb_retclenAdoptRaw(...) hb_retclen_buffer(...)
      it's not _exactly_ the same and in some cases it cannot be
      replaced so users should know what exactly they are doing

  * harbour/source/rtl/gttrm/gttrm.c
    + added some #ifdef OS_UNIX_COMPATIBLE for future non *nix ports

  * harbour/source/rdd/dbf1.c
    ! added RT error when someone tires to create DBF with more then
      2046 fields - without it corrupted files were created or GPF
      appeared

  * harbour/contrib/ole2/w32ole.c
    * changed hb_retclenAdoptRaw() to hb_retclen_buffer()
2007-07-30 16:00:32 +00:00
Przemyslaw Czerpak
113866e6a1 2007-06-20 21:05 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbgtinfo.ch
    + added GTI_ADDKEYMAP and GTI_DELKEYMAP

  * harbour/include/hbapicdp.h
  * harbour/source/rtl/cdpapi.c
    + added const to declarations of some function parameters

  * harbour/include/hbgtcore.h
  * harbour/source/rtl/Makefile
  + harbour/source/rtl/gtchrmap.c
  * harbour/source/rtl/gtcrs/Makefile
  - harbour/source/rtl/gtcrs/chrmap.c
  * harbour/source/rtl/gtcrs/gtcrs.c
  * harbour/source/rtl/gtcrs/gtcrs.h
    * hb_gt_chrmapinit() common function now for different GT drivers
    * minor cleanup in GTCRS code

  * harbour/include/hbcompat.ch
    + added some new translation rules

  * harbour/include/hbapi.h
    * cleanup comment

  * harbour/source/pp/ppcore.c
    ! fixed line numbering when errors are reported in different order
      due to preprocessing extended code block

  + harbour/source/rtl/gttrm
  + harbour/source/rtl/gttrm/Makefile
  + harbour/source/rtl/gttrm/gttrm.c
    + added new GT driver - it's terminal driver like GTCRS and GTSLN
      but it does not use any external library like [N]CURSES or SLANG
      so it can be compiled in nearly all POSIX systems. It's not such
      flexible like curses or slang base drivers because instead of
      using termcap/terminfo databases to extract terminal capabilities
      it uses some hard coded sequences for few terminals (now Linux, ANSI,
      XTERM) but it should cover users requests in 95% of cases. Terminals
      I tested are quite well supported (GTTRM works even better then GTCRS
      or GTSLN and is much faster in full screen mode - 2-4 times).
      I noticed that most terminal emulators works much better with GTTRM
      then with GTCRS or GTSLN due to limited list of used escape sequences
      so some minor differences in each terminal implementation are not
      noticeable. GTTRM automatically detects ISO/UTF8 terminal mode and
      chose valid output what should also help *nix users.
      Now I would like to ask BSD and MacOSX users to test GTTRM in these
      systems with pure text console and XWindow terminal emulators. I'm
      interesting in any problems you may found.

  * harbour/source/vm/hvm.c
    + added protection for possible GPF caused by wrong .prg code

  * harbour/source/vm/maindllp.c
    % store function addreses in static variables to improved execution
      speed
    + added support for compilers which does not use "_" as function prefix
    + added support for using with harbour*.dll

  * harbour/source/vm/memvars.c
    + added new method of detaching enumerators and array item references
      covered by HB_COMPAT_XHB macro. xHarbour does not work in such way
      but the final results are similar.

  * harbour/source/vm/dynlibhb.c
    + added protection against passing wrong pointer items to HB_LIB*()
      functions

  * harbour/source/common/reserved.c
    * cleaned warning

  * harbour/bin/hb-func.sh
  * harbour/config/hpux/global.cf
  * harbour/config/darwin/global.cf
  * harbour/config/linux/global.cf
  * harbour/config/sunos/global.cf
  * harbour/config/bsd/global.cf
    + added GTTRM to library list
2007-06-20 19:07:37 +00:00
Przemyslaw Czerpak
5c85215870 2007-06-12 23:40 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/contrib/rdd_ads/ads1.c
    * cleaned BCC warning

  * harbour/include/hbapi.h
  * harbour/source/vm/arrays.c
    + added set of hb_arraySet*() functions - I hope they will help 3-rd
      party developers to eliminate using C stack level HB_ITEM and
      reduce usage of potentially danger function like hb_arrayGetItemPtr()

  * harbour/include/hbapiitm.h
  * harbour/source/vm/itemapi.c
    + added hb_itemReturnRelease()

  * harbour/include/hbcompat.ch
    + added hb_pvalue() <-> pvalue() translations

  * harbour/source/vm/pvalue.c
    + added support for 2-nd parameter for assugb operation, f.e. now
         hb_pvalue( 3, "abc" )
      sets "abc" to 3-rd function parameter

  * harbour/source/compiler/gencc.c
  * harbour/source/compiler/hbopt.c
    ! fixed two buggy optimizations
2007-06-12 21:41:58 +00:00
Przemyslaw Czerpak
bedaef925f 2007-05-28 09:50 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/make_xmingw.sh
  * harbour/source/pp/Makefile
    * recent xHarbour fixes for MinGW Linux->W32 cross build by Phil Krylow
      with small modifications

  * harbour/config/rules.cf
    + added rules for C++ files

  * harbour/include/hbapi.h
  * harbour/source/vm/arrays.c
    + added hb_arraySetForward()

  * harbour/include/hbapi.h
  * harbour/source/rtl/strmatch.c
    + added hb_strMatchFile() - compare two strings using platform dependent
      rules for file matching, respects platform dependent wildcards
    + added hb_strMatchCaseWildExact() - compare two strings using pattern
      with wildcard (?*) ignoring the case of the characters - patern have
      to cover whole string
    * changed hb_strMatchRegExp() to use real reguar expresions, if build
      does not support regex then redirected to hb_strMatchWildExact()
    - removed not longer used hb_strMatchDOS() - in fact it was neither DOS
      nor classic wildcards (?*) compatible

  * harbour/source/common/hbstr.c
    ! casting to avoid possible problem on platforms where toupper does not
      accept negative char value

  * harbour/include/hbcomp.h
  * harbour/source/compiler/hbcomp.c
  * harbour/source/compiler/hbmain.c
    * minor modifications in cleanup functions

  * harbour/source/rtl/hbffind.c
    * use hb_strMatchFile()

  * harbour/source/vm/memvars.c
    * use hb_strMatchCaseWildExact() instead of hb_strMatchRegExp()
      I still keep the hack which translates any mask starting with '*'
      to "*" but if you think that we should fully respect wildcards
      patterns then we should remove it from function hb_memvarGetMask()
      Opinions?
2007-05-28 07:52:08 +00:00
Przemyslaw Czerpak
0724963ab3 2007-05-26 09:05 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/pp/ppcore.c
    ! fixed bug reported by Lorenzo

  * harbour/contrib/rdd_ads/ads1.c
    * changed static variable name from iSetListenerHandle to
      s_iSetListenerHandle to keep common naming convention

  * harbour/include/hbapi.h
  * harbour/source/vm/hashes.c
  * harbour/source/vm/hashfunc.c
  * harbour/source/vm/hvm.c
    + added new 3-rd parameter to hb_hashGetItemPtr() to control
      independently hash autoadd behavior in access/assign operation

  * harbour/include/hbrdddbf.h
  * harbour/include/hbrddntx.h
  * harbour/source/rdd/dbfntx/dbfntx1.c
    * moved static variables holding RDDI_* settings to RDDNODE data so
      they can be set separately for each RDD which inherits from DBFNTX

  * harbour/source/vm/classes.c
    + added disabled code to access hash items using messages

  * harbour/source/vm/garbage.c
    * comment
2007-05-26 07:06:07 +00:00
Przemyslaw Czerpak
541d776d85 2007-05-25 01:35 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbapi.h
  * harbour/include/hbexpra.c
  * harbour/source/macro/macro.y
  * harbour/source/macro/macro.yyc
  * harbour/source/macro/macrolex.c
  * harbour/source/vm/macro.c
    - removed hb_macroIsIdent()
    + added hb_macroTextSymbol()
    ! fixed old bug (it exists in all [x]Harbour versions) in macrocompiler
      which caused HVM stack corruption
    * generate from lexer symbols which are well formatted
      (uppercase and size <= HB_SYMBOL_NAME_LEN)
    % use hb_dynsymGetCase() instead of hb_dynsymGet()
    % some minor speed improvement

  * harbour/source/rtl/gtwin/gtwin.c
    % use hb_dynsymFind() instead of hb_dynsymFindName()

  * harbour/source/rdd/dbcmd.c
  * harbour/source/rdd/wafunc.c
    * reenabled by default strict clipper compatible behavior for
      code select(), dbSelectArea() and alias allocating

  * harbour/source/rdd/dbf1.c
    + added DBI_ISENCRYPTED for tables encrypted by SIX3

  * harbour/source/rtl/hbinet.c
    ! added missing break (Ron fix from xHarbour)
2007-05-24 23:35:25 +00:00
Przemyslaw Czerpak
75bd21860c 2007-05-22 01:45 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbapi.h
  * harbour/include/hbapicls.h
  * harbour/include/hbcomp.h
  * harbour/include/hbvm.h
  * harbour/include/hbvmpub.h
  * harbour/source/compiler/genc.c
  * harbour/source/compiler/gencc.c
  * harbour/source/compiler/gencli.c
  * 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/debug/dbgentry.c
  * harbour/source/rdd/wafunc.c
  * harbour/source/rtl/itemseri.c
  * harbour/source/rtl/gtsln/gtsln.c
  * harbour/source/vm/classes.c
  * harbour/source/vm/dynsym.c
  * harbour/source/vm/hvm.c
  * harbour/source/vm/memvars.c
  * harbour/source/vm/runner.c
    * casting: changed some 'char *' to 'const char *', added const to some
      other declarations, added workaround for GCC warnings about
      dereferencing pointer with strict-aliasing optimization, etc.
2007-05-21 23:45:41 +00:00
Przemyslaw Czerpak
2fb8011bc5 2007-04-17 04:20 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbapi.h
  * harbour/source/vm/dynsym.c
    * removed const from return value of hb_dynsymName() to not force
      updating of existing 3-rd party code
2007-04-17 02:21:13 +00:00
Przemyslaw Czerpak
c9e8fc84b9 2007-04-17 04:10 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbapi.h
  * harbour/source/vm/dynsym.c
    * changed some declarations from 'char *' to 'const char *'

  * harbour/include/hbapicls.h
  * harbour/source/vm/classes.c
    * changed some declarations from 'char *' to 'const char *'
    + added hb_clsFuncName(), hb_clsFindClass(), hb_objSetClass()

  * harbour/source/rtl/itemseri.c
    ! fixed some stupid typos in previous commit
    * added support for serialization of object variables - I'm
      not sure it's good idea anyhow people ask about it so we
      have it. Probably we should add some special method like
      OnError(), f.e.: OnRestore() or sth like that and execute
      it after deserialization or object cloning.
2007-04-17 02:13:04 +00:00
Przemyslaw Czerpak
a44eae4498 2007-04-16 21:30 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbcompat.ch
    * always translate hash H*() function to HB_H*() ones even if
      HB_COMPAT_XHB is set. Code which uses HB_H*() functions can
      be linked with any Harbour builds

  * harbour/include/hbapi.h
  * harbour/source/vm/hashes.c
    + added hb_hashId()

  * harbour/source/pp/ppcore.c
    + added #ytranslate, #ycommand, #yuntranslate, #yuncommand
      case sensitive version of corresponding #x* directives

  * harbour/source/rtl/itemseri.c
    + added support for serialization arrays and/or hashes with cyclic
      references
2007-04-16 19:29:50 +00:00
Przemyslaw Czerpak
b7094ed42f 2007-04-13 03:00 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbapi.h
  + harbour/include/hbapidbg.h
  * harbour/include/hbcomp.h
  * harbour/include/hbcompdf.h
  * harbour/include/hbdebug.ch
  * harbour/include/hbdefs.h
  * harbour/source/compiler/Makefile
  * harbour/source/compiler/genc.c
  + harbour/source/compiler/hbdbginf.c
  * harbour/source/compiler/hbmain.c
  * harbour/source/debug/debugger.prg
  * harbour/source/rtl/altd.prg
  * harbour/source/vm/Makefile
  + harbour/source/vm/dbgentry.c
  * harbour/source/vm/debug.c
  * harbour/source/vm/hvm.c
    + added xHarbour compatible low level debugger code
      Without some small exceptions like my hbdbginf.c most of
      the code created by Phil Krylov <phil a t newstar.rinet.ru>
      and borrowed from xHarbour with some small modifications.

  * harbour/source/rtl/gete.c
    ! fixed memory leak in GETENV()

  * harbour/source/compiler/hbmain.c
    ! fixed memory leak when -build or -credit switches were used
2007-04-13 01:06:01 +00:00
Przemyslaw Czerpak
2eb7297e54 2007-04-03 14:10 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbapi.h
  * harbour/source/vm/arrays.c
    + added hb_arrayRevScan()

  * harbour/source/vm/arrayshb.c
    + added RASCAN() covered by HB_COMPAT_XHB macro
2007-04-03 12:10:15 +00:00
Przemyslaw Czerpak
88cda3200d 2007-03-22 12:55 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* 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)
2007-03-22 12:28:14 +00:00
Przemyslaw Czerpak
0ef0f1aab9 2007-03-13 19:40 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* 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])
2007-03-13 18:40:56 +00:00
Przemyslaw Czerpak
98d97eb695 2007-02-13 21:00 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* 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
2007-02-13 19:59:41 +00:00
Viktor Szakats
8c0a2d69cd 2007-02-09 00:28 UTC+0100 Viktor Szakats (harbour.01 syenar.hu)
* harbour/source/rtl/isprint.c
   * harbour/include/hbapi.h
     ! hb_printerIsReady() C level function made public again.
     + Added proper declaration for it.

   * harbour/bin/bld.bat
     ! Mistakenly committed change undone.
2007-02-08 23:33:20 +00:00
Przemyslaw Czerpak
48f8dba263 2007-02-08 23:55 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbgtinfo.ch
  * harbour/contrib/libct/ctwin.c
  * harbour/source/rtl/gtalleg/gtalleg.c
  * harbour/source/rtl/gtcrs/gtcrs.c
  * harbour/source/rtl/gtdos/gtdos.c
  * harbour/source/rtl/gtos2/gtos2.c
  * harbour/source/rtl/gtpca/gtpca.c
  * harbour/source/rtl/gtsln/gtsln.c
  * harbour/source/rtl/gtstd/gtstd.c
  * harbour/source/rtl/gtwin/gtwin.c
  * harbour/source/rtl/gtwvt/gtwvt.c
  * harbour/source/rtl/gtxwc/gtxwc.c
    + added support for GTI_FULLSCREEN, GTI_KBDSUPPORT, GTI_ISCTWIN

  * harbour/source/rtl/hbgtcore.c
    ! fixed line and box drawing when the coordinates are out of screen size

  * harbour/include/hbapi.h
  * harbour/include/hbcomp.h
  * harbour/include/hbpcode.h
  * harbour/include/hbstack.h
  * harbour/include/hbvm.h
  * harbour/include/hbxvm.h
  * harbour/source/compiler/complex.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/harbour.yyh
  * harbour/source/compiler/hbdead.c
  * harbour/source/compiler/hbfix.c
  * harbour/source/compiler/hblbl.c
  * harbour/source/compiler/hbpcode.c
  * harbour/source/compiler/hbstripl.c
  * harbour/source/vm/classes.c
  * harbour/source/vm/estack.c
  * harbour/source/vm/hvm.c
  * harbour/source/vm/itemapi.c
    ! added protection against cyclic references in arrays
    * eliminated action parameter from hb_vmRequestReenter() /
      hb_vmRequestRestore()
    * moved s_lRecoverBase and s_uiActionRequest to HB_STACK structure
      for future MT HVM version
    + added internal item structure hb_struRecover - it's not real item
      but this structure is used to keep information about BEGIN SEQUENCE
      data - it reduce HB_STACK usage
    + added support for ALWAYS clause in BEGIN SEQUENCE
      The syntax is:
         BEGIN SEQUENCE
            <code>
         [ RECOVER [ USING oErr ] ]
            <recoverCode>
         [ ALWAYS ]
            <alwaysCode>
         END [ SEQUENCE ]
      It's guaranteed that <alwaysCode> is _ALWAYS_ executed even if
      inside <code> or <recoverCode> some new exceptions like RETURN,
      BREAK or QUIT will appear.
      Please note that when the following code is executed:
         BEGIN SEQUENCE
            <code>
         ALWAYS
            <alwaysCode>
         END
      (without RECOVER clause) then BREAK exception inside <code> is not
      recovered, <alwaysCode> is executed and then BREAK exception is
      passed to outer BEGIN SEQUENCE. This is the same semantic as
      used in TRY / [ CATCH ] / FINALLY / END
      Those of you who prefer to use TRY / CATCH / FINALLY / END instead
      of BEGIN SEQUENCE / RECOVER / ALWAYS / END can simply add to your
      source code:
         #command TRY               => BEGIN SEQUENCE
         #command CATCH [ oErr ]    => RECOVER [ USING <oErr> ]
      and:
         errorBlock( {|oErr| break( oErr ) } )
      Though instead of 'break( oErr )' I suggest to use some small function
      which will support some basic recovery/substitute operations like in
      default errorsys() and LockErrHandler() to not break existing code
      which may depends on the default behavior.
      If you want I can add direct support for TRY / CATCH / FINALLY / END
      but I'm not sure it's really necessary.
      Please note also that in Harbour ALWAYS code is execute even for QUIT
      excpetion.
      When <alwaysCode> is executed current exception is stored and restored
      when is finished. If new exception appears inside <alwaysCode> then
      restored exception depends on the priority in the following order:
         QUIT     // highest priority
         BREAK
         RETURN
      If both exceptions have the same priority and contain additional value
      (error object in BREAK or return value in RETURN) then the recently set
      one is restored. It's similar behavior to destructor code.

  * harbour/source/common/hbstr.c
    * moved one character length string table (hb_szAscii) from hvm.c
      to use it also in compiler and preprocessor

  * harbour/source/compiler/ppcomp.c
  * harbour/source/pp/ppcore.c
  * harbour/source/pp/pplib.c
    * tuned error messages to be more Clipper compatible
    % use static strings from hb_szAscii

  * harbour/source/rtl/alert.prg
    * use hb_gtInfo( GTI_FULLSCREEN ) to detect type of GT driver
    ! some minor fixes
      TOFIX: we have to also use GTI_ISCTWIN or add window allocation
             to standard GT drivers to be Clipper compatible when CTWIN
	     is used - In Clipper Tools ALERT() works in differ way then
	     the standard one. It creates separate window box to display
	     data, supports SETKEY(), etc. I'll think about adding some
	     extended support for ALERT() and similar operations (f.e.
	     separate debugger windows) to GT API so it will be also
	     possible to overload standard alert() command by GUI message
	     box in GTGUI and similar GT drivers.

  * harbour/source/rtl/binnumx.c
    ! fixed U2BIN() - wrong casting
2007-02-08 22:56:31 +00:00
Przemyslaw Czerpak
c13da799ef 2007-01-17 03:55 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/contrib/libct/ctc.c
  * harbour/contrib/libct/files.c
  * harbour/contrib/libnf/ftattr.c
  * harbour/contrib/libnf/n2color.c
    * cleaned some BCC warnings

  * harbour/include/hbapi.h
  * harbour/include/hbexpra.c
  * harbour/include/hbexprb.c
  * harbour/include/hbsetup.ch
  * harbour/source/common/expropt1.c
  * harbour/source/common/expropt2.c
  * harbour/source/common/hbver.c
  * harbour/source/common/hbverdsp.c
  * harbour/source/compiler/hbcomp.c
  * harbour/source/vm/arrays.c
  * harbour/source/vm/arrayshb.c
  * harbour/source/vm/cmdarg.c
  * harbour/source/vm/hvm.c
    ! fixed Harbour support for accessing string characters with array
      index operators []
    + added support for #define HB_COMPAT_XHB - it's disabled by default.
      When set it enables some of xHarbour features like negative array
      indexes calculated from tail, accessing string characters with []
      operators (warning it's not compatible with default Harbour version
      enabled by -ks during compilation and //flags:s at runtime - in
      xHarbour compatibility mode "ABC"[2] returns "B" when in Harbour 66)
      and some other minor features.

  * harbour/source/compiler/cmdcheck.c
    * added support for optional setting C output type in -go switch
      Now it accepts optional digit [0123] after -go in the same way
      as -gc, f.e.: -go3

  * harbour/source/compiler/harbour.c
    * call hb_compExprLstDealloc() only when errors appeared during
      compilation - it disable automatic freeing all allocated expressions
      in clean compilation. I make it intentionally for easier detecting
      problems one some expressions are not freed. So far the final cleanup
      code always deallocated expressions what can hide some real bugs.

  * harbour/source/vm/hvm.c
    ! fixed very serious bug in HVM closing. The s_uiActionRequest flag
      was not cleared before hb_rddShutDown() so when RDD buffers were
      hot and flushing required some PCODE evaluation (f.e. index KEY
      or FOR expression) then they were not properly evaluated.

  * harbour/source/vm/macro.c
    * minor improvement

  * harbour/utils/hbtest/rt_misc.prg
    ! fixed one of expected result, it was neither Harbour nor Clipper
      result (I've just made some test with Clipper), I do not know why
      it existed
2007-01-17 02:55:14 +00:00
Przemyslaw Czerpak
071fef7612 2007-01-13 14:05 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/contrib/rdd_ads/adsfunc.c
  * harbour/source/rdd/workarea.c
    * formatting

  * harbour/include/hbapi.h
  * harbour/source/vm/extend.c
    + added missing hb_storptrGC()

  * harbour/include/hbapicdp.h
  * harbour/source/rtl/cdpapi.c
    + added parameter to unicode translation function to protect control
      code translation
    * formatting

  * harbour/source/rtl/gtsln/kbsln.c
  * harbour/source/rtl/gtxwc/gtxwc.c
    * use new unicode translation function format. It also fixes problem
      with space translation in GTLSN used in UTF8 mode

  * harbour/include/hbapiitm.h
  * harbour/source/vm/itemapi.c
    + added hb_itemCopyToRef(), hb_itemMoveToRef(), hb_itemMoveRef(),
      hb_itemUnRefWrite()

  * harbour/include/hbexprb.c
    ! use HB_P_DUPLUNREF instead of HB_P_DUPLICATE when assign is used in
      push context - Clipper compatible behavior, see:
         x:=10
         f(y:=iif(.t.,@x,))
         ? x, y
         func f(x)
         x+=100
         return nil

  * harbour/include/hbver.h
  * harbour/source/common/hbver.c
    * changed status to "devel"

  * harbour/source/common/expropt2.c
    * disabled setting NIL when iif(.t.,,sth()) is optimized to avoid
      warning when iif() is used as statement - to fix number of parameters
      passed to function in code like f(iif(.t.,,sth())) we will need a
      little bit deeper modification

  * harbour/source/compiler/complex.c
    * added hack for potential problems caused by WITH OBJECT syntax, f.e.
      in code like:
         proc p(obj,x)
         case:=myCaseClass():new()
         retu:=myCaseClass():new()
         WITH OBJECT obj
            do case
               case x==nil
               case:value()
               case:action()
                  retu:sth()
            end
         END
         case:action()
         retu:sth()
         return
      case:action(), case:value(), retu:sth() can means two different things
      and compiler cannot guess which one should use. It cannot be fixed
      because it's caused by bad WITH OBJECT syntax. In xHarbour constractions
      like case:value() or retu:sth() are always used as in  WITH OBJECT
      context what is not Clipper compatible. I do not want to introduce
      such limitations. We have two choices: change WITH OBJECT syntax or
      add some hack to "hide" the problem a little bit. Now I intorduce
      ugly hack which check number of spaces between ':' so
         case :action()
      is compiled as case condition using WITH OBJECT message and
      case:action() as sending message to object in case variable

  * harbour/source/compiler/harbour.y
  * harbour/source/compiler/harbour.yyc
    + added support for passing base value to FOR EACH by reference.

  * harbour/source/vm/arrays.c
    * use hb_itemMoveRef() in AINS()/ADEL() to avoid creation of cyclic
      reference chains

  * harbour/source/vm/debug.c
  * harbour/source/vm/memvars.c
    * use hb_itemCopyToRef() to avoid creation of cyclic reference chains

  * harbour/source/vm/classes.c
  * harbour/source/vm/hvm.c
    * use hb_itemMoveToRef() to avoid creation of cyclic reference chains
    + added support for for writable string enumerators, f.e.:
         proc main()
         local s, c
         s:="abcdefghijklmnopqrst"
         for each c in @s
            if c$"aeio"
               c:="*"
            endif
         next
         ? s // "*bcd*fgh*jklmn*pqrst"
         return
2007-01-13 13:18:35 +00:00
Przemyslaw Czerpak
cc4f5d5b59 2006-12-19 22:47 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbexprop.h
  * harbour/source/common/expropt1.c
    + added hb_compExprParamListLen()

  * harbour/include/hbexpra.c
  * harbour/include/hbexprb.c
    * use hb_compExprParamListLen()

  * harbour/include/hbexprc.c
    * generate error message for syntax like:
         o:var()++ or o:var()+=10
      only:
         o:var++ and o:var+=10
      is supported, just like for @o:var

  * harbour/include/hbapi.h
  * harbour/source/common/hbstr.c
    + hb_numDecConv() used to convert double value to/from binary integer
      fields with fixed number of decimal places

  * harbour/common.mak
  * harbour/include/hbapicdp.h
  * harbour/source/codepage/Makefile
  + harbour/source/codepage/cptrdos.c
  + harbour/source/codepage/cptrwin.c
  * harbour/source/lang/Makefile
  + harbour/source/lang/msgtrdos.c
  + harbour/source/lang/msgtrwin.c
    + added Turkish CPs and MSGs created by Bicahi Esgici
  + harbour/source/codepage/uc1254.c
  + harbour/source/codepage/uc857.c
    + added unicode tables for Turkish CPs

  * harbour/source/rdd/dbf1.c
  * harbour/source/rdd/workarea.c
    + added support for decimal places in binary integer fields ("I")
    ! fixed currency field decoding ("Y") - it's integer binary value
      not IEEE758 double. Warning: on write the value is rounded not
      truncated like in VFP.
2006-12-19 21:48:45 +00:00
Przemyslaw Czerpak
bdb38dde43 2006-12-15 16:55 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbapi.h
  * harbour/include/hbcomp.h
  * harbour/include/hbcompdf.h
  * harbour/include/hbdefs.h
  * harbour/include/hberrors.h
  * harbour/include/hbexpra.c
  * harbour/include/hbexprb.c
  * harbour/include/hbexprc.c
  * harbour/include/hbpcode.h
  * harbour/include/hbxvm.h
  * harbour/source/common/expropt1.c
  * harbour/source/common/expropt2.c
  * harbour/source/common/hbstr.c
  * harbour/source/compiler/cmdcheck.c
  * harbour/source/compiler/genc.c
  * harbour/source/compiler/gencc.c
  * harbour/source/compiler/gencobj.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/hbgenerr.c
  * harbour/source/compiler/hblbl.c
  * harbour/source/compiler/hbpcode.c
  * harbour/source/compiler/hbstripl.c
  * harbour/source/macro/macro.y
  * harbour/source/macro/macro.yyc
  * harbour/source/rtl/console.c
  * harbour/source/rtl/isprint.c
  * harbour/source/rtl/left.c
  * harbour/source/rtl/right.c
  * harbour/source/rtl/strtran.c
  * harbour/source/vm/codebloc.c
  * harbour/source/vm/hvm.c
  * harbour/source/vm/macro.c
    * general PCODE cleanup and address most of TODO/TOFIX notes in
      source code:
      ! fixed GPF traps when too long string or codeblock is generatd
      + added support for 16MB codeblocks and strings
      ! removed macrocompiler limitation for jumps range
      ! fixed GPF when more then 255 local variables is used and added
        support for 2^15 locals
      ! removed all strtok() functions
      % added optimization for all +=, -=, *=, %=, ^=, **= operations
        when left side of expression is variable or array item
      % added optimization for all +=, -=, *=, %=, ^=, **= operations
        when left side of expression is object method and updated ++, --
        for new code. It's still disabled until we will not add support
        for late evaluated reference items to HVM
      ! fixed a[++i]++ and similar operations (a[++i]*=2, ...). Now ++i is
        executed only once. It's not Clipper compatible but it was in
        TODO note in source code. It can be disabled by -kc option
      * finished support to xHarbour like #pragma TEXTHIDDEN(1)
      ! fixed local add int optimization when PARAMETERS used after
        optimization changed local variable number over 255
      ! fixed GPF trap when in HB_P_<op>EQ PCODEs when executed for
        direct values
      * others
    ! fixed problems reported by Chen
    * optimized strtran(), left(), right() to not create new string copy
      when the same value is returned
2006-12-15 15:54:28 +00:00
Przemyslaw Czerpak
33ccad6661 2006-11-27 02:10 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/tests/codebl.prg
  * harbour/tests/langmsg.prg
  * harbour/utils/hbpptest/pp_test.prg
  * harbour/utils/hbpptest/pretest.prg
  * harbour/samples/pe/license.txt
    * removed carriage return (\r) characters

  * harbour/include/hbcomp.h
  * harbour/include/hbapi.h
  * harbour/include/hbcompdf.h
  * harbour/include/hbexprb.c
  * harbour/include/hbexprop.h
  * harbour/source/vm/macro.c
  * harbour/source/compiler/hbcomp.c
  * harbour/source/compiler/complex.c
  * harbour/source/compiler/harbour.c
  * harbour/source/compiler/harbour.l
  * harbour/source/compiler/harbour.y
  * harbour/source/compiler/genjava.c
  * harbour/source/compiler/hbcomp.c
  * harbour/source/compiler/hbident.c
  * harbour/source/compiler/hbpcode.c
  * harbour/source/compiler/ppcomp.c
    * separated HB_COMP and HB_MACRO definitions and added HB_COMMON
      structure used when HB_COMMON_SUPPORT macro is set
    * hide HB_MACRO internal definitions in hbapi.h when HB_MACRO_SUPPORT
      is not set
    These modifications should help in future compiler and macro compiler
    integration into single binary.

    + added clipper compatible error message in unclosed structures
      In general we should cleanup rules to make error reporting more
      user friendly and Clipper compatible
    % eliminated unnecessary allocations
    + added int mode member to common part of HB_COMP and HB_MACRO
      structure. It's initialized to HB_MODE_MACRO or HB_MODE_COMPILER
    + add TOFIX note about memory leaks in cParamTypes and pParamClasses
      members of COMDECLARED structure. It's a part of unfinished strong
      typing code. I do not know what Ryszard plan to do with it so I'm
      leaving it as is. The part of strong typing which were operating
      on emulated HVM stack has been removed.
    * removed static variables from genjava.c. Also gencli.c and genobj32.c
      should be fixed but this will not make this code working so I haven't
      touched it.
    * changed 3-rd parameter of hb_compIdentifierNew() from BOOL to int.
      Now it can have the following values: HB_IDENT_STATIC, HB_IDENT_FREE,
      HB_IDENT_COPY. This modification will allow in the future using common
      for static and dynamic symbol hash table without additional source code
      changes. I also plan to use identifier hash table in PP the reduce
      number of memory allocations and speed-up preprocessing by using
      second level hashing for hash keys.

  * harbour/source/common/expropt1.c
  * harbour/source/common/expropt2.c
    * changed HB_MACRO_SUPPORT to HB_COMMON_SUPPORT to automatically detect
      possible conflicts between compiler and macro compiler
    ! removed first detected conflict which existed for long time
    + added hb_compExprMacroAsAlias() function to convert HB_ET_VARIABLE
      expression to HB_ET_ALIAS.

  * harbour/source/macro/macro.y
    ! fixed using prefix&macro-> and &macro.sufix-> when macro cannot be
      substituted by compiler, f.e.:
         M->v := NIL
         x := "&v.1->fld"
         M->v := "v"
         M->v1:= "data"
         ? &x
    ! fixed memory leak in macro substituted expression compilation

  * harbour/source/vm/macro.c
    ! fixed initialization of some HB_MACRO members
    ! fixed value returned for type("&V->F") when alias does not exist
    - removed not longer used hb_comp_bShortCuts global variable
2006-11-28 01:10:34 +00:00
Przemyslaw Czerpak
9cd2098d6d 2006-11-23 20:00 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbapi.h
  * harbour/include/hbcomp.h
  + harbour/include/hbcompdf.h
  * harbour/include/hberrors.h
  * harbour/include/hbexpra.c
  * harbour/include/hbexprb.c
  * harbour/include/hbexprc.c
  * harbour/include/hbexprop.h
  * harbour/include/hbmacro.h
  * harbour/include/hbpp.h
  * harbour/include/hbvm.h
  * harbour/source/common/expropt1.c
  * harbour/source/common/expropt2.c
  * harbour/source/compiler/Makefile
  * harbour/source/compiler/cmdcheck.c
  * harbour/source/compiler/complex.c
  * harbour/source/compiler/genc.c
  * harbour/source/compiler/gencc.c
  * harbour/source/compiler/gencli.c
  * harbour/source/compiler/gencobj.c
  * harbour/source/compiler/genhrb.c
  * harbour/source/compiler/genjava.c
  * harbour/source/compiler/genobj32.c
  * harbour/source/compiler/harbour.c
  * harbour/source/compiler/harbour.l
  * harbour/source/compiler/harbour.y
  * harbour/source/compiler/hbcomp.c
  * harbour/source/compiler/hbdead.c
  * harbour/source/compiler/hbfix.c
  * harbour/source/compiler/hbfunchk.c
  * harbour/source/compiler/hbgenerr.c
  * harbour/source/compiler/hbident.c
  * harbour/source/compiler/hbpcode.c
  * harbour/source/compiler/ppcomp.c
  * harbour/source/macro/macro.y
  * harbour/source/pp/ppcore.c
  * harbour/source/pp/ppgen.c
  * harbour/source/pp/pplib.c
  * harbour/source/vm/cmdarg.c
  * harbour/source/vm/estack.c
  * harbour/source/vm/fm.c
  * harbour/source/vm/macro.c
  * harbour/utils/hbpp/hbpp.c
  * harbour/utils/hbpp/hbpp.h
  * harbour/utils/hbpp/hbppcomp.c
  * harbour/utils/hbpp/hbppcore.c
  * harbour/utils/hbpp/hbpplib.c
  * harbour/utils/hbpp/pragma.c
    * changed the internal compiler API to be MT safe.
      All global and static non constant variables replaced by
      HB_COMP structure which have all compiler context settings.
      It's possible to allocate simultaneously many compiler contexts
      and compile code. Only constant/read only variables are shared.
      In macro compiler HB_COMP is replaced by HB_MACRO.
      In source code I everywhere used to macros: HB_COMP_DECL and
      HB_COMP_PARAM which are equivalents of old HB_MACRO_DECL and
      HB_MACRO_PARAM definitions.
      We will only have to change compiler FATAL errors support to
      not execute exit() for non batch systems.
    * make macro compiler fully MT safe
    * removed not longer used definitions and variables
    ! add direct accessing to PP line number information - it fixes missing
      line numbers reported recently
    ! added generating .ppo files when tokens are teken directly by compiler
      - it fixes empty .ppo file problem
    ! clear hb_stack internall variables after removing hb_stack to avoid
      possible GPF if application still works and try to access unexsiting
      hb_stack
    ! do not allocate new memory block when final FM statistic report is
      generated - it fixes problem with GPF when application compiled with
      FM statistic exits and CLIPPER envvar is set.
    ! fixed memory leak hb_cmdargCheck()
    ! added to harbour.y symbol destructors - it should fixes memory leaks
      in syntax errors but it uses quite new bison feature which is not
      fully supported yet. Unfortunately it's also not MT safe and the
      destructors implementation in 1.875c does not respect %parse-param.
      Bison documentation says that it should so I hope it will be fixed
      soon (or maybe even already is in the newest bison versions) before
      I'll add multi context compilation support. If not then I will have
      to add some workaround. I can pass compiler context pointer inside
      YYSTYPE using hack in a lexer but it will force really huge number
      modifications in existing bison rules so probably it will be much
      easier to fix bison or write a small tool to update generated parser.
    * other modifications - the total size of patch is nearly 1MB and
      detail description will have to take me few days.
2006-11-23 18:57:54 +00:00
Przemyslaw Czerpak
0cada37011 2006-11-21 03:30 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/common.mak
  * harbour/source/compiler/Makefile
  * harbour/include/hbcomp.h
  * harbour/include/hbexprb.c
  * harbour/include/hbexprc.c
  * harbour/source/compiler/cmdcheck.c
  * harbour/source/compiler/genc.c
  * harbour/source/compiler/harbour.c
  * harbour/source/compiler/harbour.l
  * harbour/source/compiler/harbour.slx
  * harbour/source/compiler/harbour.y
  * harbour/source/compiler/hbgenerr.c
  * harbour/source/compiler/hbident.c
  * harbour/source/compiler/ppcomp.c
  + harbour/source/compiler/complex.c
    + added new PP based compiler lexer - it's smaller, MT safe and a
      little bit faster then then the FLEX version.
    + added HB_COMP structure to hold compiler data in future MT version
    + added global variable HB_COMP_PTR hb_comp_data to make conversion
      to MT easier - now it holds only PP and lexer data.
    * update PP related code in compiler to be MT safe
    + added %pure-parser, %parse-param and %lex-param for bison to generate
      MT safe grammar parser.
    * updated FLEX to work with recent compiler modifications and pure-parser
      bison API

  * harbour/makefile.bc
  * harbour/makefile.vc
  * harbour/source/macro/Makefile
  * harbour/source/macro/macro.l
  * harbour/source/macro/macro.y
  * harbour/source/macro/macrolex.c
    * use hb_macro prefix instead of hb_comp in bison/flex parser/lexer
      used in macro compiler to avoid possible conflicts in the future
    * separated lexer data

  * harbour/include/hbapi.h
  * harbour/include/hbpp.h
  * harbour/source/pp/ppcore.c
  * harbour/source/pp/ppgen.c
  * harbour/source/pp/pplib.c
  * harbour/source/vm/macro.c
    * removed not used members from HB_MACRO structure to make it
      cleaner before creating common to compiler and macro compiler
      structure
    + added new token HB_PP_TOKEN_EPSILON
    + added void * cargo parameters passed to executed user functions
    + hb_pp_tokenGet(), hb_pp_tokenToString(), hb_pp_tokenBlockString()
      functions for new PP based compiler lexer

  * harbour/utils/hbpp/hbpp.c
  * harbour/utils/hbpp/hbpp.h
  * harbour/utils/hbpp/hbppcomp.c
  * harbour/utils/hbpp/hbppcore.c
  * harbour/utils/hbpp/hbpplib.c
  * harbour/utils/hbpp/pragma.c
    * updated to compile with recent compiler header file modifications


    PP, new lexer and most of grammar parser should be MT safe. Now we should
    update all compiler functions to pass pointer to HB_COMP data structure
    where we should all current global variables. This structure as first
    member should have HB_CMPCOMMON structure which will hold common to
    compiler and macro compiler data. Ryszard I think you are the best person
    to define this structure.

    We have new lexer which is MT safe but please note that it has to be
    extensively tested so I would like to ask everybody to compile as much
    as possible different code and check if the final programs work as
    expected. Working on new code I removed some limitations existing in
    FLEX though not all. At the beginning I tried to replicate the exact
    FLEX behavior but I've found that in few places it does not work as
    it should so I begin to encode rules in a way which remove some
    limitations. In fact now it's much easier to control some things.
    I kept the FLEX code working and made all necessary modifications
    so it still can be used but keeping FLEX working cost us IMHO too
    much. It's not possible to introduce some improvements to grammar
    parser. All identifiers, keyword and macros returned by new lexer
    are converted to upper letters, do not have to be freed by hb_xfree()
    and is guarantied that will be always accessible. So from grammar file
    we can remove all hb_compIdentifierNew( hb_strupr($1), TRUE ) what
    should give noticeable speed improvement but will break the FLEX code.
    Ryszard and other you will have to decide if we will support FLEX in
    the future. We can also clean the code and remove most of other
    redundant hb_strupr() and hb_strdup() used in many places. BTW only
    one terminal symbol can be returned with lower letters: DOIDENT
    and I make it intentionally so it's possible to use:
         DO prog1 WITH "sth"
    on case sensitive file systems so this symbol should be cloned in
    upper cases as function symbol but used without modification as
    file name. It's current behavior but I'm not sure you will want
    to keep it. Maybe compiler switch to always convert file names
    created from
         DO <id> [WITH <params,...>]
    to lower cases will be better. Please think about it.
2006-11-21 02:29:33 +00:00
Przemyslaw Czerpak
8d38c093b4 2006-11-17 13:30 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbapi.h
  * harbour/source/common/hbstr.c
  * harbour/source/compiler/harbour.l
  * harbour/source/macro/macro.l
  * harbour/source/macro/macro.slx
  * harbour/source/compiler/harbour.slx
    * changed parameters in function: hb_compStrToNum() now the string
      size is passed explicitly so it can work with strings which does
      not have trailing ASCII NUL character.

  * harbour/source/macro/macro.y
    * indenting

  * harbour/include/hbmacro.h
  * harbour/source/common/hbstr.c
  * harbour/source/macro/macro.l
  * harbour/source/macro/macro.y
    * added two new functions for macro compiler: hb_macroLexNew() and
      hb_macroLexDelete() to clearly separate lexer from grammar parser.

  * harbour/source/compiler/harbour.l
  * harbour/source/common/hbstr.c
  * harbour/source/pp/ppcore.c
    * added error generation for wrong e"..." strings and fixed \" quoting
    * removed \q quoting

  * harbour/source/pp/ppcore.c
  * harbour/source/pp/ppgen.c
    * added small description in headers

  * harbour/common.mak
  * harbour/source/pp/Makefile
  * harbour/source/pp/pplib.c
  + harbour/source/pp/pplib2.c
  * harbour/include/hbextern.ch
    + added auto destructor for allocated PP context, it's not longer
      necessary to execute __PP_FREE() so this function was moved from
      the standard .prg API to file with backward compatible functions
    * changed __PREPROCESS() to __PP_PROCESS()
    * moved setting std rules to separate file so now if user uses PP
      with only his own rules we are not forcing linking static tables
      which are quite huge (over 100kb)
      To include stdandard rules in static binaries user should add
      to his code:
         REQUEST __PP_STDRULES

  + harbour/source/pp/pplib3.c
    * old PP functions for backward compatibility:
         __PPADDRULE(), __PREPROCESS(), __PP_FREE()
      Please note that using this function is not MT safe. They should
      work like with old PP code. Using any of this function automatically
      forces linking __PP_STDRULES
2006-11-17 12:29:24 +00:00
Przemyslaw Czerpak
c448973306 2006-11-15 14:20 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbapi.h
    + added
         void * pLex;
      member to HB_MACRO structure - it will be necessary for MT safe
      macro parser

  * harbour/include/set.ch
  * harbour/include/hbexprb.c
  * harbour/source/macro/macro.l
  * harbour/source/macro/macro.y
    * indenting, formatting and converting tabs to spaces

  * harbour/include/hbpp.h
  * harbour/source/compiler/ppcomp.c
  * harbour/source/pp/ppcore.c
  * harbour/source/pp/ppgen.c
  * harbour/source/pp/pplib.c
    * make HB_PP_TOKEN structure public for other code and changed
      public PP API to not force including static rules by programs
      which does not need them.
    + added basic API for using PP as lexer
    * divided HB_PP_TOKEN_MACRO to HB_PP_TOKEN_MACROVAR and
      HB_PP_TOKEN_MACROTEXT and mark
         [<keyword>][&<keyword>[.[<nextidchars>]]]+
      as HB_PP_TOKEN_MACROTEXT not pair HB_PP_TOKEN_KEYWORD and
      HB_PP_TOKEN_MACRO
      It allows easier integration PP as (macro)compiler lexer and
      fixes preprocessing [<keyword>][&<keyword>[.[<nextidchars>]]]+
      in some patterns.

  * harbour/utils/hbtest/Makefile
    + added PP library to linked library list

  * harbour/source/macro/macro.y
    + added seaport to use PP as lexer. It's disabled by default and
      can be enabled using by defining HB_PP_MACROLEX. It eliminates
      using FLEX or SIMPLEX lexer in macro compiler. Now it emulates
      the behavior of FLEX lexer because I wanted to minimize the
      modification but in fact because parsed token are freed when
      macro compiler finish its job then we can resolve RT memory
      leaks which apear during parsing wrong expressions. It will be
      enough to drop allocating memory for new terminal symbols and
      using them as is like in compiler. It will also quite nice
      simplify include/hbexpr*.c code and will allow to move some
      functions to COMMON library. I want to make also pure compiler
      code MT safe so I will have to add passing pointer to a structure
      with compiler context just like in macro compiler. It means that
      if we define a structure which will be common to compiler and macro
      compiler with local (not common) data stored in other structure for
      which will will keep only a pointer then we will be able to move most
      of include/hbexpr*.c code to common library. But I do not want to
      make farther modification without consultation without Ryszard.
      Also to make PP default lexer some farther modifications should
      be done in core PP code and include/hbexpr*.c files to not reduce
      the speed. Now using HB_PP_MACROLEX for sure will have to cause
      speed reduction in macro compiler. But if we make necessary
      modifications then we should keep at least the same speed or
      probably reach noticeable better results.
2006-11-15 13:21:20 +00:00
Marek Paliwoda
66695f622d 2006-11-09 09:45 UTC+0100 Marek Paliwoda (mpaliwoda at interia pl)
* harbour/makefile.bc
     * Adapted to the new Preprocessor utility ppgen.exe
     * Cleaned hbpp.exe dependecies due to recent changes
   * harbour/makefile.vc
   * harbour/common.mak
     * Cleaned hbpp.exe dependecies due to recent changes
   * harbour/include/hbapi.h
     * Added HB_EXPORT to hb_gcAlloc()
   * harbour/include/hbstack.h
     * Added HB_EXPORT to hb_stackSelfItem()
   * harbour/source/vm/fm.c
     * Added dipslaying contents of unreleased blocks at
     program exit, together with logging unreleased memory
     blocks report to fm.log file. Borrowed from xharbour.
2006-11-09 08:38:54 +00:00