Commit Graph

13 Commits

Author SHA1 Message Date
Viktor Szakats
65460d88a1 2007-04-01 13:47 UTC+0100 Viktor Szakats (harbour.01 syenar.hu)
* harbour/makefile.bc
   * harbour/makefile.vc
   * harbour/config/rules.cf
   * harbour/contrib/btree/makefile.bc
   * harbour/contrib/htmllib/Makefile.bc
   * harbour/contrib/htmllib/makefile.vc
   * harbour/contrib/libct/makefile.bc
   * harbour/contrib/libct/makefile.vc
   * harbour/contrib/libgt/makefile.bc
   * harbour/contrib/libgt/makefile.vc
   * harbour/contrib/libmisc/makefile.bc
   * harbour/contrib/libmisc/makefile.vc
   * harbour/contrib/libnf/makefile.vc
   * harbour/contrib/libnf/nanfor.bc
   * harbour/contrib/samples/makefile.bc
   * harbour/contrib/samples/makefile.vc
   + harbour/contrib/samples/make_b32.bat
   + harbour/contrib/samples/make_vc.bat
   - harbour/contrib/samples/makevc.bat
     + -w default Harbour build switch changed to -w2,
       to further maintain code quality.
     ; Notice that CONTRIB might need some fixing here.
     + Added proper BC/VC make batch files for "samples".

   * harbour/include/hbclass.ch
   * harbour/source/debug/dbgmenu.prg
   * harbour/source/debug/debugger.prg
   * harbour/source/rtl/teditor.prg
   * harbour/utils/hbdoc/genchm.prg
   * harbour/utils/hbdoc/genhtm.prg
   * harbour/utils/hbdoc/genng.prg
   * harbour/utils/hbdoc/genos2.prg
   * harbour/utils/hbdoc/genpdf1.prg
   * harbour/utils/hbdoc/genrtf.prg
   * harbour/utils/hbdoc/os2.prg
   * harbour/utils/hbmake/hbmake.prg
   * harbour/utils/hbmake/radios.prg
   * harbour/utils/hbpptest/pretest.prg
   * harbour/utils/hbtest/rt_misc.prg
     + Added HB_SYMBOL_UNUSED() inside codeblocks.
     ! Removed a few uneeded codeblock parameters.
     + Added HB_SYMBOL_UNUSED() to some class syntax generated
       code to avoid unused "Self" var warnings.

   * harbour/ChangeLog.017
     ! Typos.
2007-04-01 12:04:58 +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
437b04a8ea 2006-11-08 12:55 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/bin/hb-func.sh
    + added linker parametrs to hbcc

  * harbour/include/hbapi.h
    + added hb_retclenAdoptRaw()

  * harbour/include/hbapifs.h
  * harbour/source/common/hbfsapi.c
    * changed first parameters of hb_fsAddSearchPath() to const char *

  * harbour/include/hbclass.ch
    * update for new PP. I think that now we can try to create final
      version of our OOP rules.

  * harbour/include/hbdefs.h
    + added UCHAR and SCHAR typedefs

  * harbour/include/hbrddcdx.h
    * indenting

  * harbour/source/rdd/workarea.c
    ! fixed minor typo

  * harbour/source/common/hbdate.c
  * harbour/source/rtl/dates.c
    * moved hb_dateToday() and hb_dateTimeStr() from RTL to COMMON library

  - harbour/include/hbpp.h
  - harbour/source/pp/ppcomp.c
  - harbour/source/pp/ppcore.c
  - harbour/source/pp/pplib.c
  - harbour/source/pp/pptable.c
  - harbour/source/pp/pragma.c
  * harbour/utils/hbpp/Makefile
  * harbour/utils/hbpp/hbpp.c
  + harbour/utils/hbpp/hbpp.h
  + harbour/utils/hbpp/ppcomp.c
  + harbour/utils/hbpp/ppcore.c
  + harbour/utils/hbpp/pplib.c
  + harbour/utils/hbpp/pptable.c
  + harbour/utils/hbpp/pragma.c
    * moved all PP code to harbour/utils/hbpp
      It's interesting and working preprocessor and the code can be
      usable for some other things so I do not want to remove it.
      Probablly we should move it to contrib/hbpptext

  * harbour/include/hbcomp.h
  * harbour/include/hberrors.h
  * harbour/include/hbsetup.ch
  + harbour/include/hbpp.h
  + harbour/include/hbstdgen.ch
  * harbour/source/common/hbstr.c
  * harbour/source/compiler/Makefile
  * harbour/source/compiler/cmdcheck.c
  * harbour/source/compiler/harbour.c
  * harbour/source/compiler/harbour.l
  * harbour/source/compiler/hbgenerr.c
  + harbour/source/compiler/ppcomp.c
  * harbour/source/pp/Makefile
  + harbour/source/pp/ppcore.c
  + harbour/source/pp/pplib.c
  + harbour/source/pp/ppgen.c
    + New PP code written from scratch. It works in similar way to
      Clipper PP even the error codes are replicated. The code is MT
      safe does not have any limitation on size of preprocessed code,
      line, etc. It's also Clipper compatible lexer. It means that
      we do not longer need FLEX or SIMPLEX which can be replaced
      by new PP after some small modifications. Anyhow I haven't
      decided to make it myself. I would like to agree with with the
      rest of developers. I will be very happy if such modifications
      will be done by someone else, Ryszard?
      Meanwhile I current PP join on output the line tokens and give
      the string line to FLEX/SIMPLEX. It does not have any sense and
      all FLEX/SIMPLEX limitations are still existing. Ryszard, even
      if we keep it then I hope you can remove at least FLEX line buffer
      and use the one returned from PP.
      Because string tokens in parsed line are converted to text which is
      later once again decoded to tokens by FLEX I had to introduce new
      string format which supports embedded string delimiters. I chose
      modified version of xHarbour extension with escaped strings e"<sting>"
      so now FLEX understand such strings and decode them like C escaped
      strings. It means that you can use them also in the .prg code f.e.:
         outstd( e"Hello\n\rWorld" )
      The new PP is also noticeable faster. You should see the difference
      compiling long files. The build in PP rules are generated automatically
      by ppgen program created from source/pp/ppgen.c
      I had to add to GNU source/pp/Makefile these two lines:
         pptable.c : ppgen$(EXE_EXT)
         	./ppgen$(EXE_EXT) $(TOP)$(ROOT)include/hbstdgen.ch -opptable.c -q
      Sth like that will have to be done also in non GNU make system.
      Now Harbour can be compiled only using GNU make.
      Marek can you update non GNU make files? I would like to leave this
      modification to you or other developers who can test it.
      It was quite big modification and I do not believe that I haven't
      make any mistakes but I hope that in few weeks I'll fix any reported
      bugs and it will resolve any PP problems.
      TODO:
         * error messages
           create one common list of errors and warnings and keep it
           in common library. PP and compiler can still generate different
           errors with the same number. It can be confusing for the users
           and hard to document and add i18n translations.
           If possible we should also try to keep Clipper error numbers.
           In new PP code I added Clipper error numbers but I cannot use
           them until compiler code is not updated.
           We should aslo remove the ctype passed to error functions and
           hack with first character in warning messages and use only
           error number. The codes from 1000 to 1999 should be warnings
           where range 1000:1099 is activated by -w, 1100:1199 by -w1,
           1200:1299 by -w2, etc. 2000:2999 are errors and 3000:3999
           fatal errors. All compiler functions which generate an error
           should expect that error function will not stop the compiler
           but return and cleanly finished their job. It's necessary for
           MT support in compiler and making compiler part of some other
           programs which may still work and compile different source code.
         * FLEX/SIMPLEX
           remove them at all and add some final pass to PP to create
           more precise tokens for grammar parser or at least add better
           integration to remove some redundant code and existing limits.
         * hb_inLine() support - it's broken in new PP but as I can see
           it was never working correctly. I can add a hack to PP to support
           hb_inLine() but I'm not sure it's worth to do. Maybe in few days.

  + harbour/include/std.ch
    + added new std.ch. It was created without using Clipper's std.ch.
      It's quite possible that some rules are wrong and should be fixed
      so please help. Anyhow I created a set of programs based on new PP
      code generating all possible combinations of different commands I
      collected from different source code, documentation and match patterns
      of rules I was adding to new std.ch and then I was comparing .ppo
      files generated by Clipper and Harbour so I do not expect any bigger
      problems then some minor typos. I had to introduce some modifications
      in spacing as workaround for FLEX/SIMPLEX which cannot properly decode
      text preprocessed by Clipper after stringify.

  * harbour/utils/hbpptest/pretest.prg
    * updated for new PP
      It reports 16 wrong translations but some of them are valid
      and some others are caused by escaped string e"..." (one of hack
      for FLEX/SIMPLEX support)
      I also had to remove all spaces in comparison the results
      because they were not Clipper ocmpatible at all. Ryszard please
      look at it.
2006-11-08 12:06:17 +00:00
Ryszard Glab
5a395159ee 2006-08-11 10:15 UTC+0100 Ryszard Glab <rglab//imid.med.pl>
* utils/hbpptest/pretest.prg
      * fixed to use HB_OSNewLine(0 instead '\n'
2006-08-11 08:03:17 +00:00
Ryszard Glab
ebb9cad8ec 2006-08-08 11:40 UTC+0100 Ryszard Glab <rglab//imid.med.pl>
* source/pp/pplib.c
      * suppressed preprocessing of empty lines

   * utils/hbpptest/pretest.prg
      * added line length to MLCOUNT to correctly count the
        number of lines to process
2006-08-08 09:31:00 +00:00
Ryszard Glab
535f82b5b2 2006-08-07 14:00 UTC+0100 Ryszard Glab <rglab//imid.med.pl>
* source/compiler/harbour.y
      * fixed to support @funname() syntax in assigments

   * utils/hbpptest/pp_test.prg
      * fixed preprocessor example

   * TODO
      * removed 'to fix' vertical spacing in ppo files
2006-08-07 11:47:53 +00:00
Ryszard Glab
2afe706de7 2006-07-27 14:20 UTC+0100 Ryszard Glab <rglab//imid.med.pl>
* include/hbcomp.h
   * source/compiler/genc.c
   * source/compiler/gencli.c
   * source/compiler/genhrb.c
   * source/compiler/genjava.c
   * source/compiler/genobj32.c
   * source/compiler/harbour.c
      * fixed compilation of static variables with -gc2 switch

   * source/pp/ppcore.c
      * fixed vertical spacing in generated ppo files
2006-07-27 12:06:21 +00:00
Ryszard Glab
a943d9579d 2006-07-24 13:50 UTC+0100 Ryszard Glab <rglab//imid.med.pl>
* source/pp/ppcore.c
   * source/pp/pptable.c
   * utils/hbpptest/pp_test.prg
      * fixed to be more Clipper compatible
      * fixed access to unallocated memory
      * added more test cases
2006-07-24 11:43:24 +00:00
Viktor Szakats
fffc205acc 2006-07-20 12:36 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu)
+ harbour/utils/hbpptest/compare.bat
   + harbour/utils/hbpptest/.cvsignore
   * harbour/utils/hbpptest/pp_test.prg
     + Added batch file to compare PP results between Harbour and
       CA-Cl*pper.
2006-07-20 10:40:32 +00:00
Ryszard Glab
385facd33c 2006-07-20 11:40 UTC+0100 Ryszard Glab <rglab//imid.med.pl>
* source/pp/ppcore.c
      * fixed bugs which I introduced

   * utils/hbpptest/pretest.prg
      * added more test cases

   + utils/hbpptest/pp_test.prg
      * new file to test preprocessor Preprocess both with Clipper
        and harbour and next use diff utility to compare outputs -
        ignore the number of white spaces (use diff -w -u ...)
2006-07-20 09:36:28 +00:00
Ryszard Glab
3b93622069 2006-07-18 12:20 UTC+0100 Ryszard Glab <rglab//imid.med.pl>
* source/pp/ppcore.c
      * added guard for infinite loop

   * utils/hbpptest/pretest.prg
      * added more test cases (3 of them fails)
2006-07-18 10:14:31 +00:00
Viktor Szakats
a524f48e1f 2006-07-17 00:41 UTC+0100 Viktor Szakats (viktor.szakats syenar.hu)
* harbour/common.mak
   * harbour/makefile.bc
   * harbour/makefile.vc
   * harbour/utils/Makefile
     + Added hbpptest

   * harbour/utils/hbpptest/pretest.prg
     + Output now goes to STDOUT.

   * harbour/source/compiler/harbour.c
     ! Possible memory leak fixed.

   * harbour/source/rtl/Makefile
     ! Fixed tabs (readded them).

   - harbour/source/rtl/dbdelim.prg
   + harbour/source/rdd/dbdelim.prg
   - harbour/source/rtl/dbjoin.prg
   + harbour/source/rdd/dbjoin.prg
   - harbour/source/rtl/dbsdf.prg
   + harbour/source/rdd/dbsdf.prg
   * harbour/source/rtl/Makefile
   * harbour/source/rdd/Makefile
   * harbour/common.mak
     * Moved three RDD related internal function source files
       to the RDD library. (They did depend on each other
       anyway.)

   * harbour/source/rdd/dbcmd.c
   * harbour/source/rdd/dbfuncs.prg
   * harbour/source/rdd/dblist.prg
   * harbour/source/rdd/dbsort.prg
   * harbour/source/rdd/dbstrux.prg
   * harbour/source/rdd/dbtotal.prg
   * harbour/source/rdd/dbupdat.prg
   * harbour/source/rdd/rddord.prg
   * harbour/source/rtl/dbdelim.prg
   * harbour/source/rtl/dbedit.prg
   * harbour/source/rtl/dbjoin.prg
     % Cleanups, minor optimizations.
     ! __dbApp(), __dbCopy() to return LOGICAL.
     ! Problem where error condition was not detected if BREAK didn't
       set the error object.
     ! __dbTotal() lRest handling fixed.
     ! __dbTotal() ErrorBlock overriding removed.
     ! __dbCreate() now generating default alias.
     % __dbCreate() using dbCreate() undoc param to open the tables.
     ! __dbDelim() return value.
     ! __dbSDF() return value.
     + CA-Cl*pper undocumented call added: _dtxCondSet()
     + XBase++ compatible calls implemented:
       dbJoin(), dbList(), dbSort(), dbTotal(), dbUpdate(), _dbExport()
       dbCopyStruct(), dbCopyExtStruct()
     + Added some more 10 chars call stubs:
       __dbCopySt(), __dbCopyXS(), __dbOpenSD(), __dbArrang()
     + Comments.
     + Formatting.
     ; All high-level db functions seems to be compatible now.
       DBEDIT() is left TODO for review (refix).

   * harbour/source/rtl/tbrowse.prg
     * Minor cleanup.

   * harbour/include/hbexpra.c
   * harbour/source/vm/arrayshb.c
   * harbour/source/rdd/dblist.prg
     - Removed compiler+RTL __dbList() hack which
       made it incompatible with CA-Cl*pper. The
       hack targeted an XBase++ extension, but it's
       compatible even without the hack. Tested with
       XBase++ 1.82.294.

   * harbour/source/rtl/typefile.prg
     % FUNCTION -> PROCEDURE
     + _TypeFile() XBase++ internal function added.
2006-07-17 00:22:56 +00:00
Ryszard Glab
912b301c85 2006-07-14 16:00 UTC+0100 Ryszard Glab <rglab//imid.med.pl>
* include/hbcomp.h
   * include/hberrors.h
   * include/hbexpra.c
   * include/hbexprb.c
   * include/hbexprc.c
   * include/hbmacro.h
   * include/hbpcode.h
   * include/hbpp.h
   * include/hbxvm.h
   * source/common/expropt1.c
   * source/compiler/cmdcheck.c
   * source/compiler/expropta.c
   * source/compiler/exproptb.c
   * source/compiler/exproptc.c
   * source/compiler/genc.c
   * source/compiler/gencc.c
   * source/compiler/gencli.c
   * source/compiler/genhrb.c
   * source/compiler/genjava.c
   * source/compiler/genobj32.c
   * source/compiler/harbour.c
   * source/compiler/harbour.l
   * source/compiler/harbour.y
   * source/compiler/hbdead.c
   * source/compiler/hbfix.c
   * source/compiler/hbfunchk.c
   * source/compiler/hbgenerr.c
   * source/compiler/hblbl.c
   * source/compiler/hbpcode.c
   * source/compiler/hbstripl.c
   * source/macro/macroa.c
   * source/macro/macrob.c
   * source/macro/macroc.c
   * source/vm/hvm.c
   * source/vm/macro.c
      * fixed compilation of code that uses '@' pass by
       reference. The following syntax is no longer supported:
       var := IIF( .T., @var, var )
       however you can still use the following:
       funcall( IIF( bPassbyRef, @someVar, someVar ) )
      +added support for the following statement:
         WITH OBJECT <objexpression>
            ...
         END
       inside this statement you can use simplified form of sending
       messages to the object specified by <objexpression>
         :message( )    instead objexpression:message()
         :property      instead objexpression:property
       The runtime error will be generated at the time of message
       sending (or property access/assign) if <objexpression>
       is not a value of type object.
       You can use the reserved property:
         :__withobject
       to access/assign the controlling object.
      *fixed support for command line response file (@file.clp)
       to be compatible with Clipper (Clipper genertes a single
       obj file)
      *fixed memory leaks when there is a fatal error in autoopened
       module (using DO ... statement)
      *implicit startup functions are removed from the list of
       functions before generation of output code

   * source/pp/ppcomp.c
   * source/pp/pplib.c
   * source/pp/ppcore.c
      * redefinition of #define no longer causes a memory leak
      * fixed repeatable optional clauses
         #xcommand SET <var1> [, <varN>] WITH <val> =>
          <var1>:=<val>[; <varN>:=<val>]
      * fixed compilation of optional clauses (when used in different
        order then declared) -this fixes the following long
        waiting bug:
         #command MYCOMMAND [<mylist,...>] [MYCLAUSE <myval>] => ;
            MyFunction( {<mylist>} [, <myval>] )
         MYCOMMAND MYCLAUSE 321 "HELLO"
      * fixed restricted macro match marker <x:&>

   * tests/Makefile
   - tests/pretest.prg
   + utils/hbpptest
   + utils/hbpptest/Makefile
   + utils/hbpptest/pretest.prg
      * moved file 'pretest.prg' from tests to separate directory
        to make easier validation of the preprocessor

   * TODO
      * added note to fix hb_objGetMethod() so it will not generate
        error if there is no method

   * doc/en/clipper.txt
      * added documentation for WITH OBJECT usage
2006-07-14 13:47:17 +00:00