diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 95624fb68a..33bda71e9e 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -8,6 +8,151 @@ 2002-12-01 13:30 UTC+0100 Foo Bar */ + to character not symbol item type. + +2006-11-08 13:40 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl) + * harbour/source/pp/ppcore.c + * cleaned two warnings generated by old GCC versions + +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 h may no flush data in PreExt() + + * harbour/source/rtl/gtwin/gtwin.c + ! fixed Init() code by adding missing SUPER_INIT() + * modified a little bit PreExt() and PostExt() methods + +2006-02-08 20:23 UTC+0100 Antonio Linares + * makefile.nt + * makefile64.nt + * updated with recent changes + + ./ppgen$(EXE_EXT) $(TOP)$(ROOT)include/hbstdgen.ch -opptable.c -q + * harbour/source/rtl/gtwin/gtwin.c + + added PreExt() and PostExt() methods + +2006-02-08 15:17 UTC+0100 PrzemyslawI chose + modified version of xHarbour extension with escaped strings e"" + 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 diff --git a/harbour/bin/hb-func.sh b/harbour/bin/hb-func.sh index 751e9436aa..8b74acd3cd 100644 --- a/harbour/bin/hb-func.sh +++ b/harbour/bin/hb-func.sh @@ -409,7 +409,7 @@ FOUTE="\${FOUTE%.[oc]}${hb_exesuf}" hb_cc() { - ${CCPREFIX}\${HB_CC} "\$@" \${CC_OPT} \${GCC_PATHS} + ${CCPREFIX}\${HB_CC} "\$@" \${CC_OPT} \${GCC_PATHS} \${HB_USRLPATH} \${HB_USRLIBS} } hb_cmp() diff --git a/harbour/include/hbapi.h b/harbour/include/hbapi.h index 58a0b89576..da0e50dbdf 100644 --- a/harbour/include/hbapi.h +++ b/harbour/include/hbapi.h @@ -448,6 +448,7 @@ extern HB_EXPORT void hb_retnlllen( LONGLONG lNumber, int iWidth ); /* returns /* xHarbour compatible function */ #define hb_retcAdopt( szText ) hb_retc_buffer( (szText) ) #define hb_retclenAdopt( szText, ulLen ) hb_retclen_buffer( (szText), (ulLen) ) +#define hb_retclenAdoptRaw( szText, ulLen ) hb_retclen_buffer( (szText), (ulLen) ) #define hb_retcStatic( szText ) hb_retc_const( (szText) ) #ifdef HB_API_MACROS diff --git a/harbour/include/hbapifs.h b/harbour/include/hbapifs.h index 7016e5a343..6f69574742 100644 --- a/harbour/include/hbapifs.h +++ b/harbour/include/hbapifs.h @@ -178,7 +178,7 @@ typedef struct _HB_PATHNAMES BOOL fFree; } HB_PATHNAMES; -extern HB_EXPORT void hb_fsAddSearchPath( char * szPath, HB_PATHNAMES ** pSearchList ); +extern HB_EXPORT void hb_fsAddSearchPath( const char * szPath, HB_PATHNAMES ** pSearchList ); extern HB_EXPORT void hb_fsFreeSearchPath( HB_PATHNAMES * pSearchList ); extern HB_EXPORT BOOL hb_spFile( BYTE * pFilename, BYTE * pRetPath ); diff --git a/harbour/include/hbclass.ch b/harbour/include/hbclass.ch index a1e0787881..f483a3289c 100644 --- a/harbour/include/hbclass.ch +++ b/harbour/include/hbclass.ch @@ -181,7 +181,7 @@ #ifdef HB_CLS_NO_OO_ERR #xtranslate __HB_CLS_ERR([]) => #else - #xtranslate __HB_CLS_ERR([]) => ;#error [] ; #undef _DUMMY_DEF_ + #xtranslate __HB_CLS_ERR([]) => ;#error [ ] ; #undef _DUMMY_DEF_ #endif #xtranslate __HB_CLS_VARERR() => __HB_CLS_ERR( Invalid instance variable name: ) @@ -221,8 +221,8 @@ DECLARE HBClass ; #xtranslate __HB_CLS_ASARGS( ([]) ) => [] #xtranslate __HB_CLS_ASARGSOPT( ) => #xtranslate __HB_CLS_ASARGSOPT( ([]) ) => [, ] -#xtranslate __HB_CLS_ISVAR( ) => -#xtranslate __HB_CLS_ISVAR( ([]) ) => __HB_CLS_VARERR(([])) +#xtranslate __HB_CLS_ISVAR( ) => __HB_CLS_VARERR() +#xtranslate __HB_CLS_ISVAR( ) => #xcommand __HB_CLS_CHECKVAR( [,] ) => __HB_CLS_ISVAR( ) [;__HB_CLS_ISVAR( )] /* #xtranslate __HB_CLS_SCOPE( , , ) => ; @@ -257,7 +257,7 @@ DECLARE HBClass ; #xcommand ENDCLASS => ; s_oClass:Create() ;; - endif ;; + end ;; return s_oClass:Instance() AS CLASS _CLASS_NAME_ ;; #undef _CLASS_MODE_ ; #define _CLASS_MODE_ _CLASS_IMPLEMENTATION_ @@ -273,7 +273,7 @@ DECLARE HBClass ; #undef _DUMMY_DEF_ #else #xcommand __HB_CLS_DECLARE_METHOD => ; - #xcommand METHOD \ \[(\[])] CLASS _CLASS_IMPLEMENTATION_ => ; + #xcommand METHOD \ \[(\[\])] CLASS _CLASS_IMPLEMENTATION_ => ; DECLARED METHOD \ \[(\)] CLASS #endif @@ -286,7 +286,7 @@ DECLARE HBClass ; __HB_CLS_DECLARE_METHOD __HB_CLS_PARAMS() _CLASS_NAME_ ;; s_oClass:AddMethod( __HB_CLS_ASSTRING(), @__HB_CLS_ASID( __HB_CLS_MTHNAME _CLASS_NAME_ )(), __HB_CLS_SCOPE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.ctor.>, HB_OO_CLSTP_CTOR, 0 ) + iif( <.persistent.>, HB_OO_CLSTP_PERSIST, 0 ) ) -#xcommand ACCESS [()] [ AS ] [ ] [] [