Commit Graph

19 Commits

Author SHA1 Message Date
Viktor Szakats
19ca803a4d 2008-08-27 12:05 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* source/compiler/hbcomp.c
     * Changed the default -gc generation mode for real.
2008-08-27 10:06:20 +00:00
Viktor Szakats
3a41ed1d2b 2008-08-17 08:59 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* doc/dirstruc.txt
     * Updated to reflect current state. [Chen Kedem]

   * contrib/examples/pp/hbppcore.c
   * contrib/examples/pp/pp.c
   * contrib/hbct/disk.c
   * contrib/hbct/files.c
   * contrib/hbnf/getenvrn.c
   * contrib/hbw32/tprinter.c
   * contrib/hbziparch/hbxdirec.c
   * contrib/hbziparch/hbziparc.c
   * contrib/rddads/ads1.c
   * contrib/rddads/adsfunc.c
   * doc/en/terminal.txt
   * include/hb_io.h
   * include/hbapifs.h
   * include/hbapirdd.h
   * include/hbdefs.h
   * include/hbsetup.h
   * include/hbwince.h
   * source/common/hbfsapi.c
   * source/compiler/gencobj.c
   * source/compiler/hbcomp.c
   * source/compiler/hbusage.c
   * source/debug/dbgentry.c
   * source/main/harbour.c
   * source/pp/hbpp.c
   * source/pp/ppcore.c
   * source/rdd/dbcmd.c
   * source/rdd/dbf1.c
   * source/rdd/delim1.c
   * source/rdd/sdf1.c
   * source/rdd/usrrdd/usrrdd.c
   * source/rdd/wacore.c
   * source/rdd/wafunc.c
   * source/rdd/workarea.c
   * source/rtl/console.c
   * source/rtl/copyfile.c
   * source/rtl/defpath.c
   * source/rtl/direct.c
   * source/rtl/disksphb.c
   * source/rtl/file.c
   * source/rtl/filesys.c
   * source/rtl/fssize.c
   * source/rtl/fstemp.c
   * source/rtl/gtos2/gtos2.c
   * source/rtl/gtpca/gtpca.c
   * source/rtl/gtstd/gtstd.c
   * source/rtl/gttrm/gttrm.c
   * source/rtl/hbffind.c
   * source/rtl/hbinet.c
   * source/rtl/memofile.c
   * source/rtl/philes.c
   * source/rtl/seconds.c
   * source/rtl/set.c
   * source/vm/hvm.c
   * source/vm/main.c
     * Changed some macros to be in the HB_ namespace, to be 
       possibly shorter, more unified and clearer.
       OS_UNIX_COMPATIBLE                -> HB_OS_UNIX_COMPATIBLE
       OS_PATH_LIST_SEPARATOR            -> HB_OS_PATH_LIST_SEP_CHR
       OS_PATH_DELIMITER                 -> HB_OS_PATH_DELIM_CHR
       OS_PATH_DELIMITER_STRING          -> HB_OS_PATH_DELIM_STR
       OS_PATH_DELIMITER_LIST            -> HB_OS_PATH_DELIM_LIST
       OS_FILE_MASK                      -> HB_OS_ALLFILE_MASK
       OS_DRIVE_DELIMITER                -> HB_OS_DRIVE_DELIM_CHR
       OS_HAS_DRIVE_LETTER               -> HB_OS_HAS_DRIVE_LETTER
       OS_OPT_DELIMITER_LIST             -> HB_OS_OPT_DELIM_LIST
       OS_EOL_LEN                        -> HB_OS_EOL_LEN
       HARBOUR_GCC_OS2                   -> HB_OS_OS2_GCC
       HARBOUR_START_PROCEDURE           -> HB_START_PROCEDURE
       HARBOUR_MAIN_STD                  -> HB_MAIN_STD
       HARBOUR_MAIN_WIN                  -> HB_MAIN_WIN
       HARBOUR_MAX_RDD_DRIVERNAME_LENGTH -> HB_RDD_MAX_DRIVERNAME_LEN
       HARBOUR_MAX_RDD_ALIAS_LENGTH      -> HB_RDD_MAX_ALIAS_LEN
       HARBOUR_MAX_RDD_AREA_NUM          -> HB_RDD_MAX_AREA_NUM
     ; INCOMPATIBLE change, please update your sources, a simple 
       case-sensitive search and replace on .c/.cpp/.h/.hpp files 
       will be enough for most sources.
2008-08-17 07:39:25 +00:00
Viktor Szakats
0cf59b987f 2007-11-11 01:52 UTC+0100 Viktor Szakats (harbour.01 syenar.hu)
* source/rtl/tpopup.prg
     ! Fixed a few problems regarding HB_EXTENSION guards.
       (one method declaration was mistakenly guarded, and one 
       IF construct broke when compiled without HB_EXTENSION)

   * source/rtl/mlcfunc.c
   * source/rtl/alert.prg
     ! Fixed unused var warnings when HB_EXTENSION is off.

   * contrib/hgf/tests/bld_b32.bat
     ! Some more fixes. (removed hard coded BCC path, and 
       a few wrong dirs)
     ; For me form3.hbf works without a closing EOL, under Windows.
       So the problem might rather be something else. For sure though,
       HBPersistent()'s EOL detection and handling is not portable (TOFIX).

   * source/compiler/hbcomp.c
     ! Reverted previous change for non-Unix platforms, regaring
       command-line output. Now Harbour will again use stderr/stdout 
       about the same way CA-Cl*pper does. However odd this is, 
       most DOS/Windows programs work this way, so the "when in Rome" 
       rule got in effect here. Otherwise, any DOS/Windows build 
       output (BC/VC/GCC) goes to stdout, _except_ Harbour 
       errors/warnings, and this is not a good thing. Still, the 
       //STDOUT:, //STDERR: switches could come handy to override 
       the platform defaults.
2007-11-11 01:07:49 +00:00
Viktor Szakats
17a72b54cf 2007-11-09 15:20 UTC+0100 Viktor Szakats (harbour.01 syenar.hu)
* source/compiler/hbcomp.c
     ! Changed error messaged to go to stderr on non-Unix 
       platforms too. With this change the Harbour compiler 
       uses the same output on non-Unix platforms as on Unixes.
       With Przemek's previous and now this change, the 
       compiler uses stdout/stderr in the standard way 
       (messages to stdout, warnings/errors to stderr), 
       instead of being more or less CA-Cl*pper compatible.
       (in CA-Cl*pper startup msg plus some info went to 
       stderr and errors/warnings and some other progress 
       info went to stdout)

   * source/compiler/hbusage.c
     + Added -f* switches to help screen.

   * source/compiler/cmdcheck.c
     ! -r=<max> -> -r:<max>

   * contrib/libct/screen2.c
   * contrib/libct/cursor.c
   * contrib/libct/ctstrfil.c
     ! Fixed MSVC warnings.

   * contrib/libct/make_b32.bat
   * contrib/libct/make_vc.bat

   * contrib/htmllib/Makefile.bc
     * Changed to not generate .ppo output on build.

   * contrib/libct/make_b32.bat
   * contrib/libct/make_vc.bat
   - contrib/libct/makefile.bc
   - contrib/libct/makefile.vc
   + contrib/libct/common.mak
   + contrib/maketpl.b32
   + contrib/maketpl.vc
   + contrib/maketpl.mak
     + Added BC/VC non-GNU generic make script for contribs.
     + Using the above generic make scripts to build LIBCT.
       Notice BC/VC now uses one make file per contrib project 
       named common.mak. The two helper batch files are essentially 
       identical for BC and VC, and there is no reduancy or any 
       complexity in common.mak (they much resemble in content 
       to Makefile).
       Notice that with this new system users have to call 
       make_[b32|vc].bat INSTALL in order to get the libs and 
       headers installed in the final lib/header destinations.
       (This step was previously done automatically by the .bat 
       files in LIBCT - or maybe not in other contribs.)
       The new scripts also have a generic CLEAN functionality.
     ; Thanks Marek Paliwoda for the generic make scripts.
2007-11-09 14:23:01 +00:00
Przemyslaw Czerpak
07c9e15d8d 2007-11-06 12:58 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbwince.h
    * put functions declarations inside HB_EXTERN_BEGIN / HB_EXTERN_END

  + harbour/include/hbwmain.c
    + added WinMain() to main() wrapper

  * harbour/include/hbexprb.c
  * harbour/source/common/expropt1.c
    ! fixed typo reported by Chen

  * harbour/source/pp/hbppgen.c
  * harbour/source/main/harbour.c
  * harbour/utils/hbpp/hbpp.c
    * use hbwmain.c when main() is not supported by C compiler/platform

  * harbour/source/rtl/gtwin/gtwin.c
    * include wincon.h in all builds except LCC

  * harbour/source/rtl/fserror.c
  * harbour/source/rtl/fstemp.c
  * harbour/source/rtl/filesys.c
    * use HB_OS_WIN_32_USED as in other files (still on TOFIX list)

  * harbour/source/rtl/seconds.c
    + added HB_OS_WIN_32_USED

  * harbour/source/compiler/hbcomp.c
    ! fixed typo: stderr was used instead of stdout
2007-11-06 11:59:02 +00:00
Viktor Szakats
72526bc283 2007-10-27 01:23 UTC+0100 Viktor Szakats (harbour.01 syenar.hu)
* include/hbsetup.h
     - Removed HOST_OS_UNIX_COMPATIBLE which was a misleading 
       alias for OS_UNIX_COMPATIBLE.

   * source/compiler/hbcomp.c
     % HOST_OS_UNIX_COMPATIBLE -> OS_UNIX_COMPATIBLE

   * common.mak
   * harbour-ce-spec
   * make_xmingw.sh
   * make_xmingwce.sh
   * makefile.bc
   * makefile.gc
   * makefile.vc
   * source/pp/Makefile
   - source/pp/ppgen.c
   + source/pp/hbppgen.c
     ! executable ppgen renamed to hbppgen.

   * samples/pe/editorlo.c
   * samples/pe/pe.prg
   + samples/pe/bld_b32.bat
     + Added BCC build batch file.
     ! Fixed to compile under current Harbour.
     ! Fixed filename casing.
     ! Fixed several warnings (quite some signedness problem still remain).
     ; This is a very nice editor written in C (Harbour callable),
       I think it is the work of Ryszard.

   * samples/hscript/bld_b32.bat
   * samples/hscript/hscript.prg
   * samples/hscript/dir.hs
   * samples/hscript/multiply.hs
   * samples/hscript/ugly.hs
   * samples/hscript/hello.hs
     ! Fixed build batch file.
     ! Fixed to use NFLib file IO rather than libmisc, because 
       latter was broken (it is a clone of the NFLib file IO).
     ! Fixed scripts to use Start instead of Main as an entry 
       point otherwise __hrbRun() got confused and called the 
       app Main().
     ! Fixed some other problems to make it run.
2007-10-26 23:26:59 +00:00
Viktor Szakats
1320481f88 2007-10-15 18:36 UTC+0100 Viktor Szakats (harbour.01 syenar.hu)
* source/rtl/tbcolumn.prg
     ! Strict C5.2e compatible behaviour made the default.

   * source/rtl/inkey.c
     + Added handling of arrays of numbers in HB_KEYPUT().
       (this was copied from __KEYBOARD()'s extended section)
     + Added handling of string parameter in HB_KEYPUT().
       (this way we don't really need the hidden extensions 
       in __KEYBOARD() anymore. Also notice that __KEYBOARD() 
       doesn't clear the keyboard buffer when numeric or 
       array is passed, which is not consistent with the 
       Clipper compatible behaviour when strings are passed.)

   * common.mak
   * include/hbcompdf.h
   * source/compiler/hbmain.c
   * source/compiler/cmdcheck.c
   * source/compiler/hbcomp.c
   * source/compiler/harbour.l
   * source/compiler/Makefile
   * source/compiler/ppcomp.c
   * source/compiler/hbusage.c
   - source/compiler/genjava.c
   - source/compiler/gencli.c
     - Removed two non-working (experimental) output types: 
       Java, CLI
     ! Prefixed LANG_* enums with HB_
2007-10-15 16:36:38 +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
ea97d11a41 2007-08-22 19:10 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbpp.h
  * harbour/include/hbcomp.h
  * harbour/include/hbcompdf.h
  * harbour/source/pp/ppcore.c
  * harbour/source/rtl/gttrm/gttrm.c
  * harbour/source/main/harbour.c
  * harbour/source/compiler/hbmain.c
  * harbour/source/compiler/cmdcheck.c
  * harbour/source/compiler/hbcomp.c
  * harbour/source/compiler/hbcmplib.c
  * harbour/source/compiler/ppcomp.c
    * added 'const' to some 'char *' declarations
    + added hb_pp_inBuffer()
    + extended hb_compMain() to accept source code passed as ASCIIZ
      string
    + .prg function HB_COMPILEFROMBUF()
    + added support for -q2 compiler switch - it disables _ALL_ stdout/stderr
      messages

  * harbour/utils/Makefile
  + harbour/utils/hbdot
  + harbour/utils/hbdot/hbdot.prg
  + harbour/utils/hbdot/Makefile
    + added hbdot utility program.
      It's a "DOt Prompt" Console for the Harbour Language
         Syntax:  hbdot [<hrbfile[.prg]> [<parameters,...>]]
      It should look and work in similar way to pp/xBaseScript
      by Ron Pinkas but unlike xBaseScript is does not have preprocessor
      or simulated runtime environment but simply uses Harbour pp and
      compiler libraries to preprocess and compile commands. It means
      that it supports all language constructions also statements, f.e.:
         "for i:=1 to 10; ? i; next"
      Additionally it can also compile and execute .prg files given as
      first parameter just like hbrun.
      Please test it. If it will work as expected then we can remove
      'pp' (contrib/dot) from standard packages
2007-08-22 17:10:40 +00:00
Przemyslaw Czerpak
c35370c2b9 2007-08-21 16:00 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/vm/memvars.c
    + added __MVSETBASE() function

  * harbour/source/pp/ppcore.c
    * redirect error messages when error trap is not defined into
      user dispout function

  * harbour/include/hbcomp.h
  * harbour/source/compiler/hbmain.c
  * harbour/source/compiler/cmdcheck.c
  * harbour/source/compiler/hbcomp.c
  * harbour/source/compiler/genjava.c
  * harbour/source/compiler/genc.c
  * harbour/source/compiler/hbcmplib.c
  * harbour/source/compiler/ppcomp.c
  * harbour/source/compiler/gencli.c
  * harbour/source/compiler/genhrb.c
  * harbour/source/compiler/gencobj.c
  * harbour/source/compiler/genobj32.c
  * harbour/source/compiler/hbusage.c
  * harbour/source/compiler/hbgenerr.c
    + added hb_compOutStd() and hb_compOutErr()
    * redirected all compiler output to above functions
2007-08-21 14:01:01 +00:00
Przemyslaw Czerpak
bedaef925f 2007-05-28 09:50 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/make_xmingw.sh
  * harbour/source/pp/Makefile
    * recent xHarbour fixes for MinGW Linux->W32 cross build by Phil Krylow
      with small modifications

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

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

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

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

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

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

  * harbour/source/vm/memvars.c
    * use hb_strMatchCaseWildExact() instead of hb_strMatchRegExp()
      I still keep the hack which translates any mask starting with '*'
      to "*" but if you think that we should fully respect wildcards
      patterns then we should remove it from function hb_memvarGetMask()
      Opinions?
2007-05-28 07:52:08 +00:00
Przemyslaw Czerpak
8ce0d03aa0 2007-03-09 04:40 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/common.mak
  * harbour/makefile.bc
  * harbour/makefile.vc
  * harbour/bin/hb-func.sh
  * harbour/config/global.cf
  * harbour/include/error.ch
  * harbour/include/hbcomp.h
  * harbour/include/hbcompdf.h
  * harbour/include/hbexpra.c
  * harbour/include/hbexprb.c
  - harbour/include/hbexprc.c
  * harbour/include/hbexprop.h
  * harbour/include/hbmacro.h
  * harbour/source/Makefile
  * harbour/source/common/expropt1.c
  * harbour/source/common/expropt2.c
  * harbour/source/compiler/Makefile
  - harbour/source/compiler/exproptc.c
  - harbour/source/compiler/harbour.c
  * harbour/source/compiler/harbour.y
  * harbour/source/compiler/harbour.yyc
  * harbour/source/compiler/hbcomp.c
  * harbour/source/compiler/hbgenerr.c
  + harbour/source/compiler/hbmain.c
  * harbour/source/compiler/hbpcode.c
  * harbour/source/macro/Makefile
  * harbour/source/macro/macro.y
  * harbour/source/macro/macro.yyc
  - harbour/source/macro/macroc.c
  + harbour/source/main/Makefile
  + harbour/source/main/harbour.c
  * harbour/source/vm/macro.c
    * resolved name conflicts between compiler and macro compiler.
      Now new compiler library is created.
      There are some things which can be improved and cleaned yet
      but it's enough to create single binaries with compiler+HVM+RTLs.
      I updated non GNU make files but I cannot tested the modifications
      - please check and fix me if necessary
2007-03-09 03:44:42 +00:00
Przemyslaw Czerpak
26617b2472 2007-02-18 12:40 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/common.mak
  * harbour/source/compiler/Makefile
  * harbour/source/compiler/hbfix.c
  + harbour/source/compiler/hbopt.c
    * divided hbfix.c into two separated functions:
      - hb_compFixFuncPCode() which only fix generated PCODE updating
        local parameters numbers when PARAMETERS is used
      - hb_compOptimizePCode() which makes PCODE optimization
      It allows to not execute hb_compFixFuncPCode() when PARAMETERS
      is not use and execute hb_compOptimizePCode() more then once in
      optimization process.

  * harbour/hbgtmk.sh
    * updated CVS server name

  * harbour/include/hbcomp.h
  * harbour/include/hbcompdf.h
  * harbour/source/compiler/complex.c
  * harbour/source/compiler/harbour.c
  * harbour/source/compiler/harbour.y
  * harbour/source/compiler/harbour.yyc
  * harbour/source/compiler/hbcomp.c
  * harbour/source/compiler/hbgenerr.c
  * harbour/source/compiler/hbident.c
    * changed code for generating in PCODE line numbers and module names
      there was serious problem with line numbers and module names in old
      code - in many cases line numbers were not generated at all or
      generated in wrong places. Also file module name was not updated
      when inside of function some code was included with #include
      For such situation now modified version of HB_P_MODULE is generated
      with module name only but without function name, f.e.:
         HB_P_MODULE    "test.prg:"
      exactly the same form of HB_P_MODULE is used in xHarbour.
      Debugger code should be updated to recognize such HB_P_MODULE version
      Ryszard any chance that you can look at it?
      And what about syncing with xHarbour debugger?
      I can add some missing functions to compiler and HVM but I do not
      want to update next peace of code myself. Sorry but I do not have
      enough time. I'd prefer to finish some other things I'm working.
      If Ryszard is busy can someone else try to port xHarbour debugger
      to Harbour?
2007-02-18 11:40:22 +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
3fd903247e 2007-01-07 05:00 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/hbexprop.h
  * harbour/source/common/expropt1.c
  * harbour/source/common/expropt2.c
  * harbour/source/compiler/Makefile
  * harbour/source/compiler/cmdcheck.c
  * harbour/source/compiler/harbour.c
  * harbour/source/compiler/harbour.y
  * harbour/source/compiler/harbour.yyc
  * harbour/source/compiler/harbour.yyh
  * harbour/source/compiler/hbcomp.c
  * harbour/source/compiler/hbusage.c
  * harbour/source/compiler/ppcomp.c
  * harbour/source/macro/Makefile
  * harbour/source/macro/macro.y
  * harbour/source/macro/macro.yyc
  * harbour/source/macro/macro.yyh
  * harbour/source/vm/macro.c
  * harbour/source/vm/memvars.c
  * harbour/source/vm/memvclip.c
    * keep prefix definition for bison public symbols in *.y files instead
      of passing them as bison arguments to avoid possible mistakes during
      *.yy[hc] file generation
    ! fixed iif() reduction when used as single function parameter
    + add -kM compiler switch - turn off macrotext substitution
    * updated <string> + <string> optimization and other macrotext usage
      to keep more Clipper compatible behavior
    ! fixed typo in expression type checking in IIF() reduction - it was
      working because wrongly used macros has the same values as the valid
      ones
    - removed compiler switches and macros for old HB_INLINE() syntax - it
      was not supported after last months modifications. Only:
         HB_INLINE([params,...]) { C code }
      is supported.
    ! fixed passing parameters by reference in IIF() statement and macro
      compiler. The following valid Clipper code:
         &("myfunc(<exp>, @var1, @var2)")
      was not supported
    ! do not allow to use references or empty expressions in expression list
      AFAIK it's Clipper compatible. If I'm wrong then please fix me but
      Clipper allows to use references only as function arguments, 2-nd and
      3-rd IIF() argument and as directly created array items ( {...@var...} )
      DO ... WITH ... is a special case of function call.
    ! Changed grammar rules to accept only Clipper compatible parameters.
    ! fixed typo in macro name in hb_memvarNewParameter() function.
    * use HB_FUNC_EXEC(...) instead of HB_FUNCNAME(...)()
2007-01-07 04:09:09 +00:00
Przemyslaw Czerpak
3df896f666 2006-12-24 16:54 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbcompdf.h
  * harbour/include/hbexprb.c
  * harbour/source/common/expropt1.c
  * harbour/source/compiler/harbour.c
  * harbour/source/compiler/harbour.y
  * harbour/source/compiler/harbour.yyc
  * harbour/source/compiler/hbcomp.c
    - removed not longer used fExternal from compiler structure
    * allow to pass array items by reference ( func(@a[1]) ) and some
      cleanups in reference rules. Probably we should also block using:
         @func(param1 [,param2,[,...paramN]])
      and accept only @func()
    ! fixed using statements in codeblocks used to initialize static
      variables and some other cleanups (f.e. allow to use as static
      initializers any functions which are later eliminated by expression
      optimizer.
2006-12-24 16:12:13 +00:00
Przemyslaw Czerpak
33ccad6661 2006-11-27 02:10 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/tests/codebl.prg
  * harbour/tests/langmsg.prg
  * harbour/utils/hbpptest/pp_test.prg
  * harbour/utils/hbpptest/pretest.prg
  * harbour/samples/pe/license.txt
    * removed carriage return (\r) characters

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

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

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

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

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