* source/compiler/cmdcheck.c
+ Implemented support for -m
* include/hbcomp.h
+ Added structure _HARBVARS to hold Harbour Session Variables
+ Added structure +AUTOOPEN to hold names of external modules already compiled.
* source/compiler/harbour.c
+ Moved the parsing/compiling logic into new hb_compCompile()
+ Added:
static void hb_compAutoOpenAdd( char * szName );
static BOOL hb_compAutoOpenFind( char * szName );
static void hb_compSaveVars( PHARBVARS, int );
static void hb_compRestoreVars( PHARBVARS, int );
* source/compiler/harbour.l
+ Added:
void * hb_compGet_YY_CURRENT_BUFFER()
void hb_compSet_YY_CURRENT_BUFFER( void * pBuffer )
int hb_compGet_yy_init( void )
void hb_compSet_yy_init( int i )
int hb_compGet_yy_start( void )
void hb_compSet_yy_start( int i )
int hb_compGet_yy_did_buffer_switch_on_eof( void )
void hb_compSet_yy_did_buffer_switch_on_eof( int i )
* source/compiler/harbour.y
+ Added logic to call hb_compCompile() when DO ... or DO ... WITH
+ Added:
void * hb_compGet_pLoops( void )
void hb_compSet_pLoops( void * pLoops )
void * hb_compGet_rtvars( void )
void hb_compSet_rtvars( void * rtvars )
* source/compiler/hbusage.c
+ Added display of -m compiler switch
Please note:
1. Implementation is practicaly completed, but there is one known issue to be resolved: Once we open and compile
an external module, the very next prg line in the parent prg is not processed, I would love to get some assistance
with this - Ryszard, Antonio, Victor, Paul? as I am seriously limited with time over this week.
It seems I am not saving one of Bison/Flex vars, so my restore of the previous session is not complete :-(
2. Clipper seem to have a bug, on the following code:
DO WHILE WITH ...
Clipper will attempt to compile external "WITH.PRG" instead of "WHILE.PRG", can any one advise if I am missing something here...
In our implementation the above line will attemp to compile "WHILE.PRG"
* source/pp/ppcore.c
* Changed hb_pp_SetRules() to only default to .CH extension, if file name as supplied without extension was not found.
! Improved Messages to report various possible conditions.
* include/hbcomp.h
+ Added: extern char * hb_pp_STD_CH;
* include/hbpp.h
+ Added: extern void hb_pp_SetRules( BOOL (*hb_compInclude)(char *, PATHNAMES * ) );
* source/compiler/hbusage.c
* source/compiler/harbour.c
* source/compiler/cmdcheck.c
+ Added support for -u[FileName]
- Removed TODO for -u
* source/pp/ppcomp.c
+ Added hb_pp_ReadRules() - Logic to process directives from user supplied command defs.
* source/pp/ppcore.c
+ Added hb_pp_SetRules() - Logic to use predefined rules, none, or user defined.
* source/pp/pptable.c
+ Added hb_pp_Table() - Moved predefined rules into this function, to allow for conditional use.
* source/pp/ppcore.c
! Added logic to CommandStuff() to fix problem with Keyword or Match Marker are matched after non provided multiple optional patterns.
*harbour/include/hbclass.ch
Now support MI, scoping, fowarding and delegating
Also support 10 chars limit by not prefixing the Classname when in 10 chars mode
*harbour/include/hbsetup.ch
Allow the configuration of Hidden message
*harbour/source/rtl/objfunc.prg
added function __objDerivedFrom(oSelf, oObj | cClassName)
*harbour/source/rtl/tclass.prg
Major modification to implement MI & scoping
Added message :Super to acces frist superclass object instance
Added message :IsDerivedFrom(oObj | cClassName ) (Xbase++ comp.)
*harbour/source/vm/proc.c
added char * hb_procname( int iLevel, char * szName )
extracted from HB_FUNC( PROCNAME ) to allow it to be called from c
HB_FUNC( PROCNAME ) modified to call the previous'one
*harbour/source/vm/classes.c
Major modification to implement MI & Scoping
Added function Sender() used by delegating to allow full polymorphism
Added function __CLS_PARAM used by the preprocessor
* source/compiler/hbpcode.c
! Fixed ambigious else in hb_StrongType()
* source/pp/pptable.c
! Fixed STRUCTURE rule to allow nesting of structures.
* tests/teststru.prg
* Enhanced to demonstrate Structure as element of other structure and self reference capabilities.
* source/compiler/harbour.c
+ Added code to main() to process symbols and look for the first symbol in the prg and give it scope HB_FS_FIRST
* source/compiler/genc.c
+ Added check for HB_FS_FIRST in the symbol processing loop, and output to the symbol table.
* source/vm/hvm.c
! Fixed bug where if first symbol was an init symbol, it got executed twice.
* source/vm/runner.c
+ Added logic to look for first symbol, to provide correct startup.
! Fixed bug where if first symbol was an init symbol, it got executed twice.
* source/rtl/tclass.prg
! Corrected minor typo in HB_Structure()
* tests/teststru.prg
! Corrected minor typo.
+ tests/testinit.prg
+ Added file to test proper startup processing.
* source/compiler/harbour.l
+ Added "as structure", "as stru", "as array of structure", "as array of stru"
* source/compiler/hbpcode.c
* Improved some logic in hb_StrongType()
* source/vm/hvm.c
! Corrected startup symbol when having to use Main() as per Ryszard.
* source/pp/pptable.c
+ Added the equivalent of:
#COMMANDS STRUCTURE <StruName> <Var1> AS <Type1> [, <VarN> AS <TypeN> ] => ;
STATIC __<StruName> := {|| IF( __<StruName> == NIL, , ) , HB_Structure( <"StruName">, { <"Var1"> [, <"VarN">] } )} ;;
DECLARE <StruName> <Var1> AS <Type1> [ <VarN> AS <TypeN> ] ;;
#TRANSLATE AS NEW <ClassName> => AS CLASS <StruName> := ( Eval( __<StruName> ), HB_Structure( <StruName> ) )
#TRANSLATE AS NEW <ClassName> => AS CLASS <ClassName> := <ClassName>():New()
* source/rtl/tclass.prg
+ Added Function HB_Structure() ( Fully Declared! ) This function is used internally, but may be freely called from Clipper level.
It Aceepts Parameter 1 Structure Name, and optional parameter 2, as array of structure variable names.
If called with 2nd parameter, returns NIL (just creates the new Structure), if called with just parameter 1, it returns
new instance of defined structure.
+ tests\teststru.prg
+ Added demo for new structure syntax
* source/compiler/harbour.y
- Removed few unneeded hb_strdup() from calls to hb_compClassFind()
+ Added auto addition of Method Declaration for the SET Function of a declared Var of a declared class.
* source/compiler/harbour.c
- Removed few unneeded hb_strdup() from calls to hb_compClassFind()