diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 96c15ce4b1..ced1b0862c 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -1,3 +1,29 @@ +20000402-15:59 GMT+1 Victor Szakats + + - source/macro/macro.c + * source/macro/Makefile + + source/vm/macro.c + * source/vm/Makefile + * makefile.bc + * makefile.vc + + Base macro support modul moved to the HVM + + * source/vm/memvars.c + * include/hbapi.h + ! Uses hbcomp.h instead of the repeated VS_ macro definitions. + + hb_memvarCreateFromItem() made global. + + * source/vm/memvars.c + + source/vm/memvclip.c + * source/vm/Makefile + * makefile.bc + * makefile.vc + * CA-Cl*pper compatbility internal and undocumented functions moved + to a separate file. + + * source/debug/debugger.prg + % static scope adjusted. + 20000402-14:35 GMT+1 Victor Szakats * makefile.vc diff --git a/harbour/include/hbapi.h b/harbour/include/hbapi.h index dc93f2a789..9b65e29611 100644 --- a/harbour/include/hbapi.h +++ b/harbour/include/hbapi.h @@ -421,6 +421,7 @@ extern ULONG hb_memvarGetPrivatesBase( void ); extern void hb_memvarSetPrivatesBase( ULONG ); extern void hb_memvarNewParameter( PHB_SYMB, HB_ITEM_PTR ); extern char * hb_memvarGetStrValuePtr( char *, ULONG * ); +extern void hb_memvarCreateFromItem( PHB_ITEM pMemvar, BYTE bScope, PHB_ITEM pValue ); /* console I/O subsystem */ extern void hb_conInit( void ); diff --git a/harbour/makefile.bc b/harbour/makefile.bc index e684b572c7..a27bb91448 100644 --- a/harbour/makefile.bc +++ b/harbour/makefile.bc @@ -327,8 +327,7 @@ MACRO_LIB_OBJS = \ $(OBJ_DIR)\macrol.obj \ $(OBJ_DIR)\macroa.obj \ $(OBJ_DIR)\macrob.obj \ - $(OBJ_DIR)\macroc.obj \ - $(OBJ_DIR)\macro.obj + $(OBJ_DIR)\macroc.obj # # RDD.LIB rules @@ -414,10 +413,12 @@ VM_LIB_OBJS = \ $(OBJ_DIR)\initexit.obj \ $(OBJ_DIR)\initsymb.obj \ $(OBJ_DIR)\itemapi.obj \ + $(OBJ_DIR)\macro.obj \ $(OBJ_DIR)\maindll.obj \ $(OBJ_DIR)\mainstd.obj \ $(OBJ_DIR)\mainwin.obj \ $(OBJ_DIR)\memvars.obj \ + $(OBJ_DIR)\memvclip.obj \ $(OBJ_DIR)\pcount.obj \ $(OBJ_DIR)\proc.obj \ $(OBJ_DIR)\pvalue.obj \ @@ -841,6 +842,10 @@ $(OBJ_DIR)\itemapi.obj : $(VM_DIR)\itemapi.c $(CC) $(CLIBFLAGS) -o$@ $** tlib $(VM_LIB) -+$@,, +$(OBJ_DIR)\macro.obj : $(VM_DIR)\macro.c + $(CC) $(CLIBFLAGS) -o$@ $** + tlib $(VM_LIB) -+$@,, + $(OBJ_DIR)\maindll.obj : $(VM_DIR)\maindll.c $(CC) $(CLIBFLAGS) -o$@ $** tlib $(VM_LIB) -+$@,, @@ -857,6 +862,10 @@ $(OBJ_DIR)\memvars.obj : $(VM_DIR)\memvars.c $(CC) $(CLIBFLAGS) -o$@ $** tlib $(VM_LIB) -+$@,, +$(OBJ_DIR)\memvclip.obj : $(VM_DIR)\memvclip.c + $(CC) $(CLIBFLAGS) -o$@ $** + tlib $(VM_LIB) -+$@,, + $(OBJ_DIR)\pcount.obj : $(VM_DIR)\pcount.c $(CC) $(CLIBFLAGS) -o$@ $** tlib $(VM_LIB) -+$@,, @@ -1665,10 +1674,6 @@ $(OBJ_DIR)\macrol.obj : $(OBJ_DIR)\macrol.c $(CC) $(CLIBFLAGS) -I$(OBJ_DIR) -o$@ $** tlib $(MACRO_LIB) -+$@,, -$(OBJ_DIR)\macro.obj : $(MACRO_DIR)\macro.c - $(CC) $(CLIBFLAGS) -o$@ $** - tlib $(MACRO_LIB) -+$@,, - $(OBJ_DIR)\macroa.obj : $(MACRO_DIR)\macroa.c $(CC) $(CLIBFLAGS) -o$@ $** tlib $(MACRO_LIB) -+$@,, diff --git a/harbour/makefile.vc b/harbour/makefile.vc index ae38714bf7..dca3b8eb82 100644 --- a/harbour/makefile.vc +++ b/harbour/makefile.vc @@ -376,8 +376,7 @@ MACRO_LIB_OBJS = \ $(OBJ_DIR)\macroy.obj \ $(OBJ_DIR)\macroa.obj \ $(OBJ_DIR)\macrob.obj \ - $(OBJ_DIR)\macroc.obj \ - $(OBJ_DIR)\macro.obj + $(OBJ_DIR)\macroc.obj # # RDD.LIB rules @@ -528,10 +527,12 @@ VM_LIB_OBJS = \ $(OBJ_DIR)\initexit.obj \ $(OBJ_DIR)\initsymb.obj \ $(OBJ_DIR)\itemapi.obj \ + $(OBJ_DIR)\macro.obj \ $(OBJ_DIR)\maindll.obj \ $(OBJ_DIR)\mainstd.obj \ $(OBJ_DIR)\mainwin.obj \ $(OBJ_DIR)\memvars.obj \ + $(OBJ_DIR)\memvclip.obj \ $(OBJ_DIR)\pcount.obj \ $(OBJ_DIR)\proc.obj \ $(OBJ_DIR)\pvalue.obj \ diff --git a/harbour/source/debug/debugger.prg b/harbour/source/debug/debugger.prg index 013d6bb4a6..05f5914fb9 100644 --- a/harbour/source/debug/debugger.prg +++ b/harbour/source/debug/debugger.prg @@ -49,9 +49,9 @@ static s_oDebugger static s_lExit := .F. -static s_lEnabled := .t. function AltD( nAction ) + static s_lEnabled := .t. do case case nAction == nil diff --git a/harbour/source/macro/Makefile b/harbour/source/macro/Makefile index 1fb4fd68fd..350ed696b6 100644 --- a/harbour/source/macro/Makefile +++ b/harbour/source/macro/Makefile @@ -33,7 +33,7 @@ LEX_HEADERS=\ hbdefs.h \ hbmacro.h \ -C_SOURCES=macro.c \ +C_SOURCES=\ macroa.c \ macrob.c \ macroc.c \ diff --git a/harbour/source/vm/Makefile b/harbour/source/vm/Makefile index f2f7ccec06..f7fc72fd57 100644 --- a/harbour/source/vm/Makefile +++ b/harbour/source/vm/Makefile @@ -19,8 +19,10 @@ C_SOURCES=\ initexit.c \ initsymb.c \ itemapi.c \ + macro.c \ main.c \ memvars.c \ + memvclip.c \ pcount.c \ proc.c \ pvalue.c \ diff --git a/harbour/source/macro/macro.c b/harbour/source/vm/macro.c similarity index 100% rename from harbour/source/macro/macro.c rename to harbour/source/vm/macro.c diff --git a/harbour/source/vm/memvars.c b/harbour/source/vm/memvars.c index 75809a8388..a2b9a550d5 100644 --- a/harbour/source/vm/memvars.c +++ b/harbour/source/vm/memvars.c @@ -40,10 +40,7 @@ * Copyright 1999 Victor Szakats * __MVSAVE() * __MVRESTORE() (Thanks to Dave Pearson and Jo French for the original - * Clipper function (FReadMem()) to read .MEM files) - * __MSAVE() - * __MRESTORE() - * __QQPUB() + * Clipper function (FReadMem()) to read .mem files) * * See doc/license.txt for licensing terms. * @@ -56,12 +53,10 @@ #include "hbapierr.h" #include "hbapifs.h" /* for __MVSAVE()/__MVRESTORE() */ #include "hbdate.h" /* for __MVSAVE()/__MVRESTORE() */ +#include "hbcomp.h" /* for VS_* macros */ #include "error.ch" #include "hbmemvar.ch" -#define VS_PRIVATE 64 -#define VS_PUBLIC 128 - static PHB_DYNS * s_privateStack = NULL; static ULONG s_privateStackSize = 0; static ULONG s_privateStackCnt = 0; @@ -83,11 +78,10 @@ struct mv_PUBLIC_var_info HB_DYNS_PTR pDynSym; }; - -static void hb_memvarCreateFromItem( PHB_ITEM, BYTE, PHB_ITEM ); static void hb_memvarCreateFromDynSymbol( PHB_DYNS, BYTE, PHB_ITEM ); static void hb_memvarAddPrivate( PHB_DYNS ); static HB_DYNS_PTR hb_memvarFindSymbol( HB_ITEM_PTR ); + void hb_memvarsInit( void ) { HB_TRACE(HB_TR_DEBUG, ("hb_memvarsInit()")); @@ -102,7 +96,6 @@ void hb_memvarsInit( void ) s_privateStackCnt = s_privateStackBase = 0; } - void hb_memvarsRelease( void ) { ULONG ulCnt = s_globalLastFree; @@ -136,7 +129,6 @@ HB_VALUE_PTR *hb_memvarValueBaseAddress( void ) return &s_globalTable; } - /* * This function creates new global value. * @@ -572,7 +564,7 @@ char * hb_memvarGetStrValuePtr( char * szVarName, ULONG *pulLen ) * or NULL * */ -static void hb_memvarCreateFromItem( PHB_ITEM pMemvar, BYTE bScope, PHB_ITEM pValue ) +void hb_memvarCreateFromItem( PHB_ITEM pMemvar, BYTE bScope, PHB_ITEM pValue ) { PHB_DYNS pDynVar = NULL; @@ -941,16 +933,6 @@ HB_FUNC( __MVPUBLIC ) } } -/* NOTE: Undocumented Clipper internal function */ - -HB_FUNC( __QQPUB ) -{ - PHB_ITEM pItem = hb_param( 1, HB_IT_STRING ); - - if( pItem ) - hb_memvarCreateFromItem( pItem, VS_PUBLIC, NULL ); -} - HB_FUNC( __MVPRIVATE ) { int iCount = hb_pcount(); @@ -1506,30 +1488,3 @@ HB_FUNC( __MVRESTORE ) hb_errRT_BASE( EG_ARG, 2007, NULL, "__MRESTORE" ); } -/* CA-Clipper 5.2e compatibility functions. */ - -HB_FUNC( __MCLEAR ) -{ - HB_FUNCNAME( __MVCLEAR )(); -} - -HB_FUNC( __MRELEASE ) -{ - HB_FUNCNAME( __MVRELEASE )(); -} - -HB_FUNC( __MXRELEASE ) -{ - HB_FUNCNAME( __MVXRELEASE )(); -} - -HB_FUNC( __MSAVE ) -{ - HB_FUNCNAME( __MVSAVE )(); -} - -HB_FUNC( __MRESTORE ) -{ - HB_FUNCNAME( __MVRESTORE )(); -} - diff --git a/harbour/source/vm/memvclip.c b/harbour/source/vm/memvclip.c new file mode 100644 index 0000000000..f4c58cc22b --- /dev/null +++ b/harbour/source/vm/memvclip.c @@ -0,0 +1,82 @@ +/* + * $Id$ + */ + +/* + * Harbour Project source code: + * CA-Cl*pper compatibility memvar support + * + * Copyright 1999 Victor Szakats + * www - http://www.harbour-project.org + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version, with one exception: + * + * The exception is that if you link the Harbour Runtime Library (HRL) + * and/or the Harbour Virtual Machine (HVM) with other files to produce + * an executable, this does not by itself cause the resulting executable + * to be covered by the GNU General Public License. Your use of that + * executable is in no way restricted on account of linking the HRL + * and/or HVM code into it. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA (or visit + * their web site at http://www.gnu.org/). + * + */ + +#include "hbapi.h" +#include "hbapiitm.h" +#include "hbcomp.h" /* for VS_* macros */ + +extern HB_FUNC( __MVCLEAR ); +extern HB_FUNC( __MVRELEASE ); +extern HB_FUNC( __MVXRELEASE ); +extern HB_FUNC( __MVSAVE ); +extern HB_FUNC( __MVRESTORE ); + +/* NOTE: Undocumented Clipper internal function */ + +HB_FUNC( __QQPUB ) +{ + PHB_ITEM pItem = hb_param( 1, HB_IT_STRING ); + + if( pItem ) + hb_memvarCreateFromItem( pItem, VS_PUBLIC, NULL ); +} + +/* CA-Clipper 5.2e compatibility functions. */ + +HB_FUNC( __MCLEAR ) +{ + HB_FUNCNAME( __MVCLEAR )(); +} + +HB_FUNC( __MRELEASE ) +{ + HB_FUNCNAME( __MVRELEASE )(); +} + +HB_FUNC( __MXRELEASE ) +{ + HB_FUNCNAME( __MVXRELEASE )(); +} + +HB_FUNC( __MSAVE ) +{ + HB_FUNCNAME( __MVSAVE )(); +} + +HB_FUNC( __MRESTORE ) +{ + HB_FUNCNAME( __MVRESTORE )(); +} +