Commit Graph

577 Commits

Author SHA1 Message Date
Viktor Szakats
24ec421a42 2008-05-21 17:45 UTC+0100 Viktor Szakats (harbour.01 syenar hu)
* harbour.spec
     + Added HU translation (cpwin).

   * source/rtl/gtfunc.c
     % Minor opt.

   * source/rtl/console.c
   * source/rtl/fserror.c
   * source/rtl/strmatch.c
   * source/rtl/padr.c
   * source/rtl/hbhex.c
   * source/rtl/at.c
   * source/rtl/abs.c
   * source/rtl/dates.c
   * source/rtl/padc.c
   * source/rtl/mod.c
   * source/rtl/hbrandom.c
   * source/rtl/filesys.c
   * source/rtl/padl.c
   * source/rtl/val.c
   * source/rtl/hbregex.c
   * source/vm/runner.c
   * source/vm/hashes.c
   * source/vm/itemapi.c
   * source/vm/hvm.c
   * source/vm/maindllp.c
   * source/vm/fm.c
   * source/vm/arrayshb.c
   * source/vm/classes.c
   * source/common/hbtrace.c
     * Formatting (whitespace only)
2008-05-21 15:50:34 +00:00
Przemyslaw Czerpak
1bb3ab7eb9 2008-05-21 11:10 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/rtl/tbrowse.prg
    * updated some comments

  * harbour/source/vm/hvm.c
  * harbour/source/vm/classes.c
    * formtting
2008-05-21 09:10:52 +00:00
Przemyslaw Czerpak
4fc1e5ae99 2008-05-08 14:31 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/rtl/tbrowse.prg
    ! fixed positioning when cursor is moved by :rowpos assignment and
      vertical move methods used together

  * harbour/source/vm/estack.c
    * updated hb_stackDispCall(), hb_UnhandledExceptionFilter(),
      OS2TermHandler() to show functions where codeblock where
      defined instead of EVAL() just like in call stack presented
      by cancel operation
    * updated hb_UnhandledExceptionFilter() to work in unicode mode

  * harbour/source/vm/hvm.c
    ! fixed 1-st procedure presented in call stack during cancel operation
      to use the same conditions as for all others
2008-05-08 12:32:12 +00:00
Viktor Szakats
53030631bf 2008-05-07 11:21 UTC+0100 Viktor Szakats (harbour.01 syenar hu)
* contrib/rddads/make_b32.bat
   * contrib/rddads/make_vc.bat
   * contrib/rddads/ads.ch
   * contrib/rddads/rddads.h
   * contrib/rddads/ads1.c
   * contrib/rddads/adsfunc.c
   * contrib/rddads/adsmgmnt.c
     + Added ACE version autodetection.
       You can override with: -DADS_LIB_VERSION=700 (and similar)
       (ADS_REQUIRE_VERSION still accepted for compatibility)
     ! Fixed a few lib version related problems.
     ! hMgmtHandle global renamed to ads_g_hMgmtHandle.
     * Formatting.

   * contrib/rddads/rddads.h
     + QUESTION: added about ADS_MAX_KEY_LENGTH redefinition.
       Is it needed?

   * source/compiler/hbmain.c
     * Changed output device (hb_compOutStd() -> hb_compOutErr()) 
       for following texts:
       "Compiling..."
       "No code generated"
       "Lines x, Functions/Procedures x"
       This is to replicate CA-Cl*pper behaviour a bit more.

   * include/hbextern.ch
   * common.mak
   * source/rtl/Makefile
   * source/rtl/maxrow.c
   + source/rtl/scrrow.c
   * contrib/xhb/hbcompat.ch
     + Added hb_ScrMaxRow(), hb_ScrMaxCol()
       These will return the screen dimensions regardless 
       of the size of an active window (when using CT 
       windows for example). Functionality is the same 
       as MaxRow(.T.) and MaxCol(.T.) previously.
     ! MaxRow()/MaxCol() extended parameters removed.
     + Added MaxRow(.T.)/MaxCol(.T.) conversions for 
       xhb lib (hbcompat.ch) in both directions.
     ; XBase++ doesn't have any extended parameters 
       for Max*() function. Flagship has two of them, 
       both of them doing something different. CAVO doesn't 
       have these functions at all.

   * contrib/xhb/hbcompat.ch
     ! GTI_* macros updated to HB_GTI_*.

   * source/vm/memvclip.c
     % Minor opt in __QQPUB().

   * source/vm/extend.c
     * 0 -> NULL

   * source/vm/estack.c
     - QUESTION removed.

   * source/lang/msgbgmik.c
   * source/rtl/console.c
   * source/rtl/philes.c
   * source/rtl/adir.prg
   * source/rtl/getsys53.prg
   * source/rtl/getsys.prg
   * source/rtl/tget.prg
   * source/rtl/ttopbar.prg
   * source/rtl/pushbtn.prg
   * source/rtl/mod.c
   * source/rtl/memofile.c
   * source/rtl/radiobtn.prg
   * source/rtl/filesys.c
   * source/rtl/tbrowse.prg
   * source/vm/estack.c
   * source/vm/itemapi.c
   * source/vm/hvm.c
   * source/vm/cmdarg.c
   * source/vm/fm.c
   * source/vm/eval.c
   * source/common/hbver.c
   * source/common/expropt2.c
   * utils/hbtest/hbtest.prg
   * utils/hbtest/rt_misc.prg
   * utils/hbtest/rt_str.prg
     ! Comment fixes and minor formatting.
2008-05-07 10:26:41 +00:00
Viktor Szakats
afe85d8f42 2008-04-26 07:53 UTC+0100 Viktor Szakats (harbour.01 syenar hu)
* source/rtl/tget.prg
     ! Fixed to not extend ::left(), ::right(), ::backspace(), 
       ::delete() with an internally used (but also externally 
       accessible) extra parameter. This is interface is now 
       made fully C5x compatible.

   * tests/rto_tb.prg
     ! Fixed to override __eInstVar53() (instead of _eInstVar())

   * include/hbextern.ch
   * common.mak
   * source/rdd/Makefile
   + source/rdd/dbcmdhb.c
     + Added non-internal versions of __dbPack() and __dbZap(), 
       named: hb_dbPack() and hb_dbZap(). If group needs it I 
       can add dbPack() and dbZap() too in separate files to 
       lessen the problem of name collision with app code.

   * source/rtl/inkey.c
     * Formatting.
     + HB_KEYPUT(): Now possible to pass an array with string elements.
       (see feature in xhb/__KEYBOARD())
     * HB_KEYPUT(): For string parameter it now uses hb_inkeySetText()
       API, rather than a loop of hb_inkeyPut()s.

   * contrib/xhb/xhbfunc.c
     ! xhb flavour of __KEYBOARD() sync fixed. (hb_inkeySetText() got 
       extended in xhb, so here we're using hb_inkeyPut() for single 
       numeric key codes).
     ; Now same code is used as in HB_KEYPUT().

   * source/vm/memvars.c
   * source/vm/hvm.c
   * source/vm/arrayshb.c
     + Added HB_C52_STRICT branches for the remaining RTEs 
       which produced different results in hbtest.
     ! Fixed HB_C52_STRICT RTE for AFill().
     ; NOTE: It's not possible to build Harbour currently when 
             HB_C52_STRICT, so it's not easy to test these.

   * include/hbclass.ch
     ! Typos.

   * source/rtl/memoedit.prg
   * source/rtl/achoice.prg
   * source/rtl/treport.prg
     * Formatting.

   * source/rtl/tobject.prg
     * Formatting.
     % Minor opt.
2008-04-26 06:39:37 +00:00
Przemyslaw Czerpak
f181406951 2008-04-16 14:41 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbclass.ch
    ! removed:
         MESSAGE <msgName> IS <mthName>
      used as synonym of:
         MESSAGE <msgName> METHOD <mthName>
      If someone was using the removed version then please update the
      code to MESSAGE ... METHOD ...
      The removed command has special meaning in Class(y) and it allow
      to define alternate names for existing messages. I'll add support
      for them in the future.

  * harbour/contrib/hbct/ctwin.c
    * added disabled code which is a workaround for some possible
      bad side effect caused by online shadow showing by CTWIN.

  * harbour/source/rtl/errorint.c
    ! fixed displaying internal error message

  * harbour/source/common/hbver.c
    * added "Rev." prefix to shown revision number

  * harbour/include/hbexprop.h
  * harbour/include/hbexprb.c
  * harbour/source/common/expropt1.c
  * harbour/source/common/expropt2.c
    + added hb_compExprReduceNegate()
    ! fixed wrong negate optimizations for platforms where HB_LONG_MAX
      is smaller then -HB_LONG_MIN, f.e. all x86 based CPUs.
    ! fixed setting the size in optimized negative numbers
    ! fixed some math optimizations to not use casting to double value
      when it's not necessary - when double precision is smaller then HB_LONG
      (f.e. on x86 it's 53 bits and HB_LONG has 64bit) such casting can damage
      up to 11 less significant bits in big 64 bit numbers.

  * harbour/source/rtl/hbinet.c
    * replaced MAKEWORD() macro with HB_MKWORD() to pacify BCC58 warnings

  * harbour/include/hbdefs.h
    + added #include <limits.h>
      It should hide some warnings related to redefined integer size constants
      Viktor if it will not help for BCC58 warnings then you will have to add
         #include <stdint.h>
      few lines below but please remember that older BCC version does not
      have it so check for the exact compiler version.
    ! changed macros which setting default numeric item size for more strict
      Clipper compatible mode. I'm not a fun of some Clipper behavior in
      calculating number size and I left some notes about it in hbdefs.h
      Anyhow this and some other modifications below should cover the
      differences you've found recently. Some things are not addressed by
      me intentionally, f.e. _itemPutNL() in Clipper always set size to 10
      without checking the maximum size so it's too small for values less
      then -999999999. Harbour compiler makes more compile time optimizations
      then Clipper. The formatting rules used by compiler are a little bit
      different then by VM so this can be source of some other differences
      to Clipper. I can easy create some examples. Harbour supports 64bit
      signed integers and Clipper doesn't. This is yet another situation
      when we may have different results then Clipper. Most of them can
      be hidden if we add new PCODE(s) for integer number with explicit
      size but I do not think it's such important to increase PCODE list.
      In few cases it will be necessary to disable some optimizations at
      all and I do not like it. In the future when I will be adding some
      new optimizations I also add compiler switch to disable/enable
      optimizations which can have such side effects for people who need
      strict formatting.

  * harbour/include/hbvmpub.h
  * harbour/source/common/hbstr.c
  * harbour/source/vm/hvm.c
  * harbour/source/vm/itemapi.c
  * harbour/source/rtl/round.c
    * updated for more Clipper compatible number formating using new macros
2008-04-16 12:42:05 +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
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
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
c1d94577cb 2007-11-24 20:10 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/rtl/gtwvt/gtwvt.h
  * harbour/source/rtl/gtwvt/gtwvt.c
    * removed unused global hdc
    * formatting and minor code cleanup

  * harbour/source/vm/hvm.c
    + added to hb_vmRequestReenter() support for checking if HVM is
      properly initialized and working for code which may want to execute
      PCODE before HVM initialization or after HVM close - in such case
      hb_vmRequestReenter() will return FALSE.
      Please also remember that in the future hb_vmRequestReenter()
      may return FALSE also in some other cases.

  * harbour/source/vm/eval.c
    * use hb_vmRequestReenter()/hb_vmRequestRestore() in hb_itemDo[C]()
      instead of hb_vmPushState()/hb_vmPopState()

  * harbour/contrib/gtwvg/gtwvt.c
    ! always use hb_vmRequestReenter()/hb_vmRequestRestore() before
      executing .prg functions/codeblocks. It will resolve the problem
      with executing .prg functions during HVM closing. Anyhow I suggest
      to register C cleanup functions using hb_vmAtExit() for code which
      needs some additional destructor/closing procedure.
    * code formatting and indenting
2007-11-24 19:10:45 +00:00
Przemyslaw Czerpak
7f59b345ce 2007-11-23 01:19 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbvm.h
  * harbour/source/vm/hvm.c
    * make hb_vmPushNumInt() public function

  * harbour/contrib/gtwvg/wvtcore.c
    ! fixed hb_wvt_gtDlgProcMLess() and hb_wvt_gtDlgProcModal()
      - fixed GPF when codeblock are used
      - use hb_vmPushNumInt() instead of hb_vmPushLong() to push
        handles and numbers with potentially unknown size.
        I still suggest to use pointers ITEMs instead of converting
        handles to numbers but I'm leaving such modifications to library
        authors - using hb_vmPushNumInt() is a workaround for striping
        highest 32 bit from handles by hb_vmPushLong() in XP64 
      - use hb_vmRequestReenter() / hb_vmRequestRestore() to avoid crash
        when function/codeblock is executed during HVM has been serving
        an exception (f.e. BREAK/QUIT/RETURN)
2007-11-23 00:20:02 +00:00
Viktor Szakats
6d733d7695 2007-11-10 17:35 UTC+0100 Viktor Szakats (harbour.01 syenar.hu)
* source/vm/hvm.c
     ! Fixed unused var warning when HB_NO_DEBUG was defined 
       and TRACE disabled. (Reported by Enrico Maria Giordano)
2007-11-10 16:40:54 +00:00
Przemyslaw Czerpak
7aa8292529 2007-11-04 19:20 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbcomp.h
  * harbour/include/hbmacro.h
  * harbour/source/compiler/hbmain.c
  * harbour/source/compiler/harbour.y
  * harbour/source/vm/macro.c
  * harbour/source/vm/garbage.c
  * harbour/source/vm/hvm.c
  * harbour/source/vm/classes.c
  * harbour/source/rdd/dbf1.c
  * harbour/source/rdd/dbffpt/dbffpt1.c
  * harbour/source/rtl/binnum.c
  * harbour/source/rtl/gtwvt/gtwvt.c
    * added explicit casting or changed some declarations to avoid
      warning about possible data lost in conversions
  * harbour/source/rtl/direct.c
    % optimized directory array creation and fixed one TOFIX note

   I left few warnings intentionally to mark places which should be
   updated in the future (f.e. HB_SYMBOLSCOPE translations).
   Victor, if you can please make build test with MSVC builds and
   send the list of warnings which still exist to harbour-devel.
2007-11-04 18:21:17 +00:00
Przemyslaw Czerpak
32f17091b8 2007-10-26 03:46 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbstack.h
  * harbour/include/hboo.ch
  * harbour/ChangeLog
  * harbour/utils/hbmake/hbmlang.c
  * harbour/utils/hbpp/hbppcore.c
  * harbour/utils/hbpp/hbpp.c
  * harbour/source/pp/ppcore.c
  * harbour/source/rtl/cdpapi.c
  * harbour/source/rtl/gtcrs/gtcrs.c
  * harbour/source/rtl/gtalleg/fixedth.sfc
  * harbour/source/rtl/fstemp.c
  * harbour/source/rtl/idle.c
  * harbour/source/rtl/gtstd/gtstd.c
  * harbour/source/rtl/gttrm/gttrm.c
  * harbour/source/rtl/gtpca/gtpca.c
  * harbour/source/rtl/hbffind.c
  * harbour/source/rtl/hbregex.c
  * harbour/source/vm/hvm.c
  * harbour/contrib/xhb/hboutdbg.c
  * harbour/contrib/xhb/hbxml.c
  * harbour/contrib/xhb/hbxml.h
  * harbour/contrib/xhb/cstructc.c
  * harbour/contrib/xhb/hbsyslog.c
  * harbour/contrib/libmisc/hb_f.c
  * harbour/contrib/libnf/fttext.c
  * harbour/contrib/libnf/mouse.c
  * harbour/contrib/tip/encmthd.c
  * harbour/contrib/rdd_ads/ads1.c
  * harbour/contrib/rdd_ads/ace.h
  * harbour/contrib/btree/hb_btree.c
  * harbour/contrib/samples/status.c
  * harbour/contrib/samples/gauge.c
  * harbour/contrib/odbc/odbc.c
  * harbour/contrib/bmdbfcdx/hbrddbmcdx.h
  * harbour/contrib/bmdbfcdx/bmdbfcdx1.c
    * cleanup errors in strict ANSI C compilation
2007-10-26 01:47:21 +00:00
Przemyslaw Czerpak
c5c1113387 2007-10-08 23:05 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/vm/hvm.c
    * do not clear references to public functions in symbol tables used
      by unloaded modules

  * harbour/source/compiler/complex.c
    + added disabled yet code to decode datetime in VFP strict date form
         {^YYYY/MM/DD[,][HH[:MM[:SS[.CCC]]][A|P]]}
      It's for future datetime implementation.
2007-10-08 21:06:12 +00:00
Przemyslaw Czerpak
053e67ddeb 2007-10-06 12:45 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbsetup.h
  * harbour/source/rtl/hbffind.c
  * harbour/source/rtl/filesys.c
    * cleanup

  * harbour/source/vm/hvm.c
    % use extended reference for enumerator destructor - it eliminates
      3 hb_itemNew() calls reducing the cost of creating FOR EACH envelope
      about 40%
2007-10-06 10:45:13 +00:00
Przemyslaw Czerpak
0ce94714e6 2007-10-05 23:44 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbsetup.h
    * minor cleanup comment
  * harbour/source/vm/hvm.c
    * save/restore return value in extended references
2007-10-05 21:44:46 +00:00
Przemyslaw Czerpak
9e390bcdcf 2007-10-04 12:36 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/vm/hvm.c
    ! removed one call to hb_vmRequestRestore() left by mistake
    % minor optimization
2007-10-04 10:37:00 +00:00
Przemyslaw Czerpak
b5d010fbeb 2007-10-01 19:42 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/rtl/errorapi.c
    + added protection against possible GPF when some assign methods
      were called without parameters

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  * harbour/contrib/Makefile
    + added TIP and XHB

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

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

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

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

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

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

      or:

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

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

  * harbour/source/rtl/gttrm/gttrm.c
    * small cleanup
2007-09-28 12:08:46 +00:00
Przemyslaw Czerpak
893ba137b4 2007-09-27 14:40 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/contrib/rdd_ads/ads1.c
  * harbour/source/rdd/workarea.c
  * harbour/source/rdd/dbf1.c
    * recognize field { "T", 4, 0 } as TIME and { "T", 8, 0 } as DAYTIME

  * harbour/source/vm/hvm.c
    * formatting
2007-09-27 12:40:32 +00:00
Przemyslaw Czerpak
d8813e5b29 2007-09-26 02:30 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbclass.ch
    + added:
         ON ERROR FUNCTION <FuncName>
         OPERATOR <op> FUNCTION <FuncName> <scope>

  * harbour/include/hbapicls.h
  * harbour/source/vm/classes.c
  * harbour/source/vm/hvm.c
    + added support for overloading right side $ operator

  * harbour/contrib/xhb/xhbfunc.c
    * rewritten xhb_ains() and xhb_adel() in C

  * harbour/contrib/xhb/xhb.ch
    * changed AINS() conversion to be xHarbour compatible

  * harbour/contrib/xhb/Makefile
    + added xhb.ch to PRG_HEADERS so it's installed automatically
      during 'make install'

  * harbour/contrib/xhb/Makefile
  + harbour/contrib/xhb/xhbmsgs.c
  * harbour/contrib/xhb/xhbcomp.prg
    + added support for $ operator used with hashes and arrays
      on right side working _exactly_ like in xHarbour.
    + added support for negative indexes in used in [] operator
      for array and strings.
      Please remember that standard harbour build (without
      HB_COMPAT_XHB flag) generate warning for negative indexes,
      if you wan to pacify them then instead of var[-1] use var[(-1)]
    + added support for assign string characters with [] index.
      Please remember that for standard harbour build (without
      HB_COMPAT_XHB flag) you have to use -ks compile time switch
      if you want to assign strings in such way because this feature
      needs different PCODE, f.e. try to compile this code:
         proc main()
            local s:="ABC"
            s[(-1)] := "*"
            ? s
         return
      with and without -ks switch
    + added support for accessing hash items using OO interface, f.e.:
         proc main()
            local h:={"ABC"=>123.45,"XYZ"=>567.89}
            ? h["ABC"], h["XYZ"]
            ? h:ABC, h:XYZ
            h:ABC+=1000
            h:XYZ:=-2000
            ? h:ABC, h:XYZ
         return

      All of the above extensions are written in C code so the speed
      overhead is very small. Harbour evaluates PCODE faster then xHarbour
      so in speed tests where above operators are executed in loop without
      any other code the xHarbour results with native support are comparable
      with Harbour ones where above operators are overloaded using scalar
      classes so in normal code you should not find any difference with
      one exception for assigning characters in very long strings.
2007-09-26 00:30:47 +00:00
Przemyslaw Czerpak
72eca3d3e9 2007-09-18 00:45 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbapicls.h
  * harbour/source/vm/hvm.c
    + added hb_clsDoInit() function to initialize classy .prg functions

  * harbour/source/compiler/complex.c
    * allow to use NIL as class name

  * harbour/source/compiler/harbour.yyc
  * harbour/source/compiler/harbour.y
  * harbour/source/compiler/harbour.yyh
    % optimize automatically var[0] declaration and generate the same
      PCODE as for var:={}

  * harbour/source/rtl/tscalar.prg
    + added HASH, POINTER and SYMBOL scalar classes
    * changed NIL class to not use any instance variables

  * harbour/source/vm/classes.c
    + added support for scalar classes. Now at startup classy code looks
      for hb<TYPENAME> functions and try to execute them to register
      scalar classes. It's Class(y) compatible behavior and only the prefix
      of scalar ceases class function is different: 'CSY' in class(y) and
      'HB' in Harbour, f.e.: hbNumeric()
      If you prefer xHarbour like not automatic scalar class registration
      with some PP commands:
         ASSOCIATE CLASS <ClassName> WITH TYPE
                           ARRAY|BLOCK|CHARACTER|DATE|HASH|LOGICAL|NIL|
                           NUMERIC|POINTER|SYMBOL
         ENABLE CLASS TYPE ALL
         ENABLE TYPE CLASS ARRAY|BLOCK|CHARACTER|DATE|HASH|LOGICAL|NIL|
                           NUMERIC|POINTER|SYMBOL
         EXTEND [TYPE] ARRAY|BLOCK|CHARACTER|DATE|HASH|LOGICAL|NIL|
                       NUMERIC|POINTER|SYMBOL WITH METHOD <SomeFunc>
      Then I can replace current code with it. If not then we should
      divide scalar cases definitions into separated files to allow
      easier overloading. I'm interesting in your opinions.
2007-09-17 22:45:30 +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
d03f0a3274 2007-07-02 14:10 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbcompat.ch
    + added hb_CStr() <=> CStr() translations

  * harbour/common.mak
  * harbour/source/rtl/Makefile
  + harbour/source/rtl/hbbit.c
    + added set of hb_bit*() functions for bit manipulations:
      HB_BITAND( <nVal1>, <nVal2>, [<nVal3,...>] ) => <nResult>
      HB_BITOR( <nVal1>, <nVal2>, [<nVal3,...>] ) => <nResult>
      HB_BITXOR( <nVal1>, <nVal2>, [<nVal3,...>] ) => <nResult>
      HB_BITNOT( <nVal> ) => <nResult>
      HB_BITTEST( <nVal>, <nBit> ) => <lResult>
      HB_BITSET( <nVal>, <nBit> ) => <nResult>
      HB_BITRESET( <nVal>, <nBit> ) => <nResult>
      HB_BITSHIFT( <nVal>, <nBits> ) => <nResult>

  * harbour/contrib/tip/Makefile
  * harbour/contrib/tip/utils.c
  * harbour/contrib/tip/popcln.prg
  * harbour/contrib/tip/Changelog
  * harbour/contrib/tip/cgi.prg
  * harbour/contrib/tip/url.prg
  * harbour/contrib/tip/httpcln.prg
  * harbour/contrib/tip/client.prg
  * harbour/contrib/tip/encoder.prg
  * harbour/contrib/tip/smtpcln.prg
  * harbour/contrib/tip/mail.prg
  * harbour/contrib/tip/ftpcln.prg
  + harbour/contrib/tip/thtml.prg
  + harbour/contrib/tip/thtml.ch
  - harbour/contrib/tip/cstr.prg
    * synced with recent xHarbour modifications - please test

  * harbour/source/vm/hvm.c
    * formatting

  * harbour/source/rdd/delim1.c
  * harbour/source/rdd/dbf1.c
  * harbour/source/rdd/sdf1.c
    % do not copy date value to separate memory buffer but decode dates
      directly from record buffer

  * harbour/source/compiler/hbopt.c
    * optimize PCODE generated for:
         return <somefunc>([<params,...>])
2007-07-02 12:10:38 +00:00
Przemyslaw Czerpak
685393a361 2007-06-23 11:10 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/rtl/gtchrmap.c
  * harbour/source/rtl/gttrm/Makefile
  * harbour/source/rtl/gttrm/gttrm.c
    + set Id keyword property

  * harbour/source/common/expropt1.c
    ! fixed typo in HB_TRACE() parameters

  * harbour/include/hbapicdp.h
  * harbour/include/hbapirdd.h
  * harbour/source/rtl/strcase.c
  * harbour/source/rtl/is.c
  * harbour/source/rtl/gtxwc/gtxwc.h
  * harbour/source/rtl/gtxwc/gtxwc.c
  * harbour/source/rtl/gtstd/gtstd.c
  * harbour/source/rtl/gtsln/gtsln.c
  * harbour/source/rtl/gtsln/gtsln.h
  * harbour/source/rtl/gtpca/gtpca.c
  * harbour/source/rtl/gtcgi/gtcgi.c
  * harbour/source/rdd/dbfcdx/dbfcdx1.c
  * harbour/source/vm/hvm.c
    ! fixed compilation with HB_CDP_SUPPORT_OFF - I do not plan to
      create such builds but now these macro allow to easy locate
      CDP dependent code

  * harbour/include/hbextern.ch
  * harbour/source/rtl/cdpapi.c
    + added two prg functions for translations from/to UTF-8:
         HB_STRTOUTF8( <cStr> [, <cCPID> ] ) -> <cUTF8Str>
         HB_UTF8TOSTR( <cUTF8Str> [, <cCPID> ] ) -> <cStr>
      <cCPID> is Harbour codepage id, f.e.: "EN", "ES", "ESWIN",
      "PLISO", "PLMAZ", "PL852", "PLWIN", ...
      When not given then default HVM codepage (set by HB_SETCODEPAGE())
      is used.
2007-06-23 09:13:50 +00:00
Przemyslaw Czerpak
113866e6a1 2007-06-20 21:05 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbgtinfo.ch
    + added GTI_ADDKEYMAP and GTI_DELKEYMAP

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

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

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

  * harbour/include/hbapi.h
    * cleanup comment

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

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

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

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

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

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

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

  * harbour/bin/hb-func.sh
  * harbour/config/hpux/global.cf
  * harbour/config/darwin/global.cf
  * harbour/config/linux/global.cf
  * harbour/config/sunos/global.cf
  * harbour/config/bsd/global.cf
    + added GTTRM to library list
2007-06-20 19:07:37 +00:00
Przemyslaw Czerpak
f86b9acb5d 2007-06-11 11:30 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/compiler/genc.c
    * allow to use #pragma begindump / enddump in .prg files without
      any .prg code

  * harbour/source/vm/hvm.c
    ! fixed assign in overloaded []
2007-06-11 09:32:03 +00:00
Przemyslaw Czerpak
4027757574 2007-06-06 12:05 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbapicls.h
    * changed extern hb_bProfiler to local HVM static variable
  * harbour/source/vm/hvm.c
    + added two macros HB_NO_TRACE and HB_NO_DEBUG for these people
      who needs/wants to test HVM speed without debugger support
      and PRG call tracing - the difference is rather small
2007-06-06 10:05:40 +00:00
Przemyslaw Czerpak
973468286a 2007-06-04 20:10 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbexprb.c
  * harbour/include/hbexprop.h
  * harbour/source/common/expropt2.c
    % added compile time optimization for CTOD("")
    % added compile time optimization for - used forconstant string values,
      f.e.:
         ? "Harbour   " - " Compiler"

  * harbour/source/vm/hvm.c
    % added optimization for string resizing in cVal1 - cVal2

  * harbour/source/rtl/dateshb.c
    % minor optimization - removed one not necessary ISCHAR()
2007-06-04 18:11:04 +00:00
Przemyslaw Czerpak
581507c90d 2007-06-01 15:10 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/harbour.spec
    * set attributes explicitly to clean some wrong attributes committed
      to CVS and minor cleanup

  * harbour/include/hbapierr.h
  * harbour/source/rtl/errorapi.c
    + added hb_errorBlock()

  * harbour/source/macro/macro.yyc
  * harbour/source/compiler/harbour.yyc
    * manual hack to pacify BCC warning messages

  * harbour/include/hbpcode.h
  * harbour/include/hbxvm.h
  * harbour/source/compiler/genc.c
  * harbour/source/compiler/gencc.c
  * harbour/source/compiler/harbour.y
  * harbour/source/compiler/harbour.yyc
  * harbour/source/compiler/hbdead.c
  * harbour/source/compiler/hbfix.c
  * harbour/source/compiler/hblbl.c
  * harbour/source/compiler/hbmain.c
  * harbour/source/compiler/hbopt.c
  * harbour/source/compiler/hbpcode.c
  * harbour/source/compiler/hbstripl.c
  * harbour/source/vm/hvm.c
    + added support for:
         BEGIN SEQUENCE WITH <errorBlockExp>
            [<statements;...>]
         [ RECOVER [ USING oErr ] ]
            ...
         [ ALWAYS ]
            ...
         END
      It works like normal BEGIN SEQUENCE but sets <errorBlockExp> as
      ErrorBlock() before executing <statements;...> and restore
      previous ErrorBlock() at the end or when exception will appear.
      I hope it will make some xHarbour user happy ;-)

  * harbour/include/hbcompat.ch
    + added preprocessor directive for TRY / CATCH / FINALLY / END
      working like in xHarbour - translated to:
         BEGIN SEQUENCE WITH { |oErr| Break( oErr ) }
            ...
         [ RECOVER [ USING oErr ] ]
            ...
         [ ALWAYS ]
            ...
         END
2007-06-01 13:12:29 +00:00
Przemyslaw Czerpak
0724963ab3 2007-05-26 09:05 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/pp/ppcore.c
    ! fixed bug reported by Lorenzo

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

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

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

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

  * harbour/source/vm/garbage.c
    * comment
2007-05-26 07:06:07 +00:00
Przemyslaw Czerpak
0ae81e63e3 2007-05-22 12:20 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/bin/hb-func.sh
    +  added -lpcreposix to system libraries when C_USR has -DHB_PCRE_REGEX
  * harbour/include/hbregex.h
    * removed pcre/ path from PCRE header files - if you want to build
      Harbour with PCRE regex and PCRE header files are not in default\
      path then set valid path in C_USR, f.e.:
         export C_USR="${C_USR} -DHB_PCRE_REGEX -I/usr/include/pcre"

  * harbour/include/hbxvm.h
  * harbour/source/compiler/gencc.c
  * harbour/source/vm/hvm.c
    * minor optimizatin for -gc3 output
2007-05-22 10:23:15 +00:00
Przemyslaw Czerpak
75bd21860c 2007-05-22 01:45 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbapi.h
  * harbour/include/hbapicls.h
  * harbour/include/hbcomp.h
  * harbour/include/hbvm.h
  * harbour/include/hbvmpub.h
  * harbour/source/compiler/genc.c
  * harbour/source/compiler/gencc.c
  * harbour/source/compiler/gencli.c
  * harbour/source/compiler/hbdead.c
  * harbour/source/compiler/hbfix.c
  * harbour/source/compiler/hblbl.c
  * harbour/source/compiler/hbopt.c
  * harbour/source/compiler/hbpcode.c
  * harbour/source/compiler/hbstripl.c
  * harbour/source/debug/dbgentry.c
  * harbour/source/rdd/wafunc.c
  * harbour/source/rtl/itemseri.c
  * harbour/source/rtl/gtsln/gtsln.c
  * harbour/source/vm/classes.c
  * harbour/source/vm/dynsym.c
  * harbour/source/vm/hvm.c
  * harbour/source/vm/memvars.c
  * harbour/source/vm/runner.c
    * casting: changed some 'char *' to 'const char *', added const to some
      other declarations, added workaround for GCC warnings about
      dereferencing pointer with strict-aliasing optimization, etc.
2007-05-21 23:45:41 +00:00
Przemyslaw Czerpak
c1ceed3cf0 2007-05-17 00:20 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/TODO
    * removed some not longer necessary TODO/TOFIX

  * harbour/common.mak
  * harbour/source/rtl/Makefile
  - harbour/source/rtl/memoline.c
  - harbour/source/rtl/mlcount.c
  - harbour/source/rtl/mlctopos.c
  - harbour/source/rtl/mlpos.c
  - harbour/source/rtl/mpostolc.c
  + harbour/source/rtl/mlcfunc.c
    * new version of memo line functions:
         MEMOLINE(), MLCOUNT(), MLPOS(), MLCTOPOS(), MPOSTOLC()

  * harbour/include/hbexpra.c
    ! fixed in HB_COMPAT_XHB build hb_enumIndex() used inside internal
      FOR/NEXT loop

  * harbour/include/hbpp.h
  * harbour/source/pp/ppcore.c
    ! removed some not longer necessary hack
    % added some speed optimizations - it's not done in the way I want to
      have in the final version but with some very small modifications it
      should make people using a lot of #[x]translate (Enrico ;-)) happy.

  * harbour/source/rtl/set.c
    * minor cleanup in HB_SET_EOL initialization

  * harbour/source/vm/hvm.c
    * clean MEMO flag in array and hash items created by { MEMOFILED, ... }
      or { "KEY" => MEMOFILED, ... } and optimized results of PLUS operation

  * harbour/utils/hbtest/rt_misc.prg
    * SET EOL to CHR(13) + CHR( 10 ) before MLCTOPOS() tests to avoid false
      alarm on platforms with differ default EOL
2007-05-16 22:20:36 +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
2bb711b6c8 2007-04-15 14:35 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/compiler/hbmain.c
  * harbour/source/vm/dbgentry.c
  * harbour/source/vm/hvm.c
    ! fixed GPF in debugger
2007-04-15 12:37:15 +00:00
Przemyslaw Czerpak
b7094ed42f 2007-04-13 03:00 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbapi.h
  + harbour/include/hbapidbg.h
  * harbour/include/hbcomp.h
  * harbour/include/hbcompdf.h
  * harbour/include/hbdebug.ch
  * harbour/include/hbdefs.h
  * harbour/source/compiler/Makefile
  * harbour/source/compiler/genc.c
  + harbour/source/compiler/hbdbginf.c
  * harbour/source/compiler/hbmain.c
  * harbour/source/debug/debugger.prg
  * harbour/source/rtl/altd.prg
  * harbour/source/vm/Makefile
  + harbour/source/vm/dbgentry.c
  * harbour/source/vm/debug.c
  * harbour/source/vm/hvm.c
    + added xHarbour compatible low level debugger code
      Without some small exceptions like my hbdbginf.c most of
      the code created by Phil Krylov <phil a t newstar.rinet.ru>
      and borrowed from xHarbour with some small modifications.

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

  * harbour/source/compiler/hbmain.c
    ! fixed memory leak when -build or -credit switches were used
2007-04-13 01:06:01 +00:00
Przemyslaw Czerpak
88cda3200d 2007-03-22 12:55 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/common.mak
    * updated for new files - please check

  * harbour/harbour.spec
    * added compiler library

  * harbour/bin/pack_src.sh
  * harbour/bin/hb-func.sh
    * updated for new files and libraries

  * harbour/config/w32/mingw32.cf
  * harbour/config/w32/watcom.cf
  * harbour/config/w32/xcc.cf
    * added winsock libraries

  * harbour/include/hbapicdp.h
  * harbour/source/rtl/cdpapi.c
    + added hb_cdpicmp() - not case sensitive version of hb_cdpcmp()

  * harbour/include/hbapiitm.h
  * harbour/source/vm/itemapi.c
    + hb_itemStrICmp(), hb_itemCopyFromRef(), hb_itemMoveFromRef()

  * harbour/include/hbapi.h
  * harbour/include/hbcomp.h
  * harbour/include/hbcompdf.h
  * harbour/include/hbexpra.c
  * harbour/include/hbexprb.c
  * harbour/include/hbexprop.h
  * harbour/include/hbmacro.h
  * harbour/include/hbpcode.h
  * harbour/include/hbvmpub.h
  * harbour/include/hbxvm.h
  * harbour/source/common/expropt1.c
  * harbour/source/compiler/complex.c
  * harbour/source/compiler/genc.c
  * harbour/source/compiler/gencc.c
  * harbour/source/compiler/gencli.c
  * harbour/source/compiler/genhrb.c
  * harbour/source/compiler/genobj32.c
  * harbour/source/compiler/harbour.y
  * harbour/source/compiler/harbour.yyc
  * harbour/source/compiler/harbour.yyh
  * harbour/source/compiler/hbdead.c
  * harbour/source/compiler/hbfix.c
  * harbour/source/compiler/hblbl.c
  * harbour/source/compiler/hbmain.c
  * harbour/source/compiler/hbopt.c
  * harbour/source/compiler/hbpcode.c
  * harbour/source/compiler/hbstripl.c
  * harbour/source/macro/macro.y
  * harbour/source/macro/macro.yyc
  * harbour/source/macro/macro.yyh
  * harbour/source/macro/macrolex.c
  * harbour/source/vm/Makefile
  * harbour/source/vm/arrays.c
  * harbour/source/vm/asort.c
  * harbour/source/vm/classes.c
  * harbour/source/vm/eval.c
  * harbour/source/vm/garbage.c
  * harbour/source/vm/hvm.c
  * harbour/source/vm/itemapi.c
  * harbour/source/vm/macro.c
  + harbour/source/vm/hashes.c
  + harbour/source/vm/hashfunc.c
    + added hash items, f.e.:
         local h1 := {=>}, h2 := { "a"=>1.234, "b"=>2.345 }
         ? h2[ "a" ], h2[ "b ]
    + added support for DYNAMIC function declaration - it allow to define
      functions which are lately bound at runtime, f.e.:
         /*** t01.prg ***/
         dynamic func1
         proc main()
         local h:=__hrbload("t02.hrb")
         ? func1()
         return

         /*** t02.prg ***/
         func func1
         return "Hello!!!"

    % use new FUNCALL structure to hold EXTERNAL and DYNAMIC functions,
      it reduce memory usage, FUNCALL is much smaller then FUNCTION
    % use symbol scope bits when possible instead of making some linear scan
    + added new enumarator message: __ENUMKEY - it allow to access
      key value when hash item is base enumerator value, f.e.:
         proc main()
         local v, h:={"a"=>1.000,"b"=>2.000,"c"=>3.000}
         heval( h, { |k,v,i| qout( k, v, i ) } ); ?
         for each v in h
            ? v, "=>", v:__enumKey(), v:__enumValue(), v:__enumIndex(), ;
                       valtype(v:__enumBase())
            v += 0.123
         next
         ? ;heval( h, { |k,v,i| qout( k, v, i ) } )
         return
    + added C level hb_hash*() functions
    + added support for full HASH item cloning and updated array cloning
      to also clone nested hashes - please note that xHarbour does not do
      that, in xHarbour ACLONE() clones _ONLY_ nested arrays and HCLONE()
      _DOES_NOT_ clone _ANY_ nested items.

  * harbour/include/hbextern.ch
    + added hash functions HB_H*()
    * changed INET*() functions to HB_INET*()
    + added hash functions H*() and socket functions INET*() when
      HB_COMPAT_XHB is set

  * harbour/include/hbtypes.h
    + added missing HB_EXTERN_BEGIN / HB_EXTERN_END

  * harbour/include/hbpp.h
  * harbour/source/pp/ppcore.c
    ! added protection against automatic word concatenation in some cases
    ! fixed preprocessing expressions when match marker matches ';' token

  * harbour/source/rtl/Makefile
  + harbour/source/rtl/itemseri.c
    + added functions for item serialization: HB_SERIALIZE() and
      HB_DESERIALIZE() - these function are not binary compatible
      with xHarbour functions with the same names but make very
      similar job with the exception to serialization of codeblock
      and object variables - Harbour does not allow to serialize
      codeblocks and serialize objects as arrays.
      In most cases these functions can replace the xHarbour ones
    + added HB_DESERIALBEGIN() and HB_DESERIALIZE() functions covered
      by HB_COMPAT_XHB macro - this functions are only for compatibility
      with existing xHarbour code, In Harbour HB_DESERIALBEGIN() is
      dummy function which returns first parameter and HB_DESERIALNEXT()
      is a simple wrapper to HB_DESERIALIZE() so it's not necessary to
      use them.

  * harbour/source/rtl/hbinet.c
    * changed INET*() functions to HB_INET*() and enable them for default
      build
    + added INET*() functions wrappers covered by HB_COMPAT_XHB macro

  * harbour/source/rtl/hbrandom.c
    + added HB_RANDOMINT() - xHarbour compatible

  * harbour/source/rtl/len.c
    + added support for HASHes

  * harbour/source/rtl/valtype.c
    + added support for HASHes
    + added set of HB_IS*() functions - they are a little bit faster then
      calling VALTYPE( v ) == <cVal>
    - removed HB_ISBYREF() - this function cannot longer work, it was using
      a Clipper incompatible anomalies in passing variables by reference I
      fixed so it has to stop to work. If it will be realy necessary to
      implement HB_ISBYREF() function then please inform me - it will have
      to be done at compiler level or with some much deeper HVM stack
      checking.

  * harbour/source/vm/extend.c
    ! fixed hb_extIsArray() and hb_extIsObject() to work well with
      parameters passed by reference.
      Please note that now hb_extIsArray() return TRUE only for pure arrays
      not object values.

  * harbour/contrib/Makefile
  + harbour/contrib/tip/Changelog
  + harbour/contrib/tip/Makefile
  + harbour/contrib/tip/atokens.c
  + harbour/contrib/tip/base64x.c
  + harbour/contrib/tip/cgi.prg
  + harbour/contrib/tip/client.prg
  + harbour/contrib/tip/credent.prg
  + harbour/contrib/tip/cstr.prg
  + harbour/contrib/tip/encb64.prg
  + harbour/contrib/tip/encmthd.c
  + harbour/contrib/tip/encoder.prg
  + harbour/contrib/tip/encqp.prg
  + harbour/contrib/tip/encurl.prg
  + harbour/contrib/tip/ftpcln.prg
  + harbour/contrib/tip/hbhex2n.c
  + harbour/contrib/tip/httpcln.prg
  + harbour/contrib/tip/mail.prg
  + harbour/contrib/tip/popcln.prg
  + harbour/contrib/tip/smtpcln.prg
  + harbour/contrib/tip/tip.ch
  + harbour/contrib/tip/url.prg
  + harbour/contrib/tip/utils.c
    + added TIP library - code borrowed from xHarbour



   Please test - a lot of above code is not well tested, also some peaces
   were written over year ago for different things (f.e. serialization for
   NETRDD) and now I collected them and committed.
   The TIP library was not tested at all. It can be compiled but I cannot
   say if it works - I hope that people familiar with it can make necessary
   test and fixes.
   It's also not the final version of low level HASH item code. I'm working
   on more efficient structure which uses binary tries but I cannot say when
   I'll finish it (maybe in this weekend or maybe in next year) so I committed
   working version now even if I'm not happy with overall performance (BTW
   not worser then in xHarbour)
2007-03-22 12:28:14 +00:00
Przemyslaw Czerpak
d4f042a2a5 2007-02-27 12:10 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbcomp.h
  * harbour/include/hbexpra.c
  * harbour/include/hbexprb.c
  * harbour/include/hbexprc.c
  * harbour/include/hbmacro.h
  * harbour/include/hbpcode.h
  * harbour/include/hbxvm.h
  * harbour/source/common/hbdate.c
  * harbour/source/compiler/genc.c
  * harbour/source/compiler/gencc.c
  * harbour/source/compiler/harbour.c
  * harbour/source/compiler/harbour.y
  * harbour/source/compiler/harbour.yyc
  * harbour/source/compiler/hbdead.c
  * harbour/source/compiler/hbfix.c
  * harbour/source/compiler/hblbl.c
  * harbour/source/compiler/hbopt.c
  * harbour/source/compiler/hbpcode.c
  * harbour/source/compiler/hbstripl.c
  * harbour/source/rtl/abs.c
  * harbour/source/rtl/at.c
  * harbour/source/rtl/chrasc.c
  * harbour/source/rtl/datec.c
  * harbour/source/rtl/dateshb.c
  * harbour/source/rtl/diskspac.c
  * harbour/source/rtl/disksphb.c
  * harbour/source/rtl/gtfunc.c
  * harbour/source/rtl/left.c
  * harbour/source/rtl/len.c
  * harbour/source/rtl/math.c
  * harbour/source/rtl/minmax.c
  * harbour/source/rtl/mod.c
  * harbour/source/rtl/philes.c
  * harbour/source/rtl/philesx.c
  * harbour/source/rtl/replic.c
  * harbour/source/rtl/round.c
  * harbour/source/rtl/set.c
  * harbour/source/rtl/space.c
  * harbour/source/rtl/strcase.c
  * harbour/source/rtl/strpeek.c
  * harbour/source/rtl/transfrm.c
  * harbour/source/rtl/trim.c
  * harbour/source/rtl/type.c
  * harbour/source/rtl/val.c
  * harbour/source/rtl/word.c
  * harbour/source/vm/hvm.c
  * harbour/source/vm/macro.c
    * added some PCODEs to cover all possible combination of ++, --, <op>=
      operations in the same way and keep Clipper compatible RT errors.
    * added some other PCODEs to optimize some commonly used expressions/
      statements
    * use HB_ERR_ARGS_BASEPARAMS instead of hb_paramError()
    * some other cleanups and minor optimizations
  * harbour/utils/hbtest/rt_math.prg
    * update expected result for MOD() - it was not Clipper compatible and
      it will be hard to make it compatible without introducing some Clipper's
      side effects
2007-02-27 11:03:59 +00:00
Przemyslaw Czerpak
384087848a 2007-02-22 08:40 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbexprop.h
  * harbour/source/common/expropt1.c
    + added hb_compExprAsNumSign()

  * harbour/include/hbexprc.c
    * optimize lValue++ and ++lValue

  * harbour/source/common/hbdate.c
    * minor optimization

  * harbour/source/compiler/cmdcheck.c
    * maximum supported warning level should be 3 not 4

  * harbour/include/hbxvm.h
  * harbour/source/compiler/gencc.c
  * harbour/source/vm/hvm.c
    * use separate functions for equal and exactly equal operations
    * cleanup and some other minor optimizations

  * harbour/source/compiler/hbopt.c
    * optimize PCODEs for code like: lVar:=lVar, sVar:=sVar, mVar:=mVar, ...
  * harbour/include/common.ch
    * changed HB_SYMBOL_UNUSED( symbol ) to ( symbol := ( symbol ) )
      It's a little bit simpler version and now it's also stripped by
      PCODE optimizer

  * harbour/source/compiler/harbour.c
  * harbour/source/compiler/harbour.y
  * harbour/source/compiler/harbour.yyc
    * eliminated some redundant rules
    * optimized PCODEs generated for FOR/NEXT code and removed some old
      hardcoded optimization for local variables - if it will be worth
      to optimize then such optimization will be done by expression
      optimizer
    * chaned a little bit WITHOBJECT syntax.
      Now WITHOBJECT somefunc(); END is not silently ignored and call
      to somefunc() is left. This optimization also works when there
      are empty line between WITHOBJECT and END

  * harbour/source/rdd/dbf1.c
    ! fixed for GPF in DBRI_RAWDATA, DBRI_RAWMEMOS (Peter Rees fix in
      xHarbour)
2007-02-22 07:39:21 +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
71acb177c3 2007-01-24 10:25 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/config/w32/bcc32.cf
  * harbour/include/hbexprb.c
  * 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/rtl/set.c
  * harbour/source/rtl/gtsln/gtsln.c
  * harbour/source/vm/hvm.c
    * recent fixes from Beta1

  * harbour/contrib/libct/Makefile
  - harbour/contrib/libct/bit1.c
  - harbour/contrib/libct/bit2.c
  - harbour/contrib/libct/bit3.c
  + harbour/contrib/libct/bitnum.c
    ! rewritten bit functions

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

  * harbour/contrib/odbc/Makefile
  * harbour/contrib/odbc/odbc.c
  * harbour/contrib/odbc/sql.ch
  - harbour/contrib/odbc/sql.h
  - harbour/contrib/odbc/sqlext.h
  - harbour/contrib/odbc/sqltypes.h
  * harbour/contrib/odbc/todbc.prg
    ! synced with xHarbour

  * harbour/contrib/rdd_ads/ads1.c
    ! fixed typo in DBI_GETHEADERSIZE

  * harbour/contrib/rdd_ads/adsfunc.c
    + added ADSDDREMOVEINDEXFILE - borrowed from xHarbour

  * harbour/source/rtl/alert.prg
    * minor cleanup

  * harbour/source/rtl/gtfunc.c
    * use HB_ERR_ARGS_BASEPARAMS in error messages

  * harbour/source/rtl/transfrm.c
    * casting
2007-01-24 09:27:02 +00:00
Przemyslaw Czerpak
e2fde5133c 2007-01-17 13:50 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/compiler/gencc.c
  * harbour/source/vm/hvm.c
    ! fixed typo in hb_xvmGreaterEqualThenIntIs() - <= was used instead
      of >=
    ! fixed :&macro() messages used in WITH OBJECT structure and -gc3
      output
    + added some missing optimizations in -gc3 output
2007-01-17 12:49:25 +00:00
Przemyslaw Czerpak
c13da799ef 2007-01-17 03:55 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/contrib/libct/ctc.c
  * harbour/contrib/libct/files.c
  * harbour/contrib/libnf/ftattr.c
  * harbour/contrib/libnf/n2color.c
    * cleaned some BCC warnings

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  * harbour/source/vm/classes.c
  * harbour/source/vm/hvm.c
    * use hb_itemMoveToRef() to avoid creation of cyclic reference chains
    + added support for for writable string enumerators, f.e.:
         proc main()
         local s, c
         s:="abcdefghijklmnopqrst"
         for each c in @s
            if c$"aeio"
               c:="*"
            endif
         next
         ? s // "*bcd*fgh*jklmn*pqrst"
         return
2007-01-13 13:18:35 +00:00
Przemyslaw Czerpak
46ea724aba 2007-01-07 19:25 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/vm/hvm.c
    * small modification to protect against creating long references chains
      which can hardly reduce the performance in some cases
2007-01-07 18:26:44 +00:00
Przemyslaw Czerpak
40999edb49 2006-12-28 16:40 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbcomp.h
  * harbour/include/hbcompdf.h
  * harbour/include/hbexprb.c
  * harbour/include/hbexprc.c
  * harbour/include/hbpcode.h
  * harbour/include/hbpp.h
  * harbour/include/hbxvm.h
  * harbour/source/compiler/genc.c
  * harbour/source/compiler/gencc.c
  * harbour/source/compiler/gencli.c
  * harbour/source/compiler/harbour.c
  * harbour/source/compiler/harbour.y
  * harbour/source/compiler/harbour.yyc
  * harbour/source/compiler/hbgenerr.c
  * harbour/source/compiler/hbpcode.c
  * harbour/source/vm/hvm.c
  * harbour/source/vm/macro.c
    * changed HB_P_MACROPUSHINDEX PCODE behavior - now it does not evaluated
      macro expression
    * eliminated HB_ET_MACRO_INDEX - HB_ET_MACRO_LIST can be used instead
    * accept ... in codeblocks only when codeblocks parameters are defined
      as variables, f.e: {|a,b,...|qout(a+b,...)}
    ! fixed error in a[&s]:=100
    + added support for a[...] - now ... can be used in the same context as
      xbase++ like multivalue macro (a[&s])
    * disabled ++, --, <op>= optimizations when -kc (strict Clipper
      compatibility mode) compiler switch is used
2006-12-28 15:44:41 +00:00
Przemyslaw Czerpak
7a13cae5e3 2006-12-27 15:00 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbcomp.h
  * harbour/include/hbcompdf.h
  * harbour/include/hberrors.h
  * harbour/include/hbexpra.c
  * harbour/include/hbexprb.c
  * harbour/include/hbpcode.h
  * harbour/include/hbxvm.h
  * harbour/source/common/expropt1.c
  * harbour/source/compiler/genc.c
  * harbour/source/compiler/gencc.c
  * harbour/source/compiler/harbour.c
  * harbour/source/compiler/harbour.y
  * harbour/source/compiler/harbour.yyc
  * harbour/source/compiler/hbdead.c
  * harbour/source/compiler/hbfix.c
  * harbour/source/compiler/hbgenerr.c
  * harbour/source/compiler/hblbl.c
  * harbour/source/compiler/hbpcode.c
  * harbour/source/compiler/hbstripl.c
  * harbour/source/vm/hvm.c
    + added support for passing optional parameters to called function, f.e.:
         proc p( a, b, ... )
         qout( a, b, "X", ... )
    * forbid creating function pointer when function is used with parameters,
      f.e.: x:=@f1(1,2,3)

  * harbour/source/compiler/complex.c
    * cleaned all restrictions on reserved words I've found - if I missed
      sth then please inform me. The previous behavior and some error
      messages are used with -kc compiler switch

  * harbour/source/rtl/symbol.prg
  * harbour/source/rtl/tobject.prg
    ! eliminated limitations in number of constructor parameters
      (new syntax with passing optional parameters used)
2006-12-27 14:01:52 +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