Commit Graph

48 Commits

Author SHA1 Message Date
Przemyslaw Czerpak
a1f50d4447 2008-05-20 20:31 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/bin/hb-func.sh
    * added HB_USR_LIBS set during build time to list of predefined libs
      in hb* scripts

  * harbour/source/rtl/hbgtcore.c
    ! fixed horizontal scrolling. Warning CTIII does not support
      horizontal scrolling and ignores 6-th scroll parameters.
      This behavior is intentionally not replicated in CTWIN
      though it can be easy added if someone will need it but
      covered with some macro to not change default builds.
      It will be enough to overload SCROLL() method and set
      iCol = 0 before calling SUPER_SCROLL().
2008-05-20 18:31:54 +00:00
Przemyslaw Czerpak
9ad3e8b2eb 2008-04-18 01:41 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbapigt.h
  * harbour/source/rtl/gtapi.c
    ! changed USHORT hb_gtColorToN( char * szColorString ) to
      int hb_gtColorToN( char * szColorString ) - it should be the same
      type as indexes in hb_gtColorsToString() functions

  * harbour/source/rtl/hbgtcore.c
    * return -1 from COLORNUM() method when passed color is not
      valid color string

  * harbour/contrib/hbct/screen2.c
  * harbour/contrib/hbct/color.c
  * harbour/contrib/hbct/screen1.c
  * harbour/contrib/hbct/ctwfunc.c
  * harbour/contrib/hbnf/color2n.c
  * harbour/contrib/gtwvg/wvtcore.c
    * updated to respect -1 returned for wrong color strings

  * harbour/source/rtl/tget.prg
    * updated to respect -1 returned for wrong color strings
      Viktor please check me, now it's simpler and hbtest does not
      reports any errors so I guess that this version will work like
      in Clipper also for :colorSpec := "R,X,Y,0" or similar

  * harbour/source/rtl/tobject.prg
  * harbour/source/debug/dbgbrwsr.prg
    * formatting
2008-04-17 23:42:21 +00:00
Przemyslaw Czerpak
6c7feb0eac 2008-03-26 16:54 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/rtl/gtos2/gtos2.c
    * small changes, removed some un-needed code
      - by Maurilio Longo in xHarbour
    ! use screen buffer in BYTEs instead of USHORTs to avoid possible
      problems on big endian machines. I do not know if such OS2 ports
      exist but this code should be also endian independent like rest
      of Harbour code

  * harbour/source/rtl/hbgtcore.c
    ! Fixed screen buffer corruption on little-endian platforms in
      hb_gt_def_ColdArea() - fixed by Phil Krylov in xHarbour - many thanks
2008-03-26 15:55:01 +00:00
Przemyslaw Czerpak
9cb4e6047d 2008-03-05 19:10 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/contrib/hbct/screen2.c
    ! fixed possible vary bad bug (memory buffer overflow) in SCREENSTR()

  * harbour/source/rtl/hbffind.c
    ! fixed possible GPF in some *nixes

  * harbour/source/vm/classes.c
    ! do not execute the same destructor inherited from different parent
      classes more then once

  * harbour/source/rtl/transfrm.c
    ! fixed bug with '9' used as stop condition of function pattern
      this character cannot be stripped, f.e.:
        ? transform( "abc", "@_99*" )
    ! fixed bug with '*' or '$' used with @), f.e.:
        ? transform( -12345, "@) $999999" )
    ! fixed replacing '.' with ',' when @E is used without picture part, f.e.:
        ? transform( 123.45, "@E" )
    ! fixed ',' conversions
        ? transform( 12.34,"@E ab,cd.ef9,9.99,.--" )
    ! fixed bug with picture starting with ".", f.e.:
	? transform( 0.3456, ".999" )
    ! fixed "@(" and "@)" conversions, f.e.:
        ? transform( -12345, "@) 1999*999" )
    ! fixed late oveflow detection in "@(" and "@)", f.e.:
        ? transtest( -12345, "@( 6798^999" )
    ! fixed "@E" conversion for dates to keep user delimiters set in
      _SET_DATEFORMAT, f.e.:
        set( _SET_DATEFORMAT, "mm:dd:yyyy" ); ? transform( date(), "@E" )
        set( _SET_DATEFORMAT, "yyyy<mm>dd" ); ? transform( date(), "@E" )
      Please note that Harbour is not strictly Clipper compatible here
      because it respects _SET_DATEFORMAT set by user.
    ! fixed 64bit integer conversion by eliminating conversion to
      'double' f.e.:
        ? transform(  1234567890123456789, "99999999999999999999" )
        ? transform( -1234567890123456789, "99999999999999999999" )
    ! some other fixes, see regression test transtst.prg
    % speed improvement in numeric conversions

  + harbour/tests/transtst.prg
    + added regression test for transform function

  * harbour/utils/hbtest/rt_trans.prg
    * disabled transform() tests for "@E" and result smaller then 5 bytes
      CA-Cl*pper do not check result size and always exchanges
      bytes 1-2 with bytes 4-5 for @E conversion. It's buffer overflow
      bug and I do not want to replicate it inside our transform
      implementation. It also causes that the results for for strings
      smaller then 5 bytes behaves randomly.
      In fact precise tests can show that it's not random behavior
      but CA-Cl*pper uses static buffer for result and when current one
      is smaller then 5 bytes then first two bytes are replaced with
      4-5 bytes from previous result which was length enough, f.e.:
               ? transform( "0123456789", "" )
               ? transform( "AB", "@E" )
               ? transform( "ab", "@E" )
      Replicating exact CA-Cl*pper behavior it's trivial (it will be enough
      to use static buffer two and not check the size of current result) but
      IMHO it's bug.

  * harbour/source/rtl/round.c
    * added strictly Clipper compatible code covered by HB_C52_STRICT
      and comment about possible difference in Harbour.

  * harbour/include/hbgtinfo.ch
  * harbour/source/rtl/hbgtcore.c
  * harbour/source/rtl/gtxwc/gtxwc.c
  * harbour/source/rtl/gtsln/gtsln.c
  * harbour/source/rtl/gttrm/gttrm.c
  * harbour/source/rtl/gtwvt/gtwvt.c
    + added HB_GTI_ISUNICODE - it returns logical value with information
      about Unicode mode in active GT driver - it's necessary for proper
      CP initialization in some GTDs which can work in both mode depending
      on client side settings

  * harbour/source/rtl/gttrm/gttrm.c
    * improved UTF-8 detection
    * added automatic PuTTY detection
    * improved PuTTY and some xterm key handling
    * added some missing RXVT keys
2008-03-05 18:10:52 +00:00
Viktor Szakats
80e4b3ae70 2008-01-26 07:53 UTC+0100 Viktor Szakats (harbour.01 syenar.hu)
* source/pp/pplib.c
   * source/rtl/run.c
   * source/rtl/hbgtcore.c
   * source/rtl/philesx.c
   * source/rtl/strzero.c
   * source/vm/runner.c
   * source/vm/debug.c
   * source/vm/itemapi.c
   * source/vm/arrayshb.c
   * source/vm/classes.c
   * source/rdd/dbfntx/dbfntx1.c
   * source/rdd/dbfcdx/dbfcdx1.c
     ! Replaced 9999 internal and RT error codes with 
       unique ones, in new Harbour ranges:
       RT/PP: 1001-1999
       RT/BASE: 6001-6999
          runner: 6101-6199
       Internal/misc: 6001-6999
       Internal/RDD: 7001-7999
          CDX: 7001-7099
          NTX: 7101-7199
       NOTE: If you find some more 9999s in the core code, 
             pls tell.
2008-01-26 06:54:55 +00:00
Viktor Szakats
a92f87015d 2008-01-26 06:27 UTC+0100 Viktor Szakats (harbour.01 syenar.hu)
* tests/gfx.prg
   * tests/wcecon.prg
   * tests/gtchars.prg
   * tests/gtkeys.prg
   * include/hbgtinfo.ch
   * source/rtl/hbgtcore.c
   * source/rtl/gtkbstat.c
   * source/rtl/gtdos/gtdos.c
   * source/rtl/gtwin/gtwin.c
   * source/rtl/gtxwc/gtxwc.c
   * source/rtl/gtos2/gtos2.c
   * source/rtl/gtcrs/gtcrs.c
   * source/rtl/gtalleg/gtalleg.c
   * source/rtl/gtstd/gtstd.c
   * source/rtl/gtsln/gtsln.c
   * source/rtl/gttrm/gttrm.c
   * source/rtl/gtpca/gtpca.c
   * source/rtl/gtgui/gtgui.c
   * source/rtl/gtcgi/gtcgi.c
   * source/rtl/gtwvt/gtwvt.c
   * contrib/hbgtwvg/gtwvg.c
     ! Some minor formatting to the .ch file. Removed 
       reference to non-existing doc/gtinfo.txt.
     * Using HB_GTI_* instead of GTI_* in Harbour files.
2008-01-26 05:29:20 +00:00
Przemyslaw Czerpak
4d9930caa6 2008-01-09 15:03 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/vm/estack.c
    * added missing static to s_initSymbol declaration

  * harbour/include/hbgtinfo.ch
  * harbour/source/rtl/scroll.c
    * formatting

  * harbour/common.mak
    * added empty line necessary for some make systems (f.e. wmake)

  * harbour/bin/hb-func.sh
    * changed system libs order to avoid problems on some platforms

  * harbour/bin/pack_src.sh
    * collect information about repository files using 'svn status -v'
      command instead of scanning .svn/entries files to avoid problems
      with different formats used by SVN

  * harbour/include/hbchksum.h
  * harbour/include/hbset.h
    ! added missing extern in few function prototypes

  * harbour/include/hbclass.ch
    * use HB_CLS_PARAM_LIST macro instead of ... for strict C52 mode

  * harbour/source/common/hbfsapi.c
    + added missing const to one declaration

  * harbour/source/common/hbstr.c
    * minor cleanup in hb_stricmp()

  * harbour/source/rtl/inkey.c
    ! casting to avoid negative values during char to int translation

  * harbour/source/rtl/mouse53.c
    * added one internal definition

  * harbour/source/rtl/philes.c
    * removed unnecessary #include(s)
    * added missing const to one declaration

  * harbour/source/rtl/valtype.c
  * harbour/source/vm/hashfunc.c
    * cleanup RT error call to eliminate hb_paramError() function

  * harbour/source/pp/pplib.c
  * harbour/source/vm/runner.c
  * harbour/source/vm/debug.c
  * harbour/source/vm/arrayshb.c
  * harbour/source/vm/classes.c
  * harbour/source/vm/hvm.c
  * harbour/source/rtl/hbgtcore.c
  * harbour/source/rtl/gtfunc.c
  * harbour/source/rtl/hbinet.c
  * harbour/source/rtl/hbregex.c
  * harbour/source/rtl/idle.c
  * harbour/source/rtl/errorapi.c
  * harbour/source/rtl/hbtoken.c
  * harbour/source/rtl/direct.c
  * harbour/source/rdd/dbcmd.c
  * harbour/source/rdd/dbcmd53.c
  * harbour/source/rdd/fieldhb.c
  * harbour/source/rdd/hbsix/sxcompr.c
  * harbour/source/rdd/hbsix/sxcrypt.c
  * harbour/source/compiler/hbcmplib.c
  * harbour/contrib/hbrddads/adsfunc.c
  * harbour/contrib/hbrddads/adsmgmnt.c
    - removed unnecessary calls to hb_ret()
    % replaced hb_itemRelease( hb_itemReturn( pItem ) ) with
      hb_itemReturnRelease( pItem )
    % replaced hb_itemPut*( hb_arrayGetItemPtr( pArray, ... ), ... ) with
      hb_arraySetNI( pArray, ... )

  * harbour/source/macro/macro.y
  * harbour/source/macro/macro.yyc
  * harbour/contrib/xhb/cstructc.c
  * harbour/contrib/hbw32/w32_ole.c
  * harbour/contrib/hbgtwvg/wvtcore.c
    * cleaned typos with double ;;

  * harbour/source/vm/extend.c
  * harbour/source/rtl/math.c
    * cleaned HB_EXPORT usage

  * harbour/source/pp/ppcore.c
    ! fixed Harbour extension which allows to use match marker
      at the beginning of rule definition

  * harbour/source/main/harbour.c
    ! fixed hex conversion in FM log module - fix done by Phil Krylov
      in xHarbour

  * harbour/source/rdd/nulsys/nulsys.c
    + added dummy version of DBEVAL() and DBFILTER() - these functions
      are used in RTL

  * harbour/contrib/hbct/bitnum.c
    + added INTNEG(), INTPOS()

  + harbour/contrib/hbct/ctrand.prg
    + added RANDOM(), RAND() - borrowd from xHarbour by Pavel Tsarenko

  + harbour/contrib/hbct/setrc.c
    + added SETRC()

  * harbour/contrib/hbct/getinput.prg
    % minor optimization

  * harbour/contrib/hbct/Makefile
  * harbour/contrib/hbct/common.mak
    * updated for new files

  * harbour/contrib/hbnf/tempfile.prg
    * use HB_FTempCreate() - modification borrowed from xHarbour
      TOFIX this function uses hb_isbyref() which does not exist
      in Harbour

  * harbour/config/w32/msvc.cf
    + added -nologo flag for cl.exe (Phil Krylov's modification borrowed
      from xHarbour

  * harbour/config/w32/mingw32.cf
    - removed repeated definitions

  * harbour/config/w32/install.cf
    ! added alternative install rule for command.com with max line size limit
2008-01-09 14:04:12 +00:00
Przemyslaw Czerpak
cb47250bfc 2007-12-17 21:21 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbapigt.h
  * harbour/include/hbgtcore.h
  * harbour/source/rtl/gtapi.c
  * harbour/source/rtl/hbgtcore.c
  * harbour/source/rtl/gt_tpl/gt_tpl.c
  * harbour/source/rtl/gtdos/gtdos.c
  * harbour/source/rtl/gtwin/gtwin.c
  * harbour/source/rtl/gtxwc/gtxwc.c
  * harbour/source/rtl/gtos2/gtos2.c
  * harbour/source/rtl/gtcrs/gtcrs.c
  * harbour/source/rtl/gtsln/gtsln.c
  * harbour/source/rtl/gttrm/gttrm.c
  * harbour/source/rtl/gtpca/gtpca.c
  * harbour/source/rtl/gtgui/gtgui.c
  * harbour/source/rtl/gtwvt/gtwvt.c
  * harbour/source/rtl/gtcgi/gtcgi.c
  * harbour/source/rtl/gtstd/gtstd.c
  * harbour/contrib/hbct/ctwin.c
  * harbour/contrib/hbgtwvg/gtwvg.c
  * harbour/source/rtl/gtalleg/gtalleg.c
  * harbour/source/rtl/gtalleg/ssf.h
  * harbour/source/rtl/gtalleg/fixedth.sfc
    * added missing const to few declarations
    * formatting and minor code cleanup

  * harbour/source/rtl/hbgtcore.c
    ! fixed GTNUL registration

  * harbour/source/rtl/gtcgi/gtcgi.c
  * harbour/source/rtl/gtstd/gtstd.c
    * moved static variables to dynamic GT area

  * harbour/contrib/hbct/files.c
    ! fixed DOS version
2007-12-17 20:22:32 +00:00
Przemyslaw Czerpak
59ebbe7064 2007-12-11 16:05 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/rtl/hbgtcore.c
    * formatting

  * harbour/source/vm/hvm.c
    ! fixed typo in HB_TRACE message

  * harbour/source/rtl/gtwvt/gtwvt.h
  * harbour/source/rtl/gtwvt/gtwvt.c
    * updated for multi window usage

  * harbour/source/vm/maindllp.c
    * use MessageBox() instead of hb_errInternal() - thanks to Jon Jagger
      for information about the problem
2007-12-11 15:06:07 +00:00
Przemyslaw Czerpak
1b46d933d7 2007-12-07 10:43 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbgtcore.h
  * harbour/source/rtl/hbgtcore.c
  * harbour/source/rtl/gtapi.c
  * harbour/source/rtl/inkeyapi.c
  * harbour/source/rtl/mouseapi.c
    - removed hb_gt_*(), hb_inkey_*(), hb_mouse_*() functions
    + implemented HB_GTSELF_*() functions and changed HB_GTSUPER_*()
      ones to operate on GT context passed ad 1-st parameter.
      Now GT API allows to create many GTs working simultaneously
    + added hb_gt_Base() core function which returns GT context
      it will be extended soon to allow using many GT contexts,
      setting thread default one or switch between them using some
      .prg function.

  * harbour/source/rtl/gtstd/gtstd.c
  * harbour/source/rtl/gtcgi/gtcgi.c
  * harbour/source/rtl/gtpca/gtpca.c
  * harbour/source/rtl/gttrm/gttrm.c
  * harbour/source/rtl/gtxwc/gtxwc.c
  * harbour/source/rtl/gtcrs/gtcrs.c
  * harbour/source/rtl/gtcrs/gtcrs.h
  * harbour/source/rtl/gtsln/gtsln.c
  * harbour/source/rtl/gtsln/gtsln.h
  * harbour/source/rtl/gtsln/kbsln.c
  * harbour/source/rtl/gtsln/mousesln.c
  * harbour/source/rtl/gtalleg/gtalleg.c
  * harbour/source/rtl/gtgui/gtgui.c
  * harbour/source/rtl/gtwin/gtwin.c
  * harbour/source/rtl/gtwvt/gtwvt.h
  * harbour/source/rtl/gtwvt/gtwvt.c
  * harbour/contrib/hbct/ctwin.c
  * harbour/contrib/hbct/ctwin.h
  * harbour/contrib/hbct/ctwfunc.c
  * harbour/contrib/hbgtwvg/gtwvt.h
  * harbour/contrib/hbgtwvg/gtwvt.c
    * updated GT code for new GT API. I still haven't added GT cloning
      to them and only GTTRM is ready to use in multi window MT programs
      but now they can be systematically modified and it can be done
      locally without core code modifications.

  * harbour/contrib/hbgtwvg/wvtutils.c
    ! fixed some memory leaks in Unicode conversions
2007-12-07 09:44:03 +00:00
Przemyslaw Czerpak
9fdbf7de76 2007-12-04 12:51 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbgtcore.h
    + added some missing HB_GTSUPER_* functions

  * harbour/contrib/hbgtwvg/wvtcore.c
    * use hb_gt*() functions instead of hb_gt_*() ones

  * harbour/contrib/hbgtwvg/wvtutils.c
  * harbour/contrib/hbgtwvg/gtwvt.c
  * harbour/source/rtl/gtwin/gtwin.c
  * harbour/source/rtl/gtgui/gtgui.c
  * harbour/source/rtl/gtwvt/gtwvt.c
  * harbour/source/rtl/gttone.c
  * harbour/source/rtl/gtclip.c
    * minor cleanup in hb_gt_w32_*() function names

  * harbour/source/rtl/hbgtcore.c
  * harbour/source/rtl/gtclip.c
    * use common for all GT internal Clipboard buffer - thanks to Pritpal
      for a note
2007-12-04 11:52:20 +00:00
Przemyslaw Czerpak
62ed005979 2007-12-03 22:35 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/common.mak
  * harbour/source/rtl/Makefile
  * harbour/include/hbgtcore.h
  * harbour/source/rtl/hbgtcore.c
  * harbour/source/rtl/inkey.c
  + harbour/source/rtl/inkeyapi.c
    * moved hb_inkey*() functions to GT subsystem so now they can be
      overloaded by GT drivers and/or operate on different GT context

  * harbour/source/rtl/mouse53.c
    * eliminated to unused static variables

  * harbour/source/rtl/mouseapi.c
    * do not include unnecessary header files

  * harbour/source/rtl/gtchrmap.c
    * replaced // comment by /* ... */
2007-12-03 21:36:22 +00:00
Przemyslaw Czerpak
8abd2b93d8 2007-12-03 11:48 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbapigt.h
    * removed declaration for not existing function: hb_inkeyGet()

  * harbour/include/hbgtcore.h
  * harbour/source/rtl/hbgtcore.c
    * moved all static variables used by core GT code to HB_GT_BASE
      structure

  * harbour/source/rtl/inkey.c
    * cleanup

  * harbour/contrib/Makefile
    * moved HB_CONTRIBLIBS to the end build library list because they may
      need some other contrib libraries in dependences list
2007-12-03 10:48:50 +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
Przemyslaw Czerpak
a966524338 2007-11-21 19:59 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/rtl/hbgtcore.c
    + added emulation for clipboard in core GT code.
      Now: 
         hb_gtInfo( GTI_CLIPBOARDDATA ) -> <cClipData>
      and:
         hb_gtInfo( GTI_CLIPBOARDDATA, <cNewClipData> )
      is working in all GTs even if such functionality is not supported
      by OS.
2007-11-21 19:00:01 +00:00
Viktor Szakats
fde4638c38 2007-11-18 13:46 UTC+0100 Viktor Szakats (harbour.01 syenar.hu)
* contrib/xhb/hbcompat.ch
     + Added xhb SecondsSleep() translation.

   * contrib/freeimage/make_b32.bat
   * contrib/freeimage/make_vc.bat
   * contrib/firebird/make_b32.bat
   * contrib/firebird/make_vc.bat
     ! Some fixes.

   * contrib/libct/cttime.prg
     ! SECTOTIME() fix. Borrowed from xhb.

   * contrib/apollo/apollo.c
   * contrib/apollo/make_b32.bat
   * contrib/apollo/make_vc.bat
     ! Fixed and tested with latest downloadable package.

   * contrib/win32/w32_tprn.prg
   * contrib/win32/w32_prn.c
     + Minor fix (from xhb)

   * source/rtl/errorint.c
     ! Defaulting all string parameters to "" when they are NULL 
       to avoid any potential problems later in the function.

   * source/rtl/hbgtcore.c
     % Passing NULL instead of "" in hb_errInternal() calls.

   * source/vm/itemapi.c
     ! Internal error is lauched in case the parameters passed 
       to hb_itemPutCLConst() are violating string item rules.
       Thanks for Mindaugas for the suggestion.
       TOFIX: Since this violation will most probably happen in 
              contrib/win32 OLE code, we'll need to fix that 
              code too.

   * utils/hbmake/hbmake.prg
     ! Fixed to not request wvtgui.lib.
2007-11-18 12:46:48 +00:00
Przemyslaw Czerpak
5de7824e15 2007-11-12 16:09 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbapifs.h
  * harbour/source/common/hbfsapi.c
    + added hb_fsMaxFilesError()

  * harbour/source/pp/ppcore.c
  * harbour/utils/hbpp/hbppcore.c
    * use hb_fsMaxFilesError() to avoid direct accessing of errno
      value - some compilers/platforms do not support errno

  * harbour/include/hbdate.h
  * harbour/source/rtl/seconds.c
    + added hb_dateMilliSeconds()

  * harbour/source/rtl/hbgtcore.c
  * harbour/source/rtl/idle.c
  * harbour/source/rtl/inkey.c
    * use hb_dateMilliSeconds() to avoid using clock_t clock()
      some compilers/platforms do not support it

  * harbour/include/hbwince.h
  * harbour/source/common/hbwince.c
    * disabled clock_t clock() emulation - it's not longer used
    + added some declarations for ANSI functions emulated by us
      for WinCE and some defines - code sent by Marek Paliwoda

  * harbour/include/hbwmain.c
  * harbour/source/vm/mainwin.c
    * always use unicode translations with WinMain() parameters for compilers
      which do not set UNICODE macro for WinCE

  * harbour/source/rtl/fserror.c
    * do not include errno.h for HB_WIN32_IO - it's not necessary

  * harbour/utils/hbver/hbverfix.c
    * do not include errno.h for _MSC_VER and HB_WINCE builds

  * harbour/contrib/libmisc/dates2.c
    - commented DATETIME() function - this was not standard DATETIME()
      value but raw ctime() function output and some compilers/platforms
      do not support ctime()

  * harbour/contrib/libnf/getenvrn.c
    + added HB_OS_WIN_32_USED

  * harbour/contrib/mtpl.mak
  * harbour/contrib/pdflib/pdflib.h
    * replaced TABs with SPACEs

  * harbour/include/hbsetup.ch
    ! reenabled HB_EXTENSION in default builds - disabling it makes
      a lot of RDD code unusable and breaks default builds due to
      insufficient dependences
2007-11-12 15:10:28 +00:00
Przemyslaw Czerpak
a3fc484d14 2007-11-07 13:53 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/pp/ppcore.c
  * harbour/source/rtl/hbgtcore.c
  * harbour/source/rtl/cdpapi.c
  * harbour/source/rtl/mlcfunc.c
  * harbour/source/vm/classes.c
  * harbour/source/common/reserved.c
  * harbour/source/compiler/hbpcode.c
  * harbour/source/compiler/gencc.c
  * harbour/source/compiler/hbfunchk.c
    * cleaned possible dangerous code reported by Chen - many thanks
2007-11-07 12:53:20 +00:00
Przemyslaw Czerpak
633ce223f1 2007-09-12 13:55 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/rtl/hbgtcore.c
    * changed default UNSELECTED collor from W/N to N/W
2007-09-12 11:57:57 +00:00
Przemyslaw Czerpak
08a3551742 2007-09-12 02:10 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/std.ch
    * cover ENDSEQUENCE translation with HB_C52_STRICT macro
    + added translations for END SWITCH, END WITH, END OBJECT

  * harbour/source/compiler/complex.c
  * harbour/source/compiler/harbour.y
  * harbour/source/compiler/harbour.yyc
  * harbour/source/compiler/harbour.yyh
    + added support for ENDSEQ[UENCE], ENDSW[ITCH] and ENDW[ITH]

  * harbour/source/rtl/hbgtcore.c
    ! changed string to color number translation to be fully Clipper
      compatible. Now I do not know any examples which we translate
      differently - if someone will find any them then please inform me.
      The only one intentional difference between Harbour and Clipper
      is in color number to string translation and background highlighting
      attribute "*", Clipper put it just before "/" as part of foreground
      color (f.e.: 248 => "N*+/W") but Harbour as part background color
      (f.e.: 248 => "N+/W*") - Clipper compatible behavior is enabled when
      Harbour is compiled with HB_C52_STRICT macro

  * harbour/utils/hbtest/rt_misc.prg
    * control the position of background highlighting attribute (*) in
      expected results depending on HB_C52_STRICT. Harbour passes correctly
      all included color translation tests.
2007-09-12 00:10:09 +00:00
Viktor Szakats
709de529ef 2007-09-11 23:34 UTC+0100 Viktor Szakats (harbour.01 syenar.hu)
* source/rtl/hbgtcore.c
     ! Fixed handling of some strangely formatted colorstrings
       mainly inside TGet(). The low-level functionality 
       modified is the colorstring to number conversion. The 
       only change is to continue (and not exit) on a non-std 
       char.

   * utils/hbtest/rt_misc.prg
     + Added some color string parsing tests. Some of them fail.

   * source/rtl/achoice.prg
   * source/debug/debugger.prg
   * utils/hbtest/hbtest.prg
   * utils/hbtest/rt_array.prg
     * Formatting.
2007-09-11 21:36:00 +00:00
Przemyslaw Czerpak
503c1ddf13 2007-09-02 17:27 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/hbgtmk.sh
  * harbour/tests/codebl.prg
  * harbour/tests/testprof.prg
  * harbour/tests/keywords.prg
  * harbour/tests/testpp.prg
  * harbour/make_rpm.sh
  * harbour/makefile.gc
  * harbour/bin/hb-mkslib.sh
  * harbour/include/hbexpra.c
  * harbour/include/hbmath.ch
  * harbour/include/hbrddntx.h
  * harbour/include/hbexprb.c
  * harbour/harbour.spec
  * harbour/contrib/dot/pp.prg
  * harbour/contrib/libct/ctwin.c
  * harbour/contrib/ole2/w32ole.c
  * harbour/contrib/hgf/win32/win32.c
  * harbour/contrib/mysql/mysql.ch
  * harbour/contrib/odbc/todbc.prg
  * harbour/contrib/odbc/sql.ch
  * harbour/contrib/hb_struc/hbstruc.ch
  * harbour/contrib/bmdbfcdx/bmdbfcdx1.c
  * harbour/contrib/msql/msql.ch
  * harbour/contrib/msql/readme.txt
  * harbour/source/pp/ppcore.c
  * harbour/source/rtl/gtdos/gtdos.c
  * harbour/source/rtl/gtxwc/gtxwc.h
  * harbour/source/rtl/hbgtcore.c
  * harbour/source/rtl/gtcrs/gtcrs.h
  * harbour/source/rtl/gtalleg/gtalleg.c
  * harbour/source/rtl/gtalleg/ssf.h
  * harbour/source/rtl/gtalleg/fixedth.sfc
  * harbour/source/rtl/gtchrmap.c
  * harbour/source/rtl/itemseri.c
  * harbour/source/rtl/gtstd/gtstd.c
  * harbour/source/rtl/gtsln/gtsln.h
  * harbour/source/rtl/gttrm/gttrm.c
  * harbour/source/rtl/gtpca/gtpca.c
  * harbour/source/rtl/hbhex.c
  * harbour/source/rtl/tget.prg
  * harbour/source/rtl/gtcgi/gtcgi.c
  * harbour/source/rtl/hbinet.c
  * harbour/source/vm/hvm.c
  * harbour/source/debug/dbgtobj.prg
  * harbour/source/debug/dbgwa.prg
  * harbour/source/common/expropt2.c
  * harbour/source/rdd/dbfcdx/dbfcdx1.c
  * harbour/source/rdd/dbffpt/dbffpt1.c
  * harbour/utils/hbpp/hbppcore.c
  * harbour/utils/hbpptest/pp_test.prg
  * harbour/utils/hbpptest/pretest.prg
  * harbour/make_tgz.sh
    * converted TABs to SPACEs
2007-09-02 15:28:05 +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
ac81836493 2007-08-23 14:30 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbgtcore.h
  * harbour/source/rtl/hbgtcore.c
    + added new GT method: SEMICOLD()

  * harbour/source/rtl/gtxwc/gtxwc.c
    * use SEMICOLD() for late console window initialization

  * harbour/source/rtl/gttrm/gttrm.c
    * use SEMICOLD() to not erase startup screen contnts.
      Now applications which uses GTTRM and only simple QOUT()/QQOUT()
      output will work like with GTSTD. It means that in *nixes we can
      use GTTRM as default GT driver for all Harbour utilities.

  * harbour/make_gcc.sh
  * harbour/make_tgz.sh
  * harbour/harbour.spec
    * changed default GT driver for *nixes from to GTSTD to GTTRM
2007-08-23 12:30:23 +00:00
Przemyslaw Czerpak
e19e015ae8 2007-07-14 22:55 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/rtl/gttrm/gttrm.c
    * added protection against corrupted by programmer screen buffer

  * harbour/source/rtl/hbgtcore.c
    * extended hb_gtColorToN() to recognize also "I", "N", "U" and
      numeric NN/NN attributes

  * harbour/contrib/libct/ftoc.c
    * cleanup

  * harbour/contrib/libct/Makefile
  * harbour/contrib/libct/makefile.bc
  * harbour/contrib/libct/makefile.vc
  - harbour/contrib/libct/color.prg
  - harbour/contrib/libct/invrtwin.prg
  + harbour/contrib/libct/color.c
    * rewritten INVERTATTR(), INVERTWIN(), COLORTON(), NTOCOLOR(),
      ENHANCED(), STANDARD(), UNSELECTED() in C code. Now COLORTON()
      and NTOCOLOR() use GT functions for color translations.
    ! fixed INVERTATTR() to not change blink and highlight attributes
    ! fixed INVERTWIN() to work with GT divers which do not use VGA
      compatible screen buffer
2007-07-14 20:55:26 +00:00
Przemyslaw Czerpak
8b5cf06681 2007-06-27 10:05 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/rtl/hbgtcore.c
  * harbour/source/rtl/gtdos/gtdos.c
  * harbour/source/rtl/gtwin/gtwin.c
  * harbour/source/rtl/gtxwc/gtxwc.c
  * harbour/source/rtl/gtcrs/gtcrs.c
  * harbour/source/rtl/gtstd/gtstd.c
  * harbour/source/rtl/gtsln/gtsln.c
  * harbour/source/rtl/gttrm/gttrm.c
  * harbour/source/rtl/gtpca/gtpca.c
  * harbour/source/rtl/gtcgi/gtcgi.c
    * added support for CP translation in OUTSTD()/OUTERR() when
      they are not redirected to console
2007-06-27 08:05:52 +00:00
Przemyslaw Czerpak
6fc278c406 2007-06-22 16:25 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/bin/pack_src.sh
    + added GTTRM to compressed file list

  * harbour/include/hbgtcore.h
    + added HB_GT_ATTR_UNDEF

  * harbour/source/rtl/hbgtcore.c
    * minor cleanup in COLD() method

  * harbour/source/rtl/gtchrmap.c
    * disable control characters when hb_charmap.def file cannot be found
      or there is no valid section for current terminal inside

  * harbour/source/rtl/gttrm/gttrm.c
    - removed OUTERR() and OUTSTD() method - the default one are enough
    + set CLIPKEY flag in GTI_ADDKEYMAP
2007-06-22 14:25:17 +00:00
Przemyslaw Czerpak
ba99e81cbf 2007-05-18 22:45 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbapierr.h
  * harbour/source/rtl/errorapi.c
    * changed 'char hb_errFuncName' to 'const char hb_errFuncName'

  * harbour/source/compiler/ppcomp.c
    * added note about Harbour exception in header

  * harbour/include/hbapifs.h
  * harbour/source/rtl/fserror.c
    + added hb_getFError(), hb_setFError()

  * harbour/source/rtl/philes.c
  * harbour/source/rtl/philes53.c
    * use hb_getFError()/hb_setFError() in F*() functions

  * harbour/source/rtl/disksphb.c
  * harbour/source/rtl/fssize.c
    * fixed setting hb_fsError()

  * harbour/source/rtl/console.c
  * harbour/source/rtl/dirdrive.c
  * harbour/source/rtl/diskspac.c
  * harbour/source/rtl/hbgtcore.c
  * harbour/source/rtl/philesx.c
  * harbour/source/rtl/set.c
  * harbour/source/rtl/gtcgi/gtcgi.c
  * harbour/source/rtl/gtpca/gtpca.c
  * harbour/source/rtl/gtstd/gtstd.c
    * removed code to save/restore hb_fsError()
2007-05-18 20:45:15 +00:00
Przemyslaw Czerpak
eeb38e90e7 2007-04-16 01:50 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/debug/debugger.prg
    * removed some not longer necessary GTWVW extensions

  * harbour/source/rtl/hbgtcore.c
  * harbour/contrib/libct/ctwin.c
    + added support for GTI_{NEW,GET,SET}WIN in CTWIN
      Now debugger can be used with CTWIN without any problems
2007-04-15 23:50:24 +00:00
Przemyslaw Czerpak
942d57e0f1 2007-04-16 00:20 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/common.mak
  * harbour/bin/pack_src.sh
  * harbour/source/vm/Makefile
  - harbour/source/vm/dbgentry.c
  * harbour/source/debug/Makefile
  + harbour/source/debug/dbgentry.c
    * moved dbgentry.c from HVM to DEBUG library

  * harbour/source/rtl/hbgtcore.c
    + added basic version of GTI_{NEW,GET,SET}WIN

  * harbour/include/hbapidbg.h
  * harbour/source/vm/hvm.c
  * harbour/source/debug/debugger.prg
  * harbour/source/debug/dbgentry.c
    + added set of .prg level functions (HB_DBG_*()) to control
      debugger internals
    * eliminated HB_INLINE() calls
    * use  to switch between user and debugger screen
    * cleaned debugger interface in HVM, removed unused variables
      added one common debug function
2007-04-15 22:20:37 +00:00
Przemyslaw Czerpak
c219f35080 2007-04-13 18:43 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/common.mak
  * harbour/source/rtl/Makefile
  + harbour/source/rtl/valtoexp.prg
    + added HB_VALTOEXP() and HB_CSTR()

  * harbour/source/debug/dbgthsh.prg
  * harbour/source/debug/debugger.prg
    * replaced CSTR() with HB_CSTR() and SETLASTKEY() with HB_SETLASTKEY()
      now debugger can be used without CT and TIP libraries

  * harbour/include/hbgtinfo.ch
  * harbour/source/rtl/hbgtcore.c
    + added GTI_ISMULTIWIN, GTI_GETWIN, GTI_SETWIN, GTI_NEWWIN
      and TODO note - it's not finished yet, work in progress
2007-04-13 16:43:28 +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
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
f63975287b 2006-12-18 19:30 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/config/w32/bcc32.cf
    * cleanup
  + harbour/config/w32/xcc.cf
    + added XCC support

  * harbour/contrib/btree/hb_btree.c
    * use hb_vmAtInit()/hb_vmAtExit() instead of INIT/EXIT functions defined
      from C code

  * harbour/contrib/libct/tab.c
    * casting

  * harbour/contrib/odbc/odbc.c
    ! removed #include <malloc.h> - it should not be used with new C
      compilers
      I think that we should replace this library with hbodbc from xHarbour.

  * harbour/contrib/ole/ole2.c
    * updated for XCC

  * harbour/include/hbdefs.h
    * include stdint.h if available

  * harbour/source/compiler/complex.c
    ! fixed yet another stupid mistake in WITHOBJECT token

  * harbour/include/hbpcode.h
  * harbour/include/hbxvm.h
  * harbour/source/compiler/genc.c
  * harbour/source/compiler/gencc.c
  * 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/hvm.c
    + added HB_P_SWAP <n> PCODE

  * harbour/include/hbcompdf.h
  * harbour/include/hbexpra.c
  * harbour/include/hbexprb.c
  * harbour/include/hbexprc.c
  * harbour/include/hbexprop.h
    ! fixed GPF during compilation of @:var, @:&var, @o:&var
    + added support for @o:&var and @:var, @:&var inside WITH OBJECT
      statement
    * changed PCODE generated of ++,--,+=,-=,...
      Now left side expression is evaluated _ONLY_ once and when object
      messages are used it's guarantied that exactly the same object
      variable will be used. It also fixes some problems which exists
      in Clipper. This optimization is enabled by -kh flag (by default)
      and can be disabled with -kc.
    % optimize ald macros in ++,--,+=,-=,... operations
    * add automatically "_" prefix when macro message is used in assignment
      context, f.e.:
         s:="osCode"
         o:=errorNew()
         ? o:&s
         o:&s := 100
         ? ++o:&s
         ? o:&s *= 5

  * harbour/include/hblang.ch
    - removed #xtranslate - this file is included by C code and some C
      compiler do not like unknown directives

  * harbour/utils/hbtest/rt_math.prg
    + added test code for <op>assign and (pre/post)(inc/dec)rementation,
      macro messages and WITH OBJECT

  * harbour/source/compiler/harbour.c
  * harbour/source/rdd/dbf1.c
  * harbour/source/rtl/errorapi.c
  * harbour/source/rtl/hbgtcore.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
    * casting and warning cleanup

  * harbour/utils/Makefile
    + added $(HB_UTILS)

  - harbour/utils/hbpp/hbpp.h
  + harbour/utils/hbpp/hbppdef.h
  * harbour/utils/hbpp/hbpp.c
  * harbour/utils/hbpp/hbppcomp.c
  * harbour/utils/hbpp/hbppcore.c
  * harbour/utils/hbpp/hbpplib.c
  * harbour/utils/hbpp/hbpptbl.c
  * harbour/utils/hbpp/pragma.c
    * renamed hbpp.h to hbppdef.h to avoid possible conflict with hbpp.h
      in include directory
    * casting and warning cleanup
2006-12-18 18:34:44 +00:00
Przemyslaw Czerpak
b86b5a8fe7 2006-12-08 05:55 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/bin/hb-func.sh
  * harbour/bin/hb-mkslib.sh
  * harbour/bin/postinst.sh
  * harbour/config/bsd/gcc.cf
  * harbour/config/darwin/gcc.cf
  * harbour/config/dos/owatcom.cf
  * harbour/config/hpux/gcc.cf
  * harbour/config/linux/gcc.cf
  * harbour/config/linux/owatcom.cf
  * harbour/config/os2/gcc.cf
  * harbour/config/sunos/gcc.cf
  * harbour/config/w32/watcom.cf
  * harbour/contrib/rdd_ads/ads1.c
  * harbour/contrib/rdd_ads/adsfunc.c
  * harbour/include/hbapifs.h
  * harbour/include/hbexprc.c
  * harbour/include/hbsetup.h
  * harbour/source/common/expropt2.c
  * harbour/source/common/hbdate.c
  * harbour/source/common/hbgete.c
  * harbour/source/common/hbstr.c
  * harbour/source/common/hbver.c
  * harbour/source/common/hbverdsp.c
  * harbour/source/compiler/cmdcheck.c
  * harbour/source/compiler/fixflex.c
  * harbour/source/compiler/gencobj.c
  * harbour/source/compiler/genobj32.c
  * harbour/source/compiler/harbour.c
  * harbour/source/compiler/harbour.l
  * harbour/source/compiler/harbour.y
  * harbour/source/compiler/harbour.yyc
  * harbour/source/compiler/hbfix.c
  * harbour/source/compiler/hbfunchk.c
  * harbour/source/pp/ppcore.c
  * harbour/source/pp/ppgen.c
  * harbour/source/pp/pplib.c
  * harbour/source/rdd/dbcmd.c
  * harbour/source/rdd/workarea.c
  * harbour/source/rdd/dbfcdx/dbfcdx1.c
  * harbour/source/rdd/dbffpt/dbffpt1.c
  * harbour/source/rdd/hsx/hsx.c
  * harbour/source/rtl/accept.c
  * harbour/source/rtl/ampm.c
  * harbour/source/rtl/console.c
  * harbour/source/rtl/defpath.c
  * harbour/source/rtl/errorint.c
  * harbour/source/rtl/filesys.c
  * harbour/source/rtl/fkmax.c
  * harbour/source/rtl/fstemp.c
  * harbour/source/rtl/hbffind.c
  * harbour/source/rtl/hbgtcore.c
  * harbour/source/rtl/langapi.c
  * harbour/source/rtl/seconds.c
  * harbour/source/rtl/set.c
  * harbour/source/rtl/tobject.prg
  * harbour/source/rtl/transfrm.c
  * harbour/source/rtl/gtcrs/chrmap.c
  * harbour/source/rtl/gtcrs/gtcrs.c
  * harbour/source/rtl/gtcrs/gtcrs.h
  * harbour/source/rtl/gtpca/gtpca.c
  * harbour/source/rtl/gtwvt/gtwvt.c
  * harbour/source/rtl/gtxwc/gtxwc.c
  * harbour/source/vm/classes.c
  * harbour/source/vm/cmdarg.c
  * harbour/source/vm/debug.c
  * harbour/source/vm/estack.c
  * harbour/source/vm/fm.c
  * harbour/source/vm/hvm.c
  * harbour/source/vm/macro.c
  * harbour/source/vm/proc.c
  * harbour/source/vm/runner.c
  * harbour/utils/hbmake/hbmlang.c
  * harbour/utils/hbpp/hbpp.c
  * harbour/utils/hbpp/hbppcomp.c
  * harbour/utils/hbpp/hbppcore.c
  * harbour/utils/hbpp/hbpplib.c
  * harbour/utils/hbpp/pragma.c
  * harbour/utils/hbver/hbverfix.c
    * general code cleanup: all strcpy() and strcat() replaced hb strn*()
      and hb_strn*(), sprintf() by snprintf(), etc.
      It fixed some possible buffer overflow but it's also possible that
      it will exploit some some hidden so far problems but I strongly
      prefer to know about them ASAP to fix them before final 1.0 release.
    ! fixed bug I introduce in codeblock falgs which disabled early macro
      evaluation in codeblocks.
    ! added missing protection against execution by bison destructor for
      used CBSTART token on syntax error.
    % use PP stringify logik added for FLEX support to remove all redundant
      spaces in stringified for early macro evaluation codeblocks and add
      spaces between operators if after preprocessing they were removed.
      Now we are supporting also some code which cannot be compiled by
      Clipper.
    % cleaned and improved the speed of printer redirecting in console code.
      Chen please check if CG still reports problems and if not ubdate
      TODO/TOFIX or inform me about them.
    * some cleanups in building process for different *nixes: MacOSX, SunOS,
      *BSD, etc.
    * removed not longer necessary (I hope) compiler flag to force default
      'char' type as signed. Now Harbour should work with signed and unsigned
      char without any problems. To other developers: please remember that
      when you are using 'char' as 8 bytes signed integer then it's a bug.
      Always explicitly use: 'signed char' in such case. On some platforms
      it's not possible to set default type for 'char' so if you hardcode
      that 'char' is signed or unsigned somewhere then code will not be
      portable. Chen if you will find a while to also rebuild Harbour with
      BCC and -K switch to make some tests with CG then I'll be thankful.
2006-12-08 05:03:58 +00:00
Przemyslaw Czerpak
5db88c1acc 2006-07-16 19:00 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/ChangeLog
    ! fixed typo in date

  * harbour/doc/gtapi.txt
  * harbour/include/hbgtcore.h
  * harbour/source/rtl/hbgtcore.c
  * harbour/source/rtl/gtgui/gtdef.c
    * changed HB_GT_DEFAULT_<name> to HB_GT_<name>_DEFAULT and added
      REQUEST posibilities so now the GT drivers can be REQUESTed and
      the default one set in similar way.
      F.e.:
         REQUEST HB_GT_WIN
         REQUEST HB_GT_WVT_DEFAULT
         REQUEST HB_GT_STD
      I think that it will be much easier and also using _DEFAULT as suffix
      does not resolve fully 10 character symbol but will work if GT name
      is not longer then 3 characters
2006-07-16 16:59:43 +00:00
Przemyslaw Czerpak
e4f4ea7783 2006-07-07 12:10 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/contrib/libct/ctwfunc.c
    + added missing header note

  * harbour/include/hbapigt.h
  * harbour/include/hbgtcore.h
  * harbour/include/hbgtinfo.ch
  * harbour/source/rtl/gtapi.c
  * harbour/source/rtl/hbgtcore.c
  * harbour/source/rtl/gtcgi/gtcgi.c
  * harbour/source/rtl/gtcrs/gtcrs.c
  * harbour/source/rtl/gtpca/gtpca.c
  * harbour/source/rtl/gtsln/gtsln.c
  * harbour/source/rtl/gtstd/gtstd.c
    * started basic modifications for multi CDP unicode screen buffer
      added hb_gtSetFlag(), removed hb_gt_SetCompatBuffer(),
      added GTI_STDOUTCON, GTI_STDERRCON, etc.

  * harbour/source/vm/arrays.c
    ! fixed bug I introduce recently in AEVAL and additional range checking
    * minor optimizations in ASCAN
2006-07-07 10:13:23 +00:00
Przemyslaw Czerpak
c5382221de 2006-06-28 02:32 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/rtl/hbgtcore.c
    - removed forgotten printf() used as debug message

  * harbour/source/rtl/gtgui/gtdef.c
    * register "GUI" GT as default one by executing
      hb_gtSetDefault( "GUI" ) at startup
2006-06-28 00:29:08 +00:00
Przemyslaw Czerpak
2a3c796c2b 2006-06-23 02:50 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/rtl/gtgui/Makefile
  * harbour/source/rtl/gtgui/gtgui.c
    * hacked GTGUI for W32 to be compiled using the same name as RTL default
      GT driver (GTWIN).

  * harbour/include/hbgtcore.h
  * harbour/source/rtl/hbgtcore.c
    * changed 'char *' to 'const char *' in hb_gtSetDefault(), hb_gtLoad()
2006-06-23 01:00:15 +00:00
Przemyslaw Czerpak
917c8057e6 2006-06-14 13:05 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/config/linux/dir.cf
  * harbour/config/linux/gcc.cf
    * formatting

  * harbour/config/linux/global.cf
  * harbour/config/linux/install.cf
    * added -ldl to linked library list and RANLIB executing after library
      creation

  * harbour/contrib/ole/ole2.c
    * added #include "hbapicls.h"

  + harbour/include/hbapicls.h
  * harbour/include/hbapi.h
    + added HB_IT_ENUM item
    + added collect member to HB_IT_POINTER structure for POINTER items
      inspected by GC
    * changed the order of HB_CODEBLOCK members to safe few bytes on
      alignment
    * removed counters from HB_CODEBLOCK and HB_BASEARRAY structure
    + added hb_xRefInc(), hb_xRefDec(), hb_xRefFree(), hb_xRefCount(),
      hb_xRefResize() functions. They are internal Harbour VM functions
      and covered by internal API macro. Should not be used by 3-rd
      party code because we may change them in the future or even remove.
    + added hb_gcRefInc(), hb_gcRefDec(), hb_gcRefFree(), hb_gcRefCount()
      functions. These are also internal function which corresponds to the
      above hb_x*() ones.
    - removed hb_arrayRelease() function. This function is not longer
      necessary and it should never be public function - it was implemented
      in very dangerous way.
    - removed hb_codeblockDelete() function.
    - removed hb_memvarValueDecGarbageRef()
    + added USHORT usLen parameter to hb_codeblockMacroNew() - when sets
      to non 0 value it informs that PCODE should be copied to dynamically
      allocated buffer.
    * moved all classes/object functions to separate file: hbapicls.h
    + added hb_retptrGC()
    + added internal function hb_memvarGetItem()

  * harbour/include/hbapiitm.h
    - removed hb_itemForwardValue() and added macro which translates
      hb_itemForwardValue() to hb_itemMove()
    + added hb_itemUnShareString() and hb_itemReSizeString() functions
    + added hb_itemSetNil() macro

  * harbour/include/hbdefs.h
    * some cleanups in macro definitions

  * harbour/include/hbexprb.c
    * indenting

  * harbour/include/hbvm.h
  * harbour/include/hbinit.h
    + added hb_vmProcessSymbolsExt(), hb_vmRegisterSymbols(),
      hb_vmFreeSymbols(), hb_vmBeginSymbolGroup(),
      hb_vmInitSymbolGroup(), hb_vmExitSymbolGroup()
    * changed hb_vmProcessSymbols() to return address of register symbol
      table. For normal code it's the same address as given in parameter
      so it does not break backward binary compatibility.
    * changed symbol init macros to work correctly with modified address
      of symbol table

  * harbour/include/hbsetup.h
    * added support for HB_USE_PROFILER macro. Now profiler code is
      is disable in HVM by default
    * commented out HB_ASORT_OPT_ITEMCOPY - it's not longer used - see note.

  * harbour/include/hbstack.h
    * added missing parenthesis in hb_stackItem() macro

  * harbour/include/hbtypes.h
    * updated VM_PROCESS_DLL_SYMBOLS definition
    + added VM_PROCESS_SYMBOLS_EXT
    - removed HB_ARRAYRELEASE

  * harbour/include/hbver.h
    * changed revision number to 2

  * harbour/include/hbvmpub.h
    - remove pFunPtr from HB_DYNS and cover profiler member by
      #ifndef HB_NO_PROFILER
    + added HB_PCODEFUNC structure
    + added HB_FS_PCODEFUNC, HB_FS_DYNCODE and HB_FS_LOCAL - the last one
      is not used yet.

  * harbour/include/hbxvm.h
    * added some multipcode functions for some speed optimization in -gc3
      output

  * harbour/include/hbapicdp.h
  * harbour/source/codepage/cpbg866.c
  * harbour/source/codepage/cpbgiso.c
  * harbour/source/codepage/cpbgwin.c
  * harbour/source/codepage/cpeldos.c
  * harbour/source/codepage/cpelwin.c
  * harbour/source/codepage/cpesdos.c
  * harbour/source/codepage/cpesmwi.c
  * harbour/source/codepage/cpeswin.c
  * harbour/source/codepage/cpgedos.c
  * harbour/source/codepage/cpgewin.c
  * harbour/source/codepage/cphu852.c
  * harbour/source/codepage/cphuiso.c
  * harbour/source/codepage/cphuwin.c
  * harbour/source/codepage/cppl852.c
  * harbour/source/codepage/cppliso.c
  * harbour/source/codepage/cpplmaz.c
  * harbour/source/codepage/cpplwin.c
  * harbour/source/codepage/cppt850.c
  * harbour/source/codepage/cpptiso.c
  * harbour/source/codepage/cpru866.c
  * harbour/source/codepage/cprukoi.c
  * harbour/source/codepage/cpruwin.c
  * harbour/source/codepage/cpsl437.c
  * harbour/source/codepage/cpsl852.c
  * harbour/source/codepage/cpsliso.c
  * harbour/source/codepage/cpslwin.c
  * harbour/source/codepage/cpsrwin.c
  * harbour/source/common/hbfhnd.c
  * harbour/source/common/hbstr.c
  * harbour/source/common/hbver.c
  * harbour/source/compiler/gencli.c
  * harbour/source/rtl/fstemp.c
  * harbour/source/rtl/hbgtcore.c
  * harbour/source/rtl/langapi.c
  * harbour/source/rtl/gtalleg/gtalleg.c
  * harbour/source/rtl/gtalleg/ssf.h
  * harbour/source/rtl/gtcgi/gtcgi.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
    * cleaned the code to avoid warnings for some non ANSI C constructions

  * harbour/source/compiler/cmdcheck.c
    * formatting

  * harbour/source/compiler/gencc.c
    * added some multipcode optimizations

  * harbour/source/compiler/genc.c
    * keep function name set by compiler for static initstatics

  * harbour/source/compiler/harbour.c
    * extend init statics name with the number of used static variables
    * formatting

  * harbour/source/compiler/hbusage.c
    + added my name to developers list - I hope that there is enough
      of my code in Harbour (BTW for quite long time) ;-)

  * harbour/source/rdd/dbcmd.c
    - removed DBF2TEXT() function

  * harbour/source/rdd/dbf1.c
  * harbour/source/rdd/dbffpt/dbffpt1.c
    * generate RT error when someone tries to create DBF with memo fields
      without MEMO RDD linked.

  * harbour/source/rtl/errorapi.c
    * replace all hb_vmDo() with hb_vmSend()

  * harbour/source/rtl/math.c
    * use hb_errPutArgs() to pass parameters to error object

  * harbour/source/rtl/philes.c
  * harbour/source/rtl/space.c
  * harbour/source/rtl/strpeek.c
    * some minor optimizations

  * harbour/source/vm/arrays.c
    - removed hb_arrayRelease() function.
    * changed hb_arrayReleaseGarbage() to be safe for recursive call
    * updated to use GC counters

  * harbour/source/vm/arrayshb.c
    * use stack function/macros instead of direct accessing HB_STACK members

  * harbour/source/vm/asort.c
    * removed unused HB_ASORT_OPT_ITEMCOPY

  * harbour/source/vm/classes.c
    * added class code from HVM
    % added fast overloaded operator detection and execution
    + added hb_objHasOperator(), hb_objOperatorCall()
    + added separated overloading of "=" and "==" operators
    * operate on PHB_SYMB not PHB_FUNC - support for pure PCODE function
      without any machine code
    * use stack function/macros instead of direct accessing HB_STACK members
    * separated profiler code
    * some code cleaning

  * harbour/source/vm/codebloc.c
    + added USHORT usLen parameter to hb_codeblockMacroNew() - when sets
      to non 0 value it informs that PCODE should be copied to dynamically
      allocated buffer.
    * updated to use GC counters
    - removed hb_codeblockDelete() function.
    * changed hb_codeblockDeleteGarbage() to be safe for recursive call
    - removed restoring statics base in hb_codeblockEvaluate()

  * harbour/source/vm/debug.c
    * cleaned and optimized some code

  * harbour/source/vm/dynlibhb.c
    + added support for loading and unloading dynamic libraries with PCODE
    + added support for dynamic libraries in Linux (.so)
    + added HB_LIBERROR() - returns error string with last error in
      HB_LIBLOAD() - now works only in Linux

  * harbour/source/vm/dynsym.c
    * separated profiler code
    + use pDynSym->pSymbol->value.pFunPtr instead of pDynSym->pFunPtr

  * harbour/source/vm/estack.c
    + added #include "hbapicls.h"
    + added hb_stackPushReturn(), hb_stackPopReturn()

  * harbour/source/vm/eval.c
  * harbour/source/vm/extend.c
    * use stack function/macros instead of direct accessing HB_STACK members
    + added hb_retptrGC()

  * harbour/source/vm/fm.c
    + added hb_xRefInc(), hb_xRefDec(), hb_xRefFree(), hb_xRefCount(),
      hb_xRefResize() functions. They are internal Harbour VM functions
      and covered by internal API macro. Should not be used by 3-rd
      party code because we may change them in the future or even remove.

  * harbour/source/vm/garbage.c
    + added hb_gcRefInc(), hb_gcRefDec(), hb_gcRefFree(), hb_gcRefCount()
      functions. These are also internal function which corresponds to the
      above hb_x*() ones.
    * changed Step 3 of GC pass and execution of clean-up function to be
      safe for recursive calls and additional activity.
      Ryszard see my note and s_pDeletedBlock
    + added GC inspected HB_IT_POINTER items.

  * harbour/source/vm/hvm.c
    * separated profiler code
    * separated class code from HVM
    + added support for loading and unloading libraries with PCODE modules
    + added support for pure PCODE functions
    + added support for string item resizing and preallocating string buffer
    + added some new multipcode functions for -gc3 optimization
    + added hb_vmProcessSymbolsExt(), hb_vmRegisterSymbols(),
      hb_vmFreeSymbols(), hb_vmBeginSymbolGroup(),
      hb_vmInitSymbolGroup(), hb_vmExitSymbolGroup()
    * changed hb_vmProcessSymbols() to return address of register symbol
      table. For normal code it's the same address as given in parameter
      so it does not break backward binary compatibility.
    + use new code for operator overloading
    * changed FOR EACH to dynamically check iteration scope in
      hb_vmEnumNext()/hb_vmEnumPrev() and remove max number of iteration
      stored on HVM stack
    * temporary use hb_itemUnRefOnce() instead of hb_itemUnRefRefer() as
      workaround for possible GPF. I'd like Ryszard will chose the final
      version

  * harbour/source/vm/itemapi.c
    + added support for preallocating string buffer size
    + added hb_itemUnShareString() and hb_itemReSizeString()
    * updated string items to use counters allocated with each
      memory block by xh_xgrab()/hb_xalloc()
    * updated codeblock and array items to use GC reference counters
    + added GC inspected HB_IT_POINTER items.
    * generate RT error in hb_itemUnreOnce() for enumerator items
      out of scope
    + added hb_itemPutPtrGC()

  * harbour/source/vm/macro.c
    * use pDynSym->pSymbol->value.pFunPtr instead of pDynSym->pFunPtr

  * harbour/source/vm/maindllp.c
    * updated usage of hb_vmProcessSymbols()
    * added hb_vmProcessSymbolsExt()

  * harbour/source/vm/memvars.c
    + added hb_memvarGetItem()
    - removed hb_memvarValueDecGarbageRef()

  * harbour/source/vm/proc.c
    + added #include "hbapicls.h"

  * harbour/source/vm/pvalue.c
    * do not access stack structure directly but use hb_stack*()
      functions (macros)

  * harbour/source/vm/runner.c
    * synced with xHarbour

  * harbour/utils/hbtest/rt_misc.prg
   * added overloading "=" operator. Now "==" and "=" can be overloaded
     with different methods

   All names I used for new functions/macros can be changed. Please look at
   it and if you will some better propositions then we can use it.
   hb_vmProcessSymbolsExt() is added but not used yet.
2006-06-14 11:21:26 +00:00
Przemyslaw Czerpak
a8abcb6f42 2006-03-13 23:15 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/rtl/hbgtcore.c
    * respect pure REQUEST HB_GT_NUL as user GT choice if only GTNUL
      is linked

  * harbour/source/rtl/errorint.c
    ! fixed GPF when no lang module is register - I'll wait a while for
      other people opinion and if no one will give good reason against
      then I'll make EN language definition default part of langapi.c
      what will resolve the problem of valid error description when no
      language module is linked.
2006-03-13 22:17:28 +00:00
Przemyslaw Czerpak
bcc8ead975 2006-03-13 19:20 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/ChangeLog
    * fixed description in last commit. Should be HB_GTSYS() not GTSYS()

  * harbour/include/hbapi.h
    * fixed hb_retl() macro by adding missing parenthesis

  * harbour/source/compiler/harbour.c
    * removed unnecessary initialization to avoid BCC warning

  * harbour/source/rtl/console.c
  * harbour/source/rtl/hbgtcore.c
    * do not call hb_gtOutStd()/hb_gtOutErr() when given string
      has 0 length - it may cause unpredictable results in low level
      hb_fsWrite() when trunc operation will be activated for non
      real file handles in some systems

  * harbour/source/rtl/errorint.c
    * increased the error message buffer

  * harbour/source/rtl/inkey.c
    * fixed typo in comment

  * harbour/source/rtl/gtcrs/gtcrs.c
    * formatting
2006-03-13 18:39:07 +00:00
Przemyslaw Czerpak
c5ccfa9978 2006-03-01 14:30 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/contrib/htmllib/default.ch
    * fixed few wrong definitions - Ryszard, the definitions where wrong
      but Clipper PP seems to parse them.

  * harbour/contrib/rdd_ads/ads1.c
    * call AdsFlushFileBuffers() only when _SET_HARDCOMMIT is set (default)

  * harbour/include/Makefile
  + harbour/include/hbgfx.ch
  + harbour/include/hbgfxdef.ch
    + added hbgfx.ch, hbgfxdef.ch and missing tbrowse.ch

  * harbour/include/hbapigt.h
  * harbour/include/hbgtcore.h
  * harbour/source/rtl/gtapi.c
  * harbour/source/rtl/hbgtcore.c
    + added hb_gtGfxPrimitive(), hb_gtGfxText() - it's a work in progress
      now this functions works like in xHarbour allow to draw graphic
      objects in GTs which can do that (GTALLEG, GTXWC) but I plan to
      introduce some modifications in them.

  + harbour/tests/gfx.prg
    + added test program by Mauricio Abre (borrowed from xHarbour) which
      illustrates GFX usage

  * harbour/include/hbdefs.h
  * harbour/source/compiler/genc.c
  * harbour/source/compiler/harbour.c
  * harbour/source/vm/hvm.c
    * minor modification in some harbour func name and symbol scope
      definitions - I'd like to keep them in one place for easier
      manipulations in the future

  * harbour/source/compiler/harbour.y
  * harbour/source/pp/ppcore.c
  * harbour/source/pp/pplib.c
  * harbour/utils/hbpp/hbpp.c
    * clean a little bit recent modification it should resolve the
      problem with GPFs reported by users and some possible memory
      leaks when preprocessing/compilation process is interrupted.
      Ryszard I decided to always store copy of file name in open
      files structure - it can be used by compiler, preprocessor,
      PPLIB and HBPP and IMHO in all cases it should have valid
      and always initialized in the same way members for easier
      manipulation. In the future I'd like to clean the whole PP
      usage. I will need to keep all compiler and PP static variables
      in one structure pointed by pointer in thread local data or
      passed to called functions for MT support.

  * harbour/source/rtl/cdpapi.c
    * set 0 at the end of destination string in hb_cdpStrnToUTF8()

  * harbour/source/rtl/dateshb.c
    ! fixed possible GPF in CTOD when badly formated date is given

  * harbour/source/rtl/gtxwc/gtxwc.c
  * harbour/source/rtl/gtxwc/gtxwc.h
    * changed the selection code - now both PRIMARY and CLIPBOARD
      selections are set by Harbour. It should work with any programs
      which uses any of them but I'd like to remove one of this selections
      or give user a way to chose the preferred one. I can also add support
      for automatic setting/clearing/pasting PRIMARY selection by GTXWC
      with mouse and shift key. I'm waiting for opinions.
    + added basic support for GFX operations

  + harbour/source/rtl/gtalleg/Makefile
  + harbour/source/rtl/gtalleg/fixedth.sfc
  + harbour/source/rtl/gtalleg/gtalleg.c
  + harbour/source/rtl/gtalleg/ssf.c
  + harbour/source/rtl/gtalleg/ssf.h
    + added new GT by Mauricio Abre based on Allegro cross platform
      graphic libraries.
      Code borrowed from xHarbour and modified by my for new Harbour
      GT API.
2006-03-01 13:49:07 +00:00
Przemyslaw Czerpak
34d4910f42 2006-02-21 23:20 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/bin/hb-func.sh
    * added support for -L<librarypath> in xhbmk
    * set the highest priority to user libraries specified by
      -l<libname> linker option

  * harbour/include/hbapicdp.h
  * harbour/source/rtl/cdpapi.c
    * added UTF8 related functions: hb_cdpUTF8StringLength(),
      hb_cdpStringInUTF8Length(), hb_cdpUTF8ToStrn().
    * Changed name of hb_cdpStrnToUTF() function to hb_cdpStrnToUTF8()
      to avoid confusions with UTF16

  * harbour/include/hberrors.h
  * harbour/source/compiler/hbgenerr.c
  * harbour/source/compiler/harbour.c
    + added to new errors (memory corruption and memory overflow) for
      compiler level FM statistic.

  * harbour/source/compiler/hbfix.c
    ! fixed stupid typo in copy and past which broke conditional jump
      reduction

  * harbour/include/hbgtcore.h
  * harbour/source/rtl/hbgtcore.c
  * harbour/include/hbgtinfo.ch
  * harbour/source/rtl/gtdos/gtdos.c
  * harbour/source/rtl/gtos2/gtos2.c
  * harbour/source/rtl/gtwin/gtwin.c
    * added new method to change screen buffer state (hot/cold/scroll)
      and use them in some GTs.

  * harbour/source/rtl/gx.c
    * use screen dimensions as default values for SETMODE() not maxrow()/
      maxcol()

  * harbour/source/rtl/gtxwc/gtxwc.c
  * harbour/source/rtl/gtxwc/gtxwc.h
    * added support for clipboard
    * added support for cursor shape - like in DOS/VGA

  * harbour/source/rdd/workarea.c
  * harbour/source/rdd/dbffpt/dbffpt1.c
    * cleaned some redundant extern declarations

  * xharbour/contrib/rdd_ads/ads1.c
  * xharbour/contrib/rdd_ads/adsfunc.c
    * removed some unnecessary #include ...

  * harbour/source/rtl/str.c
  * harbour/source/rtl/transfrm.c
  * harbour/source/vm/itemapi.c
    ! fixed some small incompatibilities with Clipper in number to string
      conversions
2006-02-21 22:23:29 +00:00
Przemyslaw Czerpak
5796421a06 2006-02-11 13:32 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/Makefile
    * added missing header files

  * harbour/source/compiler/harbour.c
    * added support for @filelst[.clp] - partially borrowed from xHarbour
      It's not exactly the same as in Clipper because Clipper creates
      one final file when [x]Harbour series of files.
      To make it like in Clipper we will have to add support from more
      then one symbol table in the final file. It will be also useful
      for proper implementation of:
         DO <file>
      Now in [x]Harbour it works like #include <file>.prg when in Clipper
      also new symbol table is created for included files. The difference
      can be easy sync when current file has static functions with exactly
      the same names as the one included by DO - compilation fails.
    * add HB_P_ENDBLOCK to PCODE with codeblock body before run any
      optimization - it fixes pcode tracing in jump optimization and
      also allow to make some validation of generated PCODE

  * harbour/source/rdd/dbstrux.prg
  * harbour/source/rdd/dbtotal.prg
    * removed not longer necessary temporary alias creation. Harbour
      support empty aliases ("") like Clipper.

  * harbour/source/rdd/dbffpt/dbffpt1.c
  * harbour/source/rtl/hbgtcore.c
    * casting

  * harbour/source/rtl/gtos2/gtos2.c
    ! fixed hb_gt_os2_GetScreenContents()
2006-02-11 12:34:03 +00:00
Przemyslaw Czerpak
e87c9b8532 2006-02-08 14:05 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/rtl/gtdos/gtdos.c
    * updated copyright message with authors from removed mousedos.c

  * harbour/include/hbgtcore.h
  * harbour/source/rtl/hbgtcore.c
  * harbour/source/compiler/harbour.c
    ! fixed BOLL / int typos

  * harbour/source/vm/eval.c
    * minor modification

  * harbour/source/rdd/dbf1.c
    * enable 'Y' (currency) fields - translated to HB_IT_DOUBLE

  * harbour/source/rdd/dbcmd.c
    ! fixed some wrong behavior in SORT parameters setting in __dbArrange()

  * harbour/source/rdd/dbsort.prg
    ! removed hack with COPY TO ... when lastrec()==1
      which introduced new bugs
  * harbour/source/rdd/hbdbsort.c
    ! fixed sort output when only one record is sorted
      There are still some problems with sort like sorting numeric
      fields as ASCII strings or using strcmp what will not work
      with binary fields but all all this code should be rewritten
      due to unacceptable performance so I left it as is to some
      spare time in the future.

  * harbour/source/rtl/gtwin/gtwin.c
    ! save cursor position at startup

  * harbour/source/rtl/net.c
  * harbour/source/rtl/gtos2/gtos2.c
  * harbour/contrib/hgf/os2pm/os2pm.c
    * some warnings cleaned and updates for new API in OS2 build
2006-02-08 13:57:37 +00:00
Viktor Szakats
eb090812f3 2006-02-07 12:20 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu)
* makefile.bc
     + Updated for latest changes.

   * bin/bld.bat
     + Added codepage lib.

   * source/codepage/cdpbg866.c
   * source/codepage/cdpbgiso.c
   * source/codepage/cdpbgwin.c
     + Added two missing chars to BG alphabet.

   * source/vm/arrays.c
   * source/vm/mainwin.c
   * source/rtl/hbgtcore.c
   * include/hbapigt.h
   * source/rtl/gtpca/gtpca.c
   * source/rtl/gtstd/gtstd.c
     ! Fixed recent compiler warnings.
2006-02-07 11:33:06 +00:00
Przemyslaw Czerpak
a290c984e7 2006-02-04 17:05 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/harbour.spec
  * harbour/make_bsd.sh
  * harbour/make_drw.sh
  * harbour/make_gnu.sh
  * harbour/make_rpm.sh
  * harbour/make_tgz.sh
  * harbour/bin/hb-func.sh
  * harbour/bin/pack_src.sh
  * harbour/config/c.cf
  * harbour/config/global.cf
  * harbour/config/rules.cf
  * harbour/config/darwin/gcc.cf
  * harbour/config/darwin/global.cf
  * harbour/config/dos/djgpp.cf
  * harbour/config/dos/global.cf
  * harbour/config/dos/install.cf
  * harbour/config/dos/owatcom.cf
  * harbour/config/hpux/gcc.cf
  * harbour/config/hpux/global.cf
  * harbour/config/linux/gcc.cf
  * harbour/config/linux/global.cf
  * harbour/config/linux/owatcom.cf
  * harbour/config/sunos/gcc.cf
  * harbour/config/w32/watcom.cf
    * include ADSRDD by default in RPMs
    * updated for new RPM which does not accept some old tags
    * set -fPIC on 64bit platforms
    + added /etc/harbour/hb-charmap.def
    * updated for new GT system and drivers

  * harbour/contrib/dot/pp.prg
  * harbour/contrib/dot/pp_harb.ch
    * use _APMAIN as startup function
    * cleaned direct access to item internals

  * harbour/contrib/libct/Makefile
  + harbour/contrib/libct/ctwfunc.c
  + harbour/contrib/libct/ctwin.c
  + harbour/contrib/libct/ctwin.h
    * added CT3 like Window System - it's a GT driver which inherits
      from the existing one and adds CTW functionality

  * harbour/contrib/libct/screen1.c
    * updated for GTAPI modifications

  * harbour/contrib/libnf/Makefile
  * harbour/contrib/libnf/chdir.c
  * harbour/contrib/libnf/mkdir.c
  * harbour/contrib/libnf/rmdir.c
    * use hb_fs*() API functions instead of calling DOS interrupts
      Now NF dir functions works on all platforms - it will be nice
      to update other functions too.

  * harbour/contrib/libnf/dispc.c
  * harbour/contrib/libnf/ftattr.c
    * updated for GT API modifications, some of this code still depends
      on EGA/VGA video buffer so will work only if user will force in GT
      using it - it will be nice to rewrite them

  * harbour/contrib/odbc/odbc.c
  * harbour/contrib/ole/ole2.c
    * casting and cleaning direct access to item internals

  * harbour/contrib/rdd_ads/ads1.c
  * harbour/contrib/rdd_ads/adsfunc.c
  * harbour/contrib/rdd_ads/adsmgmnt.c
    * synced with xHarbour

  * harbour/include/Makefile
    * added new header files

  + harbour/include/hbgtinfo.ch
    + added GTI_* defintions for hb_gtInfo() function.
      This function works in similar way to dbInfo() in RDD.
      The GTI_* definitions are taken from xHarbour "as is" and
      they should be cleaned - not all functionality are supported
      in Harbour and some others should be implemented in differ
      way then in xHarbour.

  + harbour/include/hbgtcore.h
  * harbour/include/hbapigt.h
    * new GTAPI
      hbgtcore.h file should not be included by user code
      it's only for internal use in GT drivers
    * HB_inkey_enum changed to int - this is bit field not enumerated type.
      Many of C/C++ compilers forbid bit operations on enum types and
      forcing it by casting which finally exceeds the enum range is defined
      as bug because it may badly interacts with some compiler optimizations

  * harbour/include/hbapi.h
  * harbour/include/hbapicdp.h
  * harbour/include/hbapierr.h
  * harbour/include/hbapifs.h
  * harbour/include/hbapiitm.h
  * harbour/include/hbapilng.h
  * harbour/include/hbapirdd.h
  * harbour/include/hbdate.h
  * harbour/include/hbdefs.h
  * harbour/include/hbinit.h
  * harbour/include/hbpcode.h
  * harbour/include/hbrdddbf.h
  * harbour/include/hbset.h
  * harbour/include/hbstack.h
  * harbour/include/hbvm.h
  * harbour/include/hbvmopt.h
  * harbour/include/hbvmpub.h
    * separated internal and external API. Now the definitions for
      internal HVM structures and functions are excluded by default
      they could be enabled if user include hbvmopt.h before other
      header files. Such operation should be done _ONLY_ by core
      code - if 3-rd party developers make sth like that then it's
      for their own risk and such code may stop to work with next
      Harbour versions. Without hbvmopt.h the internal structures
      like HB_ITEM, HB_DYNS, ... are  mapped to 'void' so there is
      no way to access their members so we can modify them in the
      future without afford for 3-rd party code.
      There is one small exception 'type' should be the first member
      for HB_ITEM structure because I used a small ugly hack in
      HB_IS_*() macros with castin PHB_ITEM to HB_TYPE* - it works
      without speed overhead but if you think that it will be
      better/cleaner to not use such tricks then it's enough to
      change HB_ITEM_TYPE() definitions in hbvmpub.h - see note.
    * cleared the usage of HB_EXPORT - to avoid problems with some C/C++
      compilers we agreed that the only one common way of using HB_EXPORT
      is adding it ad begining of declaration - please keep this convention
      in the future.
    + added new functions:
      hb_extIsObject(), hb_codeblockId(), hb_idleSleep(),
      hb_fsGetOsHandle(),
      hb_dynsymFindSymbol(), hb_dynsymGetSymbol(),
      hb_dynsymSymbol(), hb_dynsymName(),
      hb_dynsymMemvarHandle(), hb_dynsymAreaHandle(), hb_dynsymSetAreaHandle()
    * changed hb_arrayClone() declaration to:
         PHB_ITEM hb_arrayClone( PHB_ITEM pArray )
    * changed hb_arrayFromParams() declaration to:
         PHB_ITEM hb_arrayFromParams( int iLevel )
      The previous version needed a pointer to stack relocatable area
      so any stack resizing could cause GPF.

  * harbour/include/inkey.ch
    * added definitions for extended mouse keys/events and some key
      combinations

  * harbour/source/codepage/uc1250.c
  * harbour/source/codepage/uc1251.c
  * harbour/source/codepage/uc1253.c
  * harbour/source/codepage/uc1257.c
  * harbour/source/codepage/uc737.c
  * harbour/source/codepage/uc850.c
  * harbour/source/codepage/uc852.c
  * harbour/source/codepage/uc866.c
  * harbour/source/codepage/uc88591b.c
  * harbour/source/codepage/uc8859_1.c
  * harbour/source/codepage/uc8859_2.c
  * harbour/source/codepage/uc8859_5.c
  * harbour/source/codepage/uckoi8.c
  * harbour/source/codepage/uckoi8u.c
  * harbour/source/codepage/ucmaz.c
    * updated unicode values for characters in rabge 1-31 to keep
      DOS compatibility

  * harbour/source/common/expropt1.c
  * harbour/source/common/hbarch.c
  * harbour/source/common/hbdate.c
  * harbour/source/common/hbstr.c
  * harbour/source/common/hbver.c
    * keep HB_EXPORT at the beginning of function declaration

  * harbour/include/hbpcode.h
  * harbour/include/hbcomp.h
  * harbour/source/compiler/harbour.c
  * harbour/source/compiler/harbour.y
  * harbour/source/compiler/hbfix.c
  + harbour/source/compiler/hbdead.c
  * harbour/source/compiler/hbpcode.c
  + harbour/source/compiler/hbstripl.c
    % rewritten jump optimization
      ! fixed some minor problems
      * do not optimize jumps and local variable access by shorter
        PCODE version and HB_P_NOOP when jump optimization is
        disabled, this is a note I left in source code in few places:
         /*
          * optimizing jumps here by shorting them and setting HB_P_NOOPs
          * only slow down the compilation process for three reasons:
          * 1. When it's dummy jump to next instruction we need two passes
          *    in hb_compOptimizeJumps() to fully remove it
          * 2. hb_compOptimizeJumps() also make jump shortcutting in each pass
          * 3. When Jump Optimization is disabled (-kJ) then it cause slowness
          *    at runtime because we will have more HVM loops: first  for the
          *    shorter jump and next for the HB_P_NOOP PCODE(s)
          * [druzuz]
          */

      + added support for multi passes in jump/dead code elimination
        (hb_compOptimizeJumps())
        By default is set upto three passes.
        Now hb_compOptimizeJumps() keeps all compiler internal data clean
        on exist and can be called any times and does not change other
        compiler's functions behaviors
      + added dummy jumps elimination
      + added optimization for:
            IF .T.
            IF .F.
            WHILE .T.
            WHILE .F.
         etc.
      * restored empty BEGIN/RECOVER sequence block elimination
        if Jump Optimization is enabled then it marks the block
        with HB_P_NOOPS else it cut the generated PCODE
      + added dead code eliminator (new functions hb_compCodeTraceMarkDead()/
        hb_compPCodeTrace() - it works only when Jump Optimization is
        not disabled)
      As a result of the above we have smaller and faster PCODE.

      I do not think that we will have meta code support in the reasonable
      time and because I need some valid compiler data/structures like
      updated table of all jumps for real C code (not PCODE in .c files)
      generation then I decide to make some modifications and the above
      is in practice a side effect of this work.

  * harbour/source/rdd/dbcmd.c
  * harbour/source/rdd/dbf1.c
  * harbour/source/rdd/rddord.prg
  * harbour/source/rdd/workarea.c
  * harbour/source/rdd/dbfcdx/dbfcdx1.c
  * harbour/source/rdd/dbffpt/dbffpt1.c
  * harbour/source/rdd/dbfntx/dbfntx1.c
  * harbour/source/rdd/nulsys/nulsys.c
    * synced with my modifications in xHarbour
    * updated for API modifications

  * harbour/source/rtl/Makefile
    + added gtsys.c, gtfunc.c, hbgtcore.c

  * harbour/source/rtl/accept.c
  * harbour/source/rtl/alert.prg
  * harbour/source/rtl/cdpapi.c
  * harbour/source/rtl/console.c
  * harbour/source/rtl/dates.c
  * harbour/source/rtl/do.c
  * harbour/source/rtl/errorapi.c
  * harbour/source/rtl/errorsys.prg
  * harbour/source/rtl/file.c
  * harbour/source/rtl/fserror.c
  * harbour/source/rtl/fstemp.c
  * harbour/source/rtl/hbffind.c
  * harbour/source/rtl/idle.c
  * harbour/source/rtl/math.c
  * harbour/source/rtl/oldclear.c
  * harbour/source/rtl/strmatch.c
  * harbour/source/rtl/strpeek.c
  * harbour/source/rtl/valtype.c
  * harbour/source/rtl/xsavescr.c
    * updated for API modifications
    * cleaned some compiler warnings

  * harbour/source/rtl/filesys.c
    + added hb_fsGetOsHandle()
    * updated for API modifications

  * harbour/source/rtl/gt.c
  * harbour/source/rtl/gtapi.c
  * harbour/source/rtl/gtapiu.c
  + harbour/source/rtl/gtfunc.c
  + harbour/source/rtl/gtsys.c
  + harbour/source/rtl/hbgtcore.c
  * harbour/source/rtl/inkey.c
  * harbour/source/rtl/maxrow.c
  * harbour/source/rtl/mouseapi.c
  * harbour/source/rtl/setcolor.c
  * harbour/source/rtl/setposbs.c
  * harbour/source/rtl/shadow.c
    * new GT API code

  * harbour/source/rtl/saverest.c
    * changed default behavior in SEVESCREEN/RESTSCREEN with parameters
      out of screen range to be Clipper compatible. Added last logical
      parameter to keep previous behavior for programs which begins to
      use it.

  * harbour/source/rtl/seconds.c
    * include missing header file to fix C++ compilation
    * make hb_secondsCPU global function

  * harbour/source/rtl/set.c
    * make HB_SET_TYPEAHEAD Clipper compatible

  * harbour/source/rtl/gtcgi/Makefile
  * harbour/source/rtl/gtcgi/gtcgi.c
  - harbour/source/rtl/gtcgi/mousecgi.c
    * rewritten for new GT API
      some detail behaviors has been changed but I think the current
      implementation is better for CGI programs output - please check
      and fix me if necessary

  * harbour/source/rtl/gtcrs/Makefile
  - harbour/source/rtl/gtcrs/charmap.prg
  + harbour/source/rtl/gtcrs/chrmap.c
  - harbour/source/rtl/gtcrs/debug.map
  - harbour/source/rtl/gtcrs/eterm.map
  * harbour/source/rtl/gtcrs/gtcrs.c
  + harbour/source/rtl/gtcrs/gtcrs.h
  + harbour/source/rtl/gtcrs/hb-charmap.def
  - harbour/source/rtl/gtcrs/kbdcrs.c
  - harbour/source/rtl/gtcrs/keymap.prg
  - harbour/source/rtl/gtcrs/linux.map
  - harbour/source/rtl/gtcrs/mousecrs.c
    * new GTCRS based on my xHarbour and Flagship curses code
      Please not that at runtime it looks for a file
      /etc/harbour/hb-charmap.def where user can fully tune output
      for his terminal. This file is included with proper path in
      binaries created by make_rpm.sh and make_tgz.sh
      Ryszard I've removed some of your extensions which are no longer
      necessary and some other (keyboard sequence redefinition) should
      be done in a little bit differ way. I would like to talk about it
      when you test current code.
      Added support for extended mouse keys (middle button and wheel).

  * harbour/source/rtl/gtdos/Makefile
  * harbour/source/rtl/gtdos/gtdos.c
  - harbour/source/rtl/gtdos/mousedos.c
    * rewritten for new GT API
      Fixed some small problems, finished mouse code which for DJGPP
      is fully Clipper compatible with real mouse SAVE/RESTORE code.
      For other compilers it should be updated depending on memory
      model and used DPMI driver (if any).

  * harbour/source/rtl/gtos2/Makefile
  * harbour/source/rtl/gtos2/gtos2.c
  - harbour/source/rtl/gtos2/mouseos2.c
    * rewritten for new GT API
      Fixed some problems and finished the mouse code.
      Please test it - I made all modifications without OS2 and
      I was not able to make any test. I'm interesting in information
      if it works and the speed difference - f.e. results from
      tests/vidtest.prg run with previous and current version.

  * harbour/source/rtl/gtpca/Makefile
  * harbour/source/rtl/gtpca/gtpca.c
  - harbour/source/rtl/gtpca/kbdos2.gcc
  - harbour/source/rtl/gtpca/mousepca.c
    * rewritten for new GT API
      and finished so now it's full functional GT driver
      I'm interesting in keyboard sequences used by PC-ANSI drivers
      in DOS so it will be possible to implement also support for
      extended keys input.

  * harbour/source/rtl/gtsln/Makefile
  * harbour/source/rtl/gtsln/gtsln.c
  + harbour/source/rtl/gtsln/gtsln.h
  * harbour/source/rtl/gtsln/kbsln.c
  * harbour/source/rtl/gtsln/keytrans.c
  * harbour/source/rtl/gtsln/mousesln.c
    * rewritten for new GT API basing on current xHarbour code
      added support for slang 1.4x patched for UNICODE (Debian
      patches used by most of current Linux distributions) and
      slang 2.x - It's unicode ready, tries to detect terminal mode
      (utf-8/iso) at startup and switch the internal logic to
      iso/unicode mode. When compiled with slang 1.4x or 2.x
      and terminal is in UTF-8 it can display all characters like
      in DOS if only used font have them or good fall-back table is
      loaded (f.e. the one created by QRCZAK)
      Added support for extended mouse keys (middle button and wheel).

  * harbour/source/rtl/gtstd/Makefile
  * harbour/source/rtl/gtstd/gtstd.c
  - harbour/source/rtl/gtstd/mousestd.c
    * rewritten for new GT API
      Now it can work as full screen GT driver redrawing the previous
      screen contents from internal GT core buffers. I run with this
      GT some of my programs and they work quite well ;-) of course
      without colors.

  * harbour/source/rtl/gtwin/Makefile
  * harbour/source/rtl/gtwin/gtwin.c
  - harbour/source/rtl/gtwin/mousewin.c
    * updated for new GT API

  + harbour/source/rtl/gtxwc/Makefile
  + harbour/source/rtl/gtxwc/gtxwc.c
  + harbour/source/rtl/gtxwc/gtxwc.h
    * new XWindow Console GT driver based on my and Giancarlo Niccolai
      code form xHarbour - this GT can work in XWindow environment only
      and create its own window for  console output. It delays the
      initialization to the moment when user try to display anything on
      the screen so even without X Window system programs which uses this
      GT can work as long as use only outstd/outerr output.

  * harbour/source/vm/arrays.c
    * updated for API modifications
    + added hb_arrayId(),
    * changed hb_arrayClone() declaration to:
         HB_EXPORT PHB_ITEM hb_arrayClone( PHB_ITEM pSrcArray )
    * changed hb_arrayFromParams() declaration to:
         PHB_ITEM hb_arrayFromParams( int iLevel )

  * harbour/source/vm/arrayshb.c
    * updated for API modifications
    + added new parameter iLevel to function HB_APARAMS()

  * harbour/source/vm/classes.c
  * harbour/source/vm/cmdarg.c
  * harbour/source/vm/dynlibhb.c
  * harbour/source/vm/estack.c
  * harbour/source/vm/fm.c
  * harbour/source/vm/garbage.c
  * harbour/source/vm/maindll.c
  * harbour/source/vm/maindllh.c
  * harbour/source/vm/maindllp.c
  * harbour/source/vm/mainstd.c
  * harbour/source/vm/mainwin.c
  * harbour/source/vm/memvars.c
  * harbour/source/vm/pcount.c
  * harbour/source/vm/proc.c
    * updated for API modifications

  * harbour/source/vm/codebloc.c
    * updated for API modifications
    + added hb_codeblockId()

  * harbour/source/vm/dynsym.c
    * updated for API modifications
    + added new functions:
      hb_dynsymFindSymbol(), hb_dynsymGetSymbol(),
      hb_dynsymSymbol(), hb_dynsymName(),
      hb_dynsymMemvarHandle(), hb_dynsymAreaHandle(), hb_dynsymSetAreaHandle()

  * harbour/source/vm/eval.c
    * updated for API modifications
    * call hb_vmPushState()/hb_vmPopState() in hb_itemDo()/hb_itemDoC()
      functions - it's necessary to make HVM reentrant safe.

  * harbour/source/vm/extend.c
    * updated for API modifications
    + added hb_extIsObject() similar to existing hb_extIsArray()

  * harbour/source/vm/hvm.c
    * updated for API modifications
    + added new functions: hb_vmPushState(), hb_vmPopState()
      which save/restore HVM state (the top stack value which can be
      processed and return item and maybe sth else in the future) making
      HVM ready for reentrant.

  * harbour/source/vm/itemapi.c
    * updated for API modifications
    + added new function:
         HB_EXPORT PHB_SYMB hb_itemGetSymbol( PHB_ITEM pItem );
    ! fixed bug in hb_itemPutNInt()

  * harbour/tests/Makefile
  * harbour/utils/hbdoc/Makefile
  * harbour/utils/hbextern/Makefile
  * harbour/utils/hbmake/Makefile
  * harbour/utils/hbrun/Makefile
  * harbour/utils/hbtest/Makefile
    - removed badly added: dbfntx, dbfcdx, dbffpt, hbsix libraries.
      what broke GNU make compilation for some compilers
      This libraries should be included automatically when RDD lib
      is included by *.cf files

   Summary:
      The whole patch (cvs diff -uN) is ~1.5MB length and I cannot describe
      everything in details - sorry but it was too much modifications in
      one commit so now just some of general notes.
      The header files included as is does not have any information about
      internal HVM structures and some functions. In practice only HB_SYMB
      is public and it has to be public for .c files generated from .prg
      so I force the fixed size of this structure (alignment independent)
      by redefining some members to union with void * - it's a little bit
      ugly trick but it effectively eliminates the problem of linking
      binaries compiled with differ alignment C compiler switches.
      The structures like HB_ITEM, HB_CODEBLOCK, HB_STACK, HB_DYNS are not
      longer defined and pointers to the defined as void * - like in Clipper
      the ITEM structure. It caused that I had to add some new functions
      to make some operation still possible to implement. If I missed sth
      and any of you will have a problem with your code then please inform
      me about it and after a small discussion on Harbour developers list
      we can decide if other functions should be added.
      The internal API is still accessible. It's enough to include "hbvmopt.h"
      file before other header files to enable it. Now only files in
      source/vm directory include it.
      The 3-rd party code which does not include hbvmopt.h (or tries to
      set some internals macros) should be safe for future HVM modifications
      and will work also with new binaries so 3-rd party library developers
      should remember about it. If they won't then it's only their and
      their clients problem not Harbour developers.
      With this modifications I also create new GT model which is similar
      to the one used by RDD with multi inheritance. It can be quite easy
      extended to simultaneously load more then one GT subsystem (sth like
      work areas in RDD) but I left it for the future when someone may
      need it. hbapigt.h file now contains only information about public
      functions and does not have any code which depends on current
      internal implementation - it should be backword compatible as long
      as somone did not try to use internal GT functions.
      The internal GT system use hbgtcore.h file which should not be
      included by 3-rd party code as long as someone will not make new
      GT driver. The internal GT code is new so I expect that it will
      be changed yet in the nearest future (I'm waiting for other developers
      feedback) and in such case any 3-rd party GTs will have to be updated.
      How it works:
         The base GT driver (GTNUL) is fully functional GT driver which
         makes all operations on memory buffer. After each screen write
         Flush() method is called which check for dispcount() and if
         it's 0 then call Refresh() method to update modified area by
         Redraw() method. This method is dummy in GTNUL and external
         output with this GT can be reached by outstd()/outerr() which
         are now redirected to GT methods. A simple GT driver may overload
         only Refresh() method to give full screen output.
         Application can use only this GT driver and it seems to be very
         good choice for GUI and background daemon/service programs.
         This GT is loaded at startup then all other GTs can be loaded
         later and inherit from the previously loaded GT drivers.
         The new GT driver can overload as much method as wants/needs.
         Now all GT operations are implemented as GT method so GT driver
         can easy change their default behavior, f.e. it may fully overload
         color parsing methods and use differ or extended to Clipper color
         definitions.
         I rewrote all existing GTs to work with new GT model.
         OS2 users - please test GTOS2 which I was not able to test and
         see the note in Redraw() method. If possible please make some
         speed tests.
         In fact now there is much more internal operations then it was
         before but because they are done on memory only then current
         code is much faster in this GT drivers which so far makes all
         operations on real video area. I made some tests with GTNUL
         and tests/vidtest.prg and the total overhead is minimal. Now
         dipbegin()/dispend() in practice does not cost anything so it
         gives additional speed improvement in application which extensively
         use it.
         More then one GT driver can be linked with final binaries and
         chose on application startup by //GT<NAME> switch and/or environment
         variable HB_GT=<name>
         In the RTL is new GT function GTSYS() which works in similar way
         to RDDSYS() in RDD subsystem and for linking default GT driver
         for given platform. When RTL is compiled the default GT driver
         is set to HB_GT_DEFAULT envvar and if not exist to HB_GT_LIB
         envvar and if it also does not exist to hard coded platfom GTs
         (see source/rtl/gtsys.c and source/rtl/Makefile for rules)
         Adding to source code:
            ANNOUNCE GTSYS
         disable linking the default GT driver and:
            REQUEST HB_GT_<name>
         for linking given (<name>) GT driver, f.e.: REQUEST HB_GT_WIN
         If you are working in SH environment (Linux and other *nixes users,
         DJGPP bash, MinGW shell then it's possible to use -gt<name> switch
         in hblnk / hbmk scripts to force linking GT drivers (it could be
         repeated with different <name>) and the first one becomes the default
         one. F.e.:
            xhbmk -m -n -w -es2 -gtcrs -gtsln -gtstd -gtpca vidtest.prg
         Usually the GT driver are loaded at HVM startup but it's possible
         to load it later. I created new GT driver CTW which gives full
         CT3 like Window system. The CT3 extended driver change the behavior
         of some function in Clipper extended driver, f.e WRITECON() or
         SETPOS() with parameters out of screen range. So I implemented it
         CTW as RT GTs which is loaded when some of CTWIN function is used
         (f.e. WOPEN()/WBOARD()) and inherits from any existing GT driver.
         This is full CT3 WIN implementation with all detail behaviors I
         found (with some CT3 bug fixes). It does not have any CT3 limitations
         and can be used for any virtual screen/window size though I hardcoded
         CT3 limitation for backword compatibility. If somone will want to
         remove it then it will be enough to delete few lines from ctwin.c
         file. I'm not CTWIN Clipper user so maybe I missed some side effects
         in this driver and was not able to well test it so if you will find
         any incompatibilities then please inform me.
         THe default GT buffer uses 32bit character cell internally but
         in savescreen/restscreen it uses VGA compatible two bytes character
         cell. Some GT drivers may want to use differ character cell.
         Now GTCRS and GTSLN use 32bit character cell by default. They
         need additional information about character set (box/normal) to
         properly display box characters. It is possible to force in this
         GT drivers using Clipper compatible character cell by calling:
            hb_gtInfo( GTI_COMPATBUFFER, <lCompat> ) -> <lPreviousSeting>
         but in may cause that box drawing characters will be lost in
         some countries after RESTSCREEN(). It will depend on used code
         page.
         HB_GTINFO() is new function which works in similar way to DBINFO()
         in RDD. It allows to retrieve/change some of GT driver settings.
         GTI_* actions are defined in hbgtinfo.ch - it has all GTI_*
         definitions used in xHarbour. Now in Harbour only few of them
         are implemented.
         The new three .prg functions:
            HB_SETKEYCP( <cTermCP> [,<cHostCP>] )
            HB_SETDISPCP( <cTermCP> [,<cHostCP>] [,<lBoxChar>] )
            HB_SETTERMCP( <cTermCP> [,<cHostCP>] [,<lBoxChar>] )
         have been added. They set automatic input (HB_SETKEYCP)
         and output (HB_SETDISPCP) (or both: HB_SETTERMCP) character
         translation. They are also important for some GTs which
         informing them about used internal code page for unicode
         translation (GTXWC, GTSLN) and/or chosing proper character
         set (standard/alternate) for letters and other (f.e. box
         drawing characters) (GTCRS, GTSLN),
            <cTermCP> is encoding used on external (terminal) side
            <cHostCP> is encoding used internally, if not given then
                      current code page set HB_SETCODEPAGE() is used.
                      some of GTs which uses unicode output may
                      ignore <cTermCP>
            <lBoxChar> is optional parameter which interacts with dispbox()
                       output disabling switching to alternate character
                       set in some GTs. It effectively causes that if internal
                       (host) code page contains some letters on the box char
                       positions then they will be shown also by box drawing
                       functions like dispbox() instead of CP437 characters.
                       In some cases it could be useful. By default lBoxChar
                       is not set and GTs which can switch between standard
                       and alternate character set (GTCRS, GTSLN) will try to
                       use alternate character set for box drawing functions.

      Victor: I removed some of your functions. They can be very easy
      implemented with hb_gt_GetChar()/hb_gt_PutChar() but I do not want to
      make them part of documented external API because some GT drivers may
      want to use absolutely differ color definitions and they will stop to
      work so I do not want to make this functions documented external API.

      Ryszard: Setting alternative debug keys does not longer work.
      I like such possibilities but it should be implemented in differ
      way to f.e. using HB_GTINFO interface to allow low level GT driver
      extensions, f.e. in *nixes using CTRL+[A-Z] and SIGINT, SIGQUIT,
      SIGTSTP signals for real asynchronous setting of debug/cancel flag
      without keyboard polling from main HVM loop. I would like to discus
      about such more general solution.

   *** Please updated non GNU make files ***
2006-02-04 16:16:48 +00:00