* source/compiler/harbour.l
* source/compiler/harbour.slx
+ Added logic to ignore, rest of line after //
content of /**/ comments
content of strings and char constants
escape codes within strings and char constants
* tests/inline_c.prg
+ Added sample comments and strings containing { and \".
* include/hbcomp.h
* source/compiler/harbour.c
+ Added members szFileName and iLine to structure INLINE, set to originating PRG name and line number.
* source/compiler/genc.c
+ Added #line directive to INLINE generations, so C compile warnings/errors will report source file and line number in PRG.
* source/compiler/harbour.l
* source/compiler/harbour.slx
+ Added Error message if inline C is used with non C output.
+ Added support for {} on same line
* Minor optimization
* include/hberrors.h
* source/compiler/hbgenerr.c
+ Added: "Inline C requires C output generartion, use -gc[n]"
* include/hberrors.h
* source/compiler/hbgenerr.c
+ Added: "Unterminated inline block in function: \'%s\'" and "Too many inline blocks"
* include/hbcomp.h
* source/compiler/harbour.c
+ Added hb_compInlineNew(), hb_compInlineAdd(), and hb_compInlineFind()
* source/pp/ppcomp.c
* source/compiler/harbour.slx
* source/compiler/genc.c
+ Added support for inline C code blocks.
+ tests/inline_c.prg
+ Added new test to demonstrate new inline C support.
* source/compiler/harbour.sly
! Optimized __GETA() support, and changed it to be implementated identical to Clipper.
/* Clipper passed a bGet Block which refrences the Base Array Variable and not the Variable itself.
Clipper passes NIL instead of bGet block if the Base Array is MACROVAR or MACROTEXT.
Clipper does not optimize "&Macro" to Macro, but Harbour does! */
* source/rtl/tgetint.prg
* __GETA() Changed 1st parameter aVar to bGetArray and logic to get the Base Array if bGetArray is NIL
/* Optimized to not use macro if possible (most cases) even if the GetArray is a macro. */
* tests/testget.prg
+ Added additional test.
* include/hbmacro.h
* source/macro/macro.y
* source/vm/macro.c
! Renamed hb_compParse() to hb_macroYYParse(). We already have hb_macroParse() and hcompparse()
* source/compiler/harbour.y
* Added token GET (not used) just so that harboury.h is compatible with harbour.sly
* source/rtl/tgetint.prg
* Reverted to use _1 and == NIL to not break Clipper compatibility.
/* Ryszard, if you want to re-introduce PCount() and HB_PVALUE(), I'll ask (since I wrote this original code)
that you protect it with #ifdef FLEX etc. If you do I would suggest you further protect it with #ifdef STRICT...
becuase this will defintly break strict compatability. */
* source/compiler/harbour.c
* Exported: hb_compFieldGetPos() and hb_compMemvarGetPos()
* source/compiler/harbour.sly
! Changed __GET() support to be parameter compatible with Clipper
* include/hberrors.h
* source/compiler/hbgenerr.c
+ Added Error: "GET contains complex macro"
* source/pp/pptable.c
- Removed bSetGet from rule of GET, PP output now Clipper compatible.
* source/vm/memvars.c
+ Added HB_FUNC( __ISMV ) // Return .T. if passed string as a Memory Variable.
* source/rtl/tgetint.prg
! Fixed __GET() to be 100% parameter compatible with Clipper.
! When 1st parameter (bSetGet) is NIL the bSetGet will be built internaly,
not using macro in most cases, even if the Get Variable itslef is a macro :-)
/* Ryszard, this will further break Flex support for GET, but makes __GET() 100% Clipper compatible as you suggested.
Please note, that Clipper does *NOT* pass a bSetGet *only* when the Get Var is a *simple* *non* declared Variable.
Declared Variables in this context are: MEMVAR, FIELD, LOCAL, and STATIC. For all of those, bSetGet *is* generated!
Clipper also generates bSetGet for "Complex Variables", i.e. Aliased Variables, Object Data, etc.! */
* source/compiler/harbour.sly
+ Added support for early macro of expansion declared symbol for simple macro expression within CodeBlock (Like Clipper).
* source/rtl/tgetint.prg
! Corrected creation of bSetGet if uVar == NIL, to avoid compile error:
"Code block contains both macro and declared symbol references".
* include/hberrors.h
+ Added: #define HB_COMP_ERR_BLOCK 47
* source/compiler/hbgenerr.c
+ Added Error: "Code block contains both macro and declared symbol references"
* source/compiler/harbour.c
* Made public: hb_compLocalGetPos() and hb_compStaticGetPos()
* source/compiler/harbour.slx
+ Added: char * hb_comp_SLX_LastBlock( BOOL bReset )
* source/compiler/harbour.sly
+ Added logic to support Early Expansions of Macro within CodeBlock unless parenthesized.
+ tests/tstblock.prg
+ New test of Early/Late expansion of Macros within CodeBlocks.
* source/compiler/cmdcheck.c
* utils/hbpp/hbpp.c
+ Added support for complex Command Line #defines
* source/pp/ppcore.c
* Renamed ParseDefine() to hb_pp_ParseDefine() and made it public.
* source/compiler/harbour.sly
+ Added rule to accept Get and GetA as FunCall
* source/compiler/harbour.y
+ Added support for pseudo function _GET_()
* source/compiler/harbour.l
+ Added _GET_(...) => __GET(...)/__GETA(...) logic from harbour.sly
* source/macro/macro.slx
* Corrected YY_DECL #define (Thanks John)
* source/rtl/tget.prg
* include/hbextern.ch
- Removed no longer needed _GET_()
* source/compiler/harbour.sly
+ Added support for extended parameters to __GET() and __GETA()
! Corrected 2nd parameter of __GETA() to reflect only the Base Array Name.
* source/rtl/tget.prg
! Added support for :SubScript in __GETA()
* include/hbextern.ch
- Removed _GET_
+ Added __GETA
* source/compiler/harbour.sly
! Optimized _GET_ support.
+ Added support for GET of ObjectData and ObjectData ArrayIndex.
* source/rtl/tget.prg
+ Added method ParsePict() and logic to support dynamic modification of the picture by altering :Picture as in Clipper.
* tests/testread.prg
+ Added line to demonstrate GET of ObjectData and dynamic modification of a PICTURE clause.
* source/compiler/harbour.slx
+ Added support for pseudo function _GET_(...)
* source/compiler/harbour.sly
+ Added support for pseudo function _GET_(...) to be converted into appropriate __GET(...) or __GETA(...)
* source/rtl/tget.prg
+ Added __GETA() to correctly support early binding of Array Element Index of GET
* tests/testread.prg
+ Added code to test correct (early) binding of Array Element Index of GET
* source/compiler/genc.c
* source/compiler/genhrb.c
* source/compiler/genjava.c
* source/compiler/genobj32.c
* source/compiler/harbour.c
* source/compiler/harbour.l
* source/compiler/harbour.slx
* source/compiler/harbour.sly
* source/compiler/harbour.y
- Removed License Exception from core compiler files that are not part of HVM or HRL
/* Dave, could you please verify this is correct. */
* source/compiler/hbpcode.c
* Corrected 1 compiler warning.
* source/pp/ppcomp.c
* Cleaned-up and corrected bug when rules files had an #include directive.
+ Added CloseInclude() and moved relevant logic into it.
* source/pp/ppcore.c
- Removed unused s_iIncludes, and hb_pp_nEmptyStrings
* utils/hbpp/hbpp.c
+ Added local hb_pp_nEmptyStrings to hb_pp_Parse()