* source/vm/macro.c
* source/vm/hvm.c
% Simplified logic for suppoting macro lists. Removed global variables:
int hb_vm_iFunCalls = 0, *hb_vm_aiMacroListParameters = NULL, hb_vm_iMacroListAllocated
which are no longer needed. No longer using any logic in any PCODE case, other than HB_P_PUSHMACROARG.
No longer using any arrays, or memory allocations.
* include/hbexpra.c
* include/hbexprb.c
* HB_P_PUSHMACROARG will now be followed with a push symbol sequence, indicating its parrent function call.
* include/hbpcode.h
* Added decimal values into the description comments for readability.
* source/rtl/tbrowse.prg
+ activated scoping
* include/hbapierr.h
include/hbapiitm.h
include/hbvm.h
source/rtl/errorapi.c
source/vm/hvm.c
source/vm/itemapi.c
! fixed va_start() use or, better, changed it to be compatible with OS/2 EMX GCC
compiler which REQUIRES that va_start() calls use a type which cannot be promoted
to something bigger. That is, this call is correct:
va_start(valist, ulUnsignedLongType)
while this one is not:
va_start(valist, usUnsignedShortType)
Using a type which can be promoted to a bigger one leads to memory corruption.
I think this requirement could exist even on other ANSI C compilers.
! Removed workaround inside hb_itemDo() and hb_itemDoC() to prevent this corruption.
* utils/hbpp/hbpp.c
* Commented an exit() call in hb_compGenError() to continue processing after an error just like Harbour does.
* include/hbapi.h
+ Added 2nd parameter BOOL bArg to hb_macroGetValue()
* include/hbexpra.c
+ Added global BOOL hb_exp_bArgList = FALSE;
* include/hbexprb.c
+ Added logic to generate HB_P_MACROPUSHARG rather than HB_MACROPUSH when pushed macro is a function call argument.
* include/hbpcode.h
* source/compiler/genc.c
* source/compiler/hbfix.c
* source/compiler/hbpcode.c
+ Added new HB_P_MACROPUSHARG
* source/macro/macro.y
+ Added logic to generate an error if macro expression is list, unless servicing an HB_MACROPUSHARG.
* source/vm/hvm.c
+ Added support for new HB_P_MACROPUSHARG calling hb_macroGetValue() with TRUE for bArg.
* source/vm/macro.c
+ Added 2nd parameter BOOL bArg to hb_macroGetValue() to signify servicing of HB_P_MACROPUSHARG.
* contrib/dot/pp.prg
+ Added bSplit 4th paramater to PP_PreProLine() defaulting to .T.. - Calls from PP_PreProFile() set it to .F..
* source/rtl/profiler.prg
- Removed <lOnlyUsed> parameter
+ Added <cFile> parameter.
+ Added <lAll> parameter
+ Added Cunsumed time in seconds
* Replaced MemoWrit() function with more controllable f* functions
+ profiler() returns a array with profiler info
Profiler()
=> Writes NO info to file, returns Array of profiler info.
Array only contains USED functions/classes.
Profiler(,.t.)
=> Writes NO info to file, returns Array of profiler info.
Array only contains ALL functions/classes.
Profiler("profiler.txt")
=> Writes profiler info to <profiler.txt> and returns Array of
profiler info. Array only contains USED functions/classes.
Profiler("profiler.txt", .t.)
=> Writes ALL profiler info to <profiler.txt> and returns Array of
profiler info. Array contains ALL functions/classes.
* source/vm/hvm.c
* Few improvements to recent support for lists in macro expansion
* source/vm/macro.c
+ Added preprocessing support to hb_macroGetValue()
* source/compiler/harbour.sly
* source/compiler/harbour.y
+ Added rules to support MacroVar and MacroExpr as a standalone Statement.
* include/hbapi.h
+ Added member iListElements to HB_MACRO structure.
* source/macro/macro.y
+ Added rules to support a macro of a comma seperated list.
* source/vm/hvm.c
+ Added: int hb_vm_iFunCalls = 0, *hb_vm_aiMacroListParameters = NULL, hb_vm_iMacroListAllocated
to support new logic to track number of extra parameters introduced by means of a macro expanded to a list.
* source/vm/macro.c
+ Added logic to track number of extra parameters introduced by means of a macro expanded to a list.
* source/rtl/profiler.prg
+ Added the <lOnlyUsed> parameter. If profiler is used like
this Profiler(.t.), the profiler.txt will only be filled
with used classes and/or functions.
* source/compiler/cmdcheck.c
+ Added missing type cast to resolve gcc warning.
* source/pp/ppcore.c
+ Added missing type cast to resolve gcc warning.
- Removed 4 redundant #includes already included by included hbcomp.h
* contrib/dot/pp.prg
* Changed PP_Main() to STATIC Main() to have a Main procedure for build that require a MAIN yet avoid conflict if linked with a prg including a MAIN.
* contrib/dot/pp_harb.ch
* Wrapped a Windows specific code within #ifdef WIN.
/* Thanks to input from Toma Zupan. */
* source/pp/ppcore.c
! Added a BOOL 2nd parameter to isExpres() to flag a LIST MP. This fixes problem with matching a list exp with an empty component.