From 035d484e54cf5ed82c28ce192411b21dea324d29 Mon Sep 17 00:00:00 2001 From: Przemyslaw Czerpak Date: Wed, 16 Nov 2005 12:27:55 +0000 Subject: [PATCH] 2005-11-16 13:14 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl) * xharbour/include/hbvmpub.h * changed definition of HB_SYMB structure. HB_SYMBOLSCOPE cScope replaced by: union { HB_SYMBOLSCOPE value; /* the scope of the symbol */ void * pointer; /* filler to force alignment */ } scope; This modification should only force the same alignment independently on used compiler alignment switches or executed #pragma pack* It's important to keep this structure with fixed size because it's used in .c files generated from .prg code. The code with #pragma pack* removed - it should not be longer necessary but please make a real tests with different compiler alignment switches * harbour/contrib/btree/hb_btree.c * harbour/contrib/rdd_ads/ads1.c * harbour/contrib/runjava/runjava.c * harbour/source/compiler/genc.c * harbour/source/rdd/dbf1.c * harbour/source/rdd/delim1.c * harbour/source/rdd/sdf1.c * harbour/source/rdd/dbfcdx/dbfcdx1.c * harbour/source/rdd/dbfdbt/dbfdbt1.c * harbour/source/rdd/dbffpt/dbffpt1.c * harbour/source/rdd/dbfntx/dbfntx1.c * harbour/source/vm/dynsym.c * harbour/source/vm/hvm.c * harbour/source/vm/initsymb.c * harbour/source/vm/runner.c * updated for modified HB_SYMB structure. --- harbour/ChangeLog | 35 ++++++++ harbour/contrib/btree/hb_btree.c | 4 +- harbour/contrib/rdd_ads/ads1.c | 10 +-- harbour/contrib/runjava/runjava.c | 18 ++-- harbour/include/hbvmpub.h | 13 ++- harbour/source/compiler/genc.c | 14 ++-- harbour/source/rdd/dbf1.c | 4 +- harbour/source/rdd/dbfcdx/dbfcdx1.c | 8 +- harbour/source/rdd/dbfdbt/dbfdbt1.c | 4 +- harbour/source/rdd/dbffpt/dbffpt1.c | 4 +- harbour/source/rdd/dbfntx/dbfntx1.c | 4 +- harbour/source/rdd/delim1.c | 4 +- harbour/source/rdd/sdf1.c | 4 +- harbour/source/vm/dynsym.c | 8 +- harbour/source/vm/hvm.c | 24 +++--- harbour/source/vm/initsymb.c | 126 ++++++++++++++-------------- harbour/source/vm/runner.c | 20 ++--- 17 files changed, 168 insertions(+), 136 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 1f4ba9761e..8c569359b6 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -8,6 +8,41 @@ 2002-12-01 13:30 UTC+0100 Foo Bar */ +2005-11-16 13:14 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl) + * xharbour/include/hbvmpub.h + * changed definition of HB_SYMB structure. + HB_SYMBOLSCOPE cScope + replaced by: + union + { + HB_SYMBOLSCOPE value; /* the scope of the symbol */ + void * pointer; /* filler to force alignment */ + } scope; + This modification should only force the same alignment independently + on used compiler alignment switches or executed #pragma pack* + It's important to keep this structure with fixed size because it's + used in .c files generated from .prg code. + The code with #pragma pack* removed - it should not be longer + necessary but please make a real tests with different compiler + alignment switches + + * harbour/contrib/btree/hb_btree.c + * harbour/contrib/rdd_ads/ads1.c + * harbour/contrib/runjava/runjava.c + * harbour/source/compiler/genc.c + * harbour/source/rdd/dbf1.c + * harbour/source/rdd/delim1.c + * harbour/source/rdd/sdf1.c + * harbour/source/rdd/dbfcdx/dbfcdx1.c + * harbour/source/rdd/dbfdbt/dbfdbt1.c + * harbour/source/rdd/dbffpt/dbffpt1.c + * harbour/source/rdd/dbfntx/dbfntx1.c + * harbour/source/vm/dynsym.c + * harbour/source/vm/hvm.c + * harbour/source/vm/initsymb.c + * harbour/source/vm/runner.c + * updated for modified HB_SYMB structure. + 2005-11-15 05:10 UTC+0100 Viktor Szakats (viktor.szakats/syenar.hu) * hrbdll.bc * hrbdll.vc diff --git a/harbour/contrib/btree/hb_btree.c b/harbour/contrib/btree/hb_btree.c index ddf97fc0c0..f18ad68491 100644 --- a/harbour/contrib/btree/hb_btree.c +++ b/harbour/contrib/btree/hb_btree.c @@ -2015,8 +2015,8 @@ static void hb_BTree_Terminate( void ) } HB_INIT_SYMBOLS_BEGIN( hb_BTree_Initialize_Terminate ) - { "hb_BTree_Initialize", HB_FS_INIT, {hb_BTree_Initialize}, NULL }, - { "hb_BTree_Terminate" , HB_FS_EXIT, {hb_BTree_Terminate} , NULL }, + { "hb_BTree_Initialize", {HB_FS_INIT}, {hb_BTree_Initialize}, NULL }, + { "hb_BTree_Terminate" , {HB_FS_EXIT}, {hb_BTree_Terminate} , NULL }, HB_INIT_SYMBOLS_END( hb_BTree_Initialize_Terminate ) HB_EXTERN_END diff --git a/harbour/contrib/rdd_ads/ads1.c b/harbour/contrib/rdd_ads/ads1.c index 0bf15861d3..ddb3575987 100644 --- a/harbour/contrib/rdd_ads/ads1.c +++ b/harbour/contrib/rdd_ads/ads1.c @@ -4538,11 +4538,11 @@ static void hb_adsRddInit( void * cargo ) } HB_INIT_SYMBOLS_BEGIN( ads1__InitSymbols ) -{ "ADS", HB_FS_PUBLIC, {HB_FUNCNAME( ADS )}, NULL }, -{ "ADS_GETFUNCTABLE", HB_FS_PUBLIC, {HB_FUNCNAME( ADS_GETFUNCTABLE )}, NULL }, -{ "ADT_GETFUNCTABLE", HB_FS_PUBLIC, {HB_FUNCNAME( ADT_GETFUNCTABLE )}, NULL }, -{ "ADSNTX_GETFUNCTABLE", HB_FS_PUBLIC, {HB_FUNCNAME( ADSNTX_GETFUNCTABLE )}, NULL }, -{ "ADSCDX_GETFUNCTABLE", HB_FS_PUBLIC, {HB_FUNCNAME( ADSCDX_GETFUNCTABLE )}, NULL } +{ "ADS", {HB_FS_PUBLIC}, {HB_FUNCNAME( ADS )}, NULL }, +{ "ADS_GETFUNCTABLE", {HB_FS_PUBLIC}, {HB_FUNCNAME( ADS_GETFUNCTABLE )}, NULL }, +{ "ADT_GETFUNCTABLE", {HB_FS_PUBLIC}, {HB_FUNCNAME( ADT_GETFUNCTABLE )}, NULL }, +{ "ADSNTX_GETFUNCTABLE", {HB_FS_PUBLIC}, {HB_FUNCNAME( ADSNTX_GETFUNCTABLE )}, NULL }, +{ "ADSCDX_GETFUNCTABLE", {HB_FS_PUBLIC}, {HB_FUNCNAME( ADSCDX_GETFUNCTABLE )}, NULL } HB_INIT_SYMBOLS_END( ads1__InitSymbols ) HB_CALL_ON_STARTUP_BEGIN( _hb_ads_rdd_init_ ) diff --git a/harbour/contrib/runjava/runjava.c b/harbour/contrib/runjava/runjava.c index 28ea699f1b..2e1eb78031 100644 --- a/harbour/contrib/runjava/runjava.c +++ b/harbour/contrib/runjava/runjava.c @@ -176,10 +176,10 @@ JNIEXPORT jlong JNICALL Java_Harbour_Run( JNIEnv *env, for( ul = 0; ul < ulSymbols; ul++ ) /* Read symbols in .HRB */ { - pSymRead[ ul ].szName = hb_hrbFileReadId( file ); - pSymRead[ ul ].cScope = hb_hrbFileReadByte( file ); - pSymRead[ ul ].pFunPtr = ( PHB_FUNC ) ( ULONG ) hb_hrbFileReadByte( file ); - pSymRead[ ul ].pDynSym = NULL; + pSymRead[ ul ].szName = hb_hrbFileReadId( file ); + pSymRead[ ul ].scope.value = hb_hrbFileReadByte( file ); + pSymRead[ ul ].pFunPtr = ( PHB_FUNC ) ( ULONG ) hb_hrbFileReadByte( file ); + pSymRead[ ul ].pDynSym = NULL; } ulFuncs = hb_hrbFileReadLong( file ); /* Read number of functions */ @@ -209,7 +209,7 @@ JNIEXPORT jlong JNICALL Java_Harbour_Run( JNIEnv *env, { /* Exists and NOT static ? */ /* if( hb_dynsymFind( pSymRead[ ul ].szName ) && - !( pSymRead[ ul ].cScope & FS_STATIC ) ) + !( pSymRead[ ul ].scope.value & FS_STATIC ) ) { hb_errRT_BASE( EG_ARG, 9999, "Duplicate symbol", pSymRead[ ul ].szName ); bError = TRUE; @@ -244,7 +244,7 @@ JNIEXPORT jlong JNICALL Java_Harbour_Run( JNIEnv *env, */ for( ul = 0; ul < ulSymbols; ul++ ) /* Check INIT functions */ { - if( ( pSymRead[ ul ].cScope & HB_FS_INITEXIT ) == HB_FS_INITEXIT ) + if( ( pSymRead[ ul ].scope.value & HB_FS_INITEXIT ) == HB_FS_INITEXIT ) { /* call (_INITSTATICS) function. This function assigns * literal values to static variables only. There is no need @@ -256,7 +256,7 @@ JNIEXPORT jlong JNICALL Java_Harbour_Run( JNIEnv *env, } for( ul = 0; ul < ulSymbols; ul++ ) /* Check INIT functions */ { - if( ( pSymRead[ ul ].cScope & HB_FS_INITEXIT ) == HB_FS_INIT ) + if( ( pSymRead[ ul ].scope.value & HB_FS_INITEXIT ) == HB_FS_INIT ) { hb_vmPushSymbol( pSymRead + ul ); hb_vmPushNil(); @@ -278,12 +278,12 @@ JNIEXPORT jlong JNICALL Java_Harbour_Run( JNIEnv *env, for( ul = 0; ul < ulSymbols; ul++ ) /* Check EXIT functions */ { - if( ( pSymRead[ ul ].cScope & HB_FS_INITEXIT ) == HB_FS_EXIT ) + if( ( pSymRead[ ul ].scope.value & HB_FS_INITEXIT ) == HB_FS_EXIT ) { hb_vmPushSymbol( pSymRead + ul ); hb_vmPushNil(); hb_vmDo( 0 ); /* Run exit function */ - pSymRead[ ul ].cScope = pSymRead[ ul ].cScope & ( ~HB_FS_EXIT ); + pSymRead[ ul ].scope.value = pSymRead[ ul ].scope.value & ( ~HB_FS_EXIT ); /* Exit function cannot be handled by main in hvm.c */ } diff --git a/harbour/include/hbvmpub.h b/harbour/include/hbvmpub.h index 6636790fb8..93a0b87186 100644 --- a/harbour/include/hbvmpub.h +++ b/harbour/include/hbvmpub.h @@ -59,24 +59,21 @@ HB_EXTERN_BEGIN struct _HB_DYNS; -#if defined(_MSC_VER) && _MSC_VER < 1000 - #pragma pack(8) -#endif - /* symbol support structure */ typedef struct { char * szName; /* the name of the symbol */ - HB_SYMBOLSCOPE cScope; /* the scope of the symbol */ + union + { + HB_SYMBOLSCOPE value; /* the scope of the symbol */ + void * pointer; /* filler to force alignment */ + } scope; union { PHB_FUNC pFunPtr; /* function address for function symbol table entries */ int iStaticsBase; } value; struct _HB_DYNS * pDynSym; /* pointer to its dynamic symbol if defined */ } HB_SYMB, * PHB_SYMB; -#if defined(_MSC_VER) && _MSC_VER < 1000 - #pragma pack() -#endif /* dynamic symbol structure */ typedef struct _HB_DYNS diff --git a/harbour/source/compiler/genc.c b/harbour/source/compiler/genc.c index 3cb9dc6401..d7a56248aa 100644 --- a/harbour/source/compiler/genc.c +++ b/harbour/source/compiler/genc.c @@ -172,11 +172,11 @@ void hb_compGenCCode( PHB_FNAME pFileName ) /* generates the C language ou * we are using these two bits to mark the special function used to * initialize static variables */ - fprintf( yyc, "{ \"(_INITSTATICS)\", HB_FS_INIT | HB_FS_EXIT, {hb_INITSTATICS}, NULL }" ); /* NOTE: hb_ intentionally in lower case */ + fprintf( yyc, "{ \"(_INITSTATICS)\", {HB_FS_INIT | HB_FS_EXIT}, {hb_INITSTATICS}, NULL }" ); /* NOTE: hb_ intentionally in lower case */ } else { - fprintf( yyc, "{ \"%s\", ", pSym->szName ); + fprintf( yyc, "{ \"%s\", {", pSym->szName ); if( pSym->cScope & HB_FS_STATIC ) { @@ -205,16 +205,16 @@ void hb_compGenCCode( PHB_FNAME pFileName ) /* generates the C language ou if( pSym->bFunc && hb_compFunctionFind( pSym->szName ) ) /* is it a function defined in this module */ { if( pSym->cScope & HB_FS_INIT ) - hb_compGenCFunc( yyc, ", {HB_INIT_FUNCNAME( %s )}, NULL }", pSym->szName, 1 ); + hb_compGenCFunc( yyc, "}, {HB_INIT_FUNCNAME( %s )}, NULL }", pSym->szName, 1 ); else if( pSym->cScope & HB_FS_EXIT ) - hb_compGenCFunc( yyc, ", {HB_EXIT_FUNCNAME( %s )}, NULL }", pSym->szName, 1 ); + hb_compGenCFunc( yyc, "}, {HB_EXIT_FUNCNAME( %s )}, NULL }", pSym->szName, 1 ); else - fprintf( yyc, ", {HB_FUNCNAME( %s )}, NULL }", pSym->szName ); + fprintf( yyc, "}, {HB_FUNCNAME( %s )}, NULL }", pSym->szName ); } else if( pSym->bFunc && hb_compFunCallFind( pSym->szName ) ) /* is it a function called from this module */ - fprintf( yyc, ", {HB_FUNCNAME( %s )}, NULL }", pSym->szName ); + fprintf( yyc, "}, {HB_FUNCNAME( %s )}, NULL }", pSym->szName ); else - fprintf( yyc, ", {NULL}, NULL }" ); /* memvar */ + fprintf( yyc, "}, {NULL}, NULL }" ); /* memvar */ } if( pSym != hb_comp_symbols.pLast ) diff --git a/harbour/source/rdd/dbf1.c b/harbour/source/rdd/dbf1.c index 43637cb233..9bb851d165 100644 --- a/harbour/source/rdd/dbf1.c +++ b/harbour/source/rdd/dbf1.c @@ -4416,8 +4416,8 @@ static void hb_dbfRddInit( void * cargo ) } HB_INIT_SYMBOLS_BEGIN( dbf1__InitSymbols ) -{ "_DBF", HB_FS_PUBLIC, {HB_FUNCNAME( _DBF )}, NULL }, -{ "DBF_GETFUNCTABLE", HB_FS_PUBLIC, {HB_FUNCNAME( DBF_GETFUNCTABLE )}, NULL } +{ "_DBF", {HB_FS_PUBLIC}, {HB_FUNCNAME( _DBF )}, NULL }, +{ "DBF_GETFUNCTABLE", {HB_FS_PUBLIC}, {HB_FUNCNAME( DBF_GETFUNCTABLE )}, NULL } HB_INIT_SYMBOLS_END( dbf1__InitSymbols ) HB_CALL_ON_STARTUP_BEGIN( _hb_dbf_rdd_init_ ) diff --git a/harbour/source/rdd/dbfcdx/dbfcdx1.c b/harbour/source/rdd/dbfcdx/dbfcdx1.c index 01746feac4..255d500caf 100644 --- a/harbour/source/rdd/dbfcdx/dbfcdx1.c +++ b/harbour/source/rdd/dbfcdx/dbfcdx1.c @@ -9194,8 +9194,8 @@ static void hb_dbfcdxRddInit( void * cargo ) } HB_INIT_SYMBOLS_BEGIN( dbfcdx1__InitSymbols ) -{ "SIXCDX", HB_FS_PUBLIC, {HB_FUNCNAME( SIXCDX )}, NULL }, -{ "SIXCDX_GETFUNCTABLE", HB_FS_PUBLIC, {HB_FUNCNAME( SIXCDX_GETFUNCTABLE )}, NULL } +{ "SIXCDX", {HB_FS_PUBLIC}, {HB_FUNCNAME( SIXCDX )}, NULL }, +{ "SIXCDX_GETFUNCTABLE", {HB_FS_PUBLIC}, {HB_FUNCNAME( SIXCDX_GETFUNCTABLE )}, NULL } HB_INIT_SYMBOLS_END( dbfcdx1__InitSymbols ) #else @@ -9258,8 +9258,8 @@ static void hb_dbfcdxRddInit( void * cargo ) } HB_INIT_SYMBOLS_BEGIN( dbfcdx1__InitSymbols ) -{ "DBFCDX", HB_FS_PUBLIC, {HB_FUNCNAME( DBFCDX )}, NULL }, -{ "DBFCDX_GETFUNCTABLE", HB_FS_PUBLIC, {HB_FUNCNAME( DBFCDX_GETFUNCTABLE )}, NULL } +{ "DBFCDX", {HB_FS_PUBLIC}, {HB_FUNCNAME( DBFCDX )}, NULL }, +{ "DBFCDX_GETFUNCTABLE", {HB_FS_PUBLIC}, {HB_FUNCNAME( DBFCDX_GETFUNCTABLE )}, NULL } HB_INIT_SYMBOLS_END( dbfcdx1__InitSymbols ) #endif diff --git a/harbour/source/rdd/dbfdbt/dbfdbt1.c b/harbour/source/rdd/dbfdbt/dbfdbt1.c index bddc44d16c..c06f41b68d 100644 --- a/harbour/source/rdd/dbfdbt/dbfdbt1.c +++ b/harbour/source/rdd/dbfdbt/dbfdbt1.c @@ -849,8 +849,8 @@ static void hb_dbfdbtRddInit( void * cargo ) } HB_INIT_SYMBOLS_BEGIN( dbfdbt1__InitSymbols ) -{ "DBFDBT", HB_FS_PUBLIC, {HB_FUNCNAME( DBFDBT )}, NULL }, -{ "DBFDBT_GETFUNCTABLE", HB_FS_PUBLIC, {HB_FUNCNAME( DBFDBT_GETFUNCTABLE )}, NULL } +{ "DBFDBT", {HB_FS_PUBLIC}, {HB_FUNCNAME( DBFDBT )}, NULL }, +{ "DBFDBT_GETFUNCTABLE", {HB_FS_PUBLIC}, {HB_FUNCNAME( DBFDBT_GETFUNCTABLE )}, NULL } HB_INIT_SYMBOLS_END( dbfdbt1__InitSymbols ) HB_CALL_ON_STARTUP_BEGIN( _hb_dbfdbt_rdd_init_ ) diff --git a/harbour/source/rdd/dbffpt/dbffpt1.c b/harbour/source/rdd/dbffpt/dbffpt1.c index 2256eb90ca..b56c0de8d4 100644 --- a/harbour/source/rdd/dbffpt/dbffpt1.c +++ b/harbour/source/rdd/dbffpt/dbffpt1.c @@ -4026,8 +4026,8 @@ static void hb_dbffptRddInit( void * cargo ) } HB_INIT_SYMBOLS_BEGIN( dbffpt1__InitSymbols ) -{ "DBFFPT", HB_FS_PUBLIC, {HB_FUNCNAME( DBFFPT )}, NULL }, -{ "DBFFPT_GETFUNCTABLE", HB_FS_PUBLIC, {HB_FUNCNAME( DBFFPT_GETFUNCTABLE )}, NULL } +{ "DBFFPT", {HB_FS_PUBLIC}, {HB_FUNCNAME( DBFFPT )}, NULL }, +{ "DBFFPT_GETFUNCTABLE", {HB_FS_PUBLIC}, {HB_FUNCNAME( DBFFPT_GETFUNCTABLE )}, NULL } HB_INIT_SYMBOLS_END( dbffpt1__InitSymbols ) HB_CALL_ON_STARTUP_BEGIN( _hb_dbffpt_rdd_init_ ) diff --git a/harbour/source/rdd/dbfntx/dbfntx1.c b/harbour/source/rdd/dbfntx/dbfntx1.c index 72057fbff8..2963fec691 100644 --- a/harbour/source/rdd/dbfntx/dbfntx1.c +++ b/harbour/source/rdd/dbfntx/dbfntx1.c @@ -7555,8 +7555,8 @@ static void hb_dbfntxRddInit( void * cargo ) } HB_INIT_SYMBOLS_BEGIN( dbfntx1__InitSymbols ) -{ "DBFNTX", HB_FS_PUBLIC, {HB_FUNCNAME( DBFNTX )}, NULL }, -{ "DBFNTX_GETFUNCTABLE", HB_FS_PUBLIC, {HB_FUNCNAME( DBFNTX_GETFUNCTABLE )}, NULL } +{ "DBFNTX", {HB_FS_PUBLIC}, {HB_FUNCNAME( DBFNTX )}, NULL }, +{ "DBFNTX_GETFUNCTABLE", {HB_FS_PUBLIC}, {HB_FUNCNAME( DBFNTX_GETFUNCTABLE )}, NULL } HB_INIT_SYMBOLS_END( dbfntx1__InitSymbols ) HB_CALL_ON_STARTUP_BEGIN( _hb_dbfntx_rdd_init_ ) diff --git a/harbour/source/rdd/delim1.c b/harbour/source/rdd/delim1.c index 1a3e1bfacf..b27f296b0f 100644 --- a/harbour/source/rdd/delim1.c +++ b/harbour/source/rdd/delim1.c @@ -208,8 +208,8 @@ static void hb_delimRddInit( void * cargo ) } HB_INIT_SYMBOLS_BEGIN( delim1__InitSymbols ) -{ "DELIM", HB_FS_PUBLIC, {HB_FUNCNAME( DELIM )}, NULL }, -{ "DELIM_GETFUNCTABLE", HB_FS_PUBLIC, {HB_FUNCNAME( DELIM_GETFUNCTABLE )}, NULL } +{ "DELIM", {HB_FS_PUBLIC}, {HB_FUNCNAME( DELIM )}, NULL }, +{ "DELIM_GETFUNCTABLE", {HB_FS_PUBLIC}, {HB_FUNCNAME( DELIM_GETFUNCTABLE )}, NULL } HB_INIT_SYMBOLS_END( delim1__InitSymbols ) HB_CALL_ON_STARTUP_BEGIN( _hb_delim_rdd_init_ ) diff --git a/harbour/source/rdd/sdf1.c b/harbour/source/rdd/sdf1.c index b501ae53e8..3869ebd400 100644 --- a/harbour/source/rdd/sdf1.c +++ b/harbour/source/rdd/sdf1.c @@ -206,8 +206,8 @@ static void hb_sdfRddInit( void * cargo ) } HB_INIT_SYMBOLS_BEGIN( sdf1__InitSymbols ) -{ "SDF", HB_FS_PUBLIC, {HB_FUNCNAME( SDF )}, NULL }, -{ "SDF_GETFUNCTABLE", HB_FS_PUBLIC, {HB_FUNCNAME( SDF_GETFUNCTABLE )}, NULL } +{ "SDF", {HB_FS_PUBLIC}, {HB_FUNCNAME( SDF )}, NULL }, +{ "SDF_GETFUNCTABLE", {HB_FS_PUBLIC}, {HB_FUNCNAME( SDF_GETFUNCTABLE )}, NULL } HB_INIT_SYMBOLS_END( sdf1__InitSymbols ) HB_CALL_ON_STARTUP_BEGIN( _hb_sdf_rdd_init_ ) diff --git a/harbour/source/vm/dynsym.c b/harbour/source/vm/dynsym.c index 101d706454..50d62e0c7a 100644 --- a/harbour/source/vm/dynsym.c +++ b/harbour/source/vm/dynsym.c @@ -86,8 +86,8 @@ PHB_SYMB HB_EXPORT hb_symbolNew( char * szName ) /* Create a new symbol */ pSymbol = ( PHB_SYMB ) hb_xgrab( sizeof( HB_SYMB ) ); pSymbol->szName = ( char * ) hb_xgrab( strlen( szName ) + 1 ); - pSymbol->cScope = SYM_ALLOCATED; /* to know what symbols to release when exiting the app */ strcpy( pSymbol->szName, szName ); + pSymbol->scope.value = SYM_ALLOCATED; /* to know what symbols to release when exiting the app */ pSymbol->value.pFunPtr = NULL; pSymbol->pDynSym = NULL; @@ -104,7 +104,7 @@ PHB_DYNS HB_EXPORT hb_dynsymNew( PHB_SYMB pSymbol ) /* creates a new dynamic if( pDynSym ) /* If name exists */ { - if( pSymbol->cScope & HB_FS_PUBLIC ) /* only for HB_FS_PUBLIC */ + if( pSymbol->scope.value & HB_FS_PUBLIC ) /* only for HB_FS_PUBLIC */ { if( ( ! pDynSym->pFunPtr ) && pSymbol->value.pFunPtr ) /* The DynSym existed */ { @@ -146,7 +146,7 @@ PHB_DYNS HB_EXPORT hb_dynsymNew( PHB_SYMB pSymbol ) /* creates a new dynamic pDynSym->ulTime = 0; /* profiler support */ pDynSym->ulRecurse = 0; - if( pSymbol->cScope & HB_FS_PUBLIC ) /* only for HB_FS_PUBLIC */ + if( pSymbol->scope.value & HB_FS_PUBLIC ) /* only for HB_FS_PUBLIC */ { pDynSym->pFunPtr = pSymbol->value.pFunPtr; /* place the pointer function at DynSym */ } @@ -345,7 +345,7 @@ void hb_dynsymRelease( void ) for( uiPos = 0; uiPos < s_uiDynSymbols; uiPos++ ) { /* it is a allocated symbol ? */ - if( ( s_pDynItems + uiPos )->pDynSym->pSymbol->cScope == SYM_ALLOCATED ) + if( ( s_pDynItems + uiPos )->pDynSym->pSymbol->scope.value == SYM_ALLOCATED ) { hb_xfree( ( s_pDynItems + uiPos )->pDynSym->pSymbol->szName ); hb_xfree( ( s_pDynItems + uiPos )->pDynSym->pSymbol ); diff --git a/harbour/source/vm/hvm.c b/harbour/source/vm/hvm.c index 66ffdaf4b1..04539170a0 100644 --- a/harbour/source/vm/hvm.c +++ b/harbour/source/vm/hvm.c @@ -227,10 +227,10 @@ ULONG hb_ulOpcodesTime[ HB_P_LAST_PCODE ]; /* array to profile opcodes consumed /* virtual machine state */ -HB_SYMB hb_symEval = { "__EVAL", HB_FS_PUBLIC, {hb_vmDoBlock}, NULL }; /* symbol to evaluate codeblocks */ -HB_SYMB hb_symEnumIndex = { "__ENUMINDEX", HB_FS_PUBLIC, {NULL}, NULL }; -HB_SYMB hb_symEnumBase = { "__ENUMBASE", HB_FS_PUBLIC, {NULL}, NULL }; -HB_SYMB hb_symEnumValue = { "__ENUMVALUE", HB_FS_PUBLIC, {NULL}, NULL }; +HB_SYMB hb_symEval = { "__EVAL", {HB_FS_PUBLIC}, {hb_vmDoBlock}, NULL }; /* symbol to evaluate codeblocks */ +HB_SYMB hb_symEnumIndex = { "__ENUMINDEX", {HB_FS_PUBLIC}, {NULL}, NULL }; +HB_SYMB hb_symEnumBase = { "__ENUMBASE", {HB_FS_PUBLIC}, {NULL}, NULL }; +HB_SYMB hb_symEnumValue = { "__ENUMVALUE", {HB_FS_PUBLIC}, {NULL}, NULL }; static HB_ITEM s_aStatics; /* Harbour array to hold all application statics variables */ static USHORT s_uiStatics; /* Number of statics added after processing hb_vmStatics() */ @@ -3209,7 +3209,7 @@ static void hb_vmEnumPrev( void ) { for( i=lVars; i >= 0; i-- ) { - pRef = hb_itemUnRefRefer( hb_stackItemFromTop( -(i*2) - 4 ) ); + pRef = hb_itemUnRefRefer( hb_stackItemFromTop( -(i<<1) - 4 ) ); if( HB_IS_ARRAY(pRef->item.asRefer.BasePtr.itemPtr) ) { pRef->item.asRefer.value--; @@ -3277,7 +3277,7 @@ static LONG hb_vmEnumEnd( void ) static LONG hb_vmSwitch( const BYTE * pCode, LONG offset, USHORT casesCnt ) { HB_ITEM_PTR pSwitch = hb_stackItemFromTop( -1 ); - + if( !(HB_IS_NUMINT(pSwitch) || HB_IS_STRING(pSwitch)) ) { HB_ITEM_PTR pResult = hb_errRT_BASE_Subst( EG_ARG, 3104, NULL, "SWITCH", 1, pSwitch ); @@ -3292,7 +3292,7 @@ static LONG hb_vmSwitch( const BYTE * pCode, LONG offset, USHORT casesCnt ) else return offset; } - + while( casesCnt-- ) { switch( pCode[ offset ] ) @@ -5588,7 +5588,7 @@ void HB_EXPORT hb_vmProcessSymbols( PHB_SYMB pModuleSymbols, USHORT uiModuleSymb { HB_SYMBOLSCOPE hSymScope; - hSymScope = ( pModuleSymbols + ui )->cScope; + hSymScope = ( pModuleSymbols + ui )->scope.value; pNewSymbols->hScope |= hSymScope; if( ( ! s_pSymStart ) && ( hSymScope & HB_FS_FIRST && ! ( hSymScope & HB_FS_INITEXIT ) ) ) s_pSymStart = pModuleSymbols + ui; /* first public defined symbol to start execution */ @@ -5631,7 +5631,7 @@ static void hb_vmDoInitStatics( void ) for( ui = 0; ui < pLastSymbols->uiModuleSymbols; ui++ ) { - HB_SYMBOLSCOPE scope = ( pLastSymbols->pModuleSymbols + ui )->cScope & ( HB_FS_EXIT | HB_FS_INIT ); + HB_SYMBOLSCOPE scope = ( pLastSymbols->pModuleSymbols + ui )->scope.value & ( HB_FS_EXIT | HB_FS_INIT ); if( scope == ( HB_FS_INIT | HB_FS_EXIT ) ) { @@ -5661,7 +5661,7 @@ static void hb_vmDoExitFunctions( void ) for( ui = 0; ui < pLastSymbols->uiModuleSymbols; ui++ ) { - HB_SYMBOLSCOPE scope = ( pLastSymbols->pModuleSymbols + ui )->cScope & ( HB_FS_EXIT | HB_FS_INIT ); + HB_SYMBOLSCOPE scope = ( pLastSymbols->pModuleSymbols + ui )->scope.value & ( HB_FS_EXIT | HB_FS_INIT ); if( scope == HB_FS_EXIT ) { @@ -5695,7 +5695,7 @@ static void hb_vmDoInitFunctions( void ) for( ui = 0; ui < pLastSymbols->uiModuleSymbols; ui++ ) { - HB_SYMBOLSCOPE scope = ( pLastSymbols->pModuleSymbols + ui )->cScope & ( HB_FS_EXIT | HB_FS_INIT ); + HB_SYMBOLSCOPE scope = ( pLastSymbols->pModuleSymbols + ui )->scope.value & ( HB_FS_EXIT | HB_FS_INIT ); if( scope == HB_FS_INIT ) { @@ -5978,7 +5978,7 @@ void HB_EXPORT hb_vmProcessDllSymbols( PHB_SYMB pModuleSymbols, USHORT uiModuleS { HB_SYMBOLSCOPE hSymScope; - hSymScope = ( pModuleSymbols + ui )->cScope; + hSymScope = ( pModuleSymbols + ui )->scope.value; pNewSymbols->hScope |= hSymScope; if( ( hSymScope == HB_FS_PUBLIC ) || ( hSymScope & ( HB_FS_MESSAGE | HB_FS_MEMVAR | HB_FS_FIRST ) ) ) diff --git a/harbour/source/vm/initsymb.c b/harbour/source/vm/initsymb.c index 451436265b..29d6c1ad40 100644 --- a/harbour/source/vm/initsymb.c +++ b/harbour/source/vm/initsymb.c @@ -119,69 +119,69 @@ HB_FUNC_EXTERN( WORD ); HB_FUNC_EXTERN( YEAR ); static HB_SYMB symbols[] = { - { "AADD" , HB_FS_PUBLIC, {HB_FUNCNAME( AADD )} , NULL }, - { "ABS" , HB_FS_PUBLIC, {HB_FUNCNAME( ABS )} , NULL }, - { "ASC" , HB_FS_PUBLIC, {HB_FUNCNAME( ASC )} , NULL }, - { "AT" , HB_FS_PUBLIC, {HB_FUNCNAME( AT )} , NULL }, - { "BOF" , HB_FS_PUBLIC, {HB_FUNCNAME( BOF )} , NULL }, - { "BREAK" , HB_FS_PUBLIC, {HB_FUNCNAME( BREAK )} , NULL }, - { "CDOW" , HB_FS_PUBLIC, {HB_FUNCNAME( CDOW )} , NULL }, - { "CHR" , HB_FS_PUBLIC, {HB_FUNCNAME( CHR )} , NULL }, - { "CMONTH" , HB_FS_PUBLIC, {HB_FUNCNAME( CMONTH )} , NULL }, - { "COL" , HB_FS_PUBLIC, {HB_FUNCNAME( COL )} , NULL }, - { "CTOD" , HB_FS_PUBLIC, {HB_FUNCNAME( CTOD )} , NULL }, - { "DATE" , HB_FS_PUBLIC, {HB_FUNCNAME( DATE )} , NULL }, - { "DAY" , HB_FS_PUBLIC, {HB_FUNCNAME( DAY )} , NULL }, - { "DELETED" , HB_FS_PUBLIC, {HB_FUNCNAME( DELETED )} , NULL }, - { "DEVPOS" , HB_FS_PUBLIC, {HB_FUNCNAME( DEVPOS )} , NULL }, - { "DOW" , HB_FS_PUBLIC, {HB_FUNCNAME( DOW )} , NULL }, - { "DTOC" , HB_FS_PUBLIC, {HB_FUNCNAME( DTOC )} , NULL }, - { "DTOS" , HB_FS_PUBLIC, {HB_FUNCNAME( DTOS )} , NULL }, - { "EMPTY" , HB_FS_PUBLIC, {HB_FUNCNAME( EMPTY )} , NULL }, - { "EOF" , HB_FS_PUBLIC, {HB_FUNCNAME( EOF )} , NULL }, - { "EXP" , HB_FS_PUBLIC, {HB_FUNCNAME( EXP )} , NULL }, - { "FCOUNT" , HB_FS_PUBLIC, {HB_FUNCNAME( FCOUNT )} , NULL }, - { "FIELDNAME" , HB_FS_PUBLIC, {HB_FUNCNAME( FIELDNAME )} , NULL }, - { "FLOCK" , HB_FS_PUBLIC, {HB_FUNCNAME( FLOCK )} , NULL }, - { "FOUND" , HB_FS_PUBLIC, {HB_FUNCNAME( FOUND )} , NULL }, - { "INKEY" , HB_FS_PUBLIC, {HB_FUNCNAME( INKEY )} , NULL }, - { "INT" , HB_FS_PUBLIC, {HB_FUNCNAME( INT )} , NULL }, - { "LASTREC" , HB_FS_PUBLIC, {HB_FUNCNAME( LASTREC )} , NULL }, - { "LEFT" , HB_FS_PUBLIC, {HB_FUNCNAME( LEFT )} , NULL }, - { "LEN" , HB_FS_PUBLIC, {HB_FUNCNAME( LEN )} , NULL }, - { "LOCK" , HB_FS_PUBLIC, {HB_FUNCNAME( LOCK )} , NULL }, - { "LOG" , HB_FS_PUBLIC, {HB_FUNCNAME( LOG )} , NULL }, - { "LOWER" , HB_FS_PUBLIC, {HB_FUNCNAME( LOWER )} , NULL }, - { "LTRIM" , HB_FS_PUBLIC, {HB_FUNCNAME( LTRIM )} , NULL }, - { "MAX" , HB_FS_PUBLIC, {HB_FUNCNAME( MAX )} , NULL }, - { "MIN" , HB_FS_PUBLIC, {HB_FUNCNAME( MIN )} , NULL }, - { "MONTH" , HB_FS_PUBLIC, {HB_FUNCNAME( MONTH )} , NULL }, - { "PCOL" , HB_FS_PUBLIC, {HB_FUNCNAME( PCOL )} , NULL }, - { "PCOUNT" , HB_FS_PUBLIC, {HB_FUNCNAME( PCOUNT )} , NULL }, - { "PROW" , HB_FS_PUBLIC, {HB_FUNCNAME( PROW )} , NULL }, - { "RECCOUNT" , HB_FS_PUBLIC, {HB_FUNCNAME( RECCOUNT )} , NULL }, - { "RECNO" , HB_FS_PUBLIC, {HB_FUNCNAME( RECNO )} , NULL }, - { "REPLICATE" , HB_FS_PUBLIC, {HB_FUNCNAME( REPLICATE )} , NULL }, - { "RLOCK" , HB_FS_PUBLIC, {HB_FUNCNAME( RLOCK )} , NULL }, - { "ROUND" , HB_FS_PUBLIC, {HB_FUNCNAME( ROUND )} , NULL }, - { "ROW" , HB_FS_PUBLIC, {HB_FUNCNAME( ROW )} , NULL }, - { "RTRIM" , HB_FS_PUBLIC, {HB_FUNCNAME( RTRIM )} , NULL }, - { "SECONDS" , HB_FS_PUBLIC, {HB_FUNCNAME( SECONDS )} , NULL }, - { "SELECT" , HB_FS_PUBLIC, {HB_FUNCNAME( SELECT )} , NULL }, - { "SETPOS" , HB_FS_PUBLIC, {HB_FUNCNAME( SETPOS )} , NULL }, - { "SETPOSBS" , HB_FS_PUBLIC, {HB_FUNCNAME( SETPOSBS )} , NULL }, - { "SPACE" , HB_FS_PUBLIC, {HB_FUNCNAME( SPACE )} , NULL }, - { "SQRT" , HB_FS_PUBLIC, {HB_FUNCNAME( SQRT )} , NULL }, - { "STR" , HB_FS_PUBLIC, {HB_FUNCNAME( STR )} , NULL }, - { "SUBSTR" , HB_FS_PUBLIC, {HB_FUNCNAME( SUBSTR )} , NULL }, - { "TIME" , HB_FS_PUBLIC, {HB_FUNCNAME( TIME )} , NULL }, - { "TRANSFORM" , HB_FS_PUBLIC, {HB_FUNCNAME( TRANSFORM )} , NULL }, - { "TRIM" , HB_FS_PUBLIC, {HB_FUNCNAME( TRIM )} , NULL }, - { "TYPE" , HB_FS_PUBLIC, {HB_FUNCNAME( TYPE )} , NULL }, - { "UPPER" , HB_FS_PUBLIC, {HB_FUNCNAME( UPPER )} , NULL }, - { "VAL" , HB_FS_PUBLIC, {HB_FUNCNAME( VAL )} , NULL }, - { "WORD" , HB_FS_PUBLIC, {HB_FUNCNAME( WORD )} , NULL }, - { "YEAR" , HB_FS_PUBLIC, {HB_FUNCNAME( YEAR )} , NULL } + { "AADD" , { HB_FS_PUBLIC }, {HB_FUNCNAME( AADD )} , NULL }, + { "ABS" , { HB_FS_PUBLIC }, {HB_FUNCNAME( ABS )} , NULL }, + { "ASC" , { HB_FS_PUBLIC }, {HB_FUNCNAME( ASC )} , NULL }, + { "AT" , { HB_FS_PUBLIC }, {HB_FUNCNAME( AT )} , NULL }, + { "BOF" , { HB_FS_PUBLIC }, {HB_FUNCNAME( BOF )} , NULL }, + { "BREAK" , { HB_FS_PUBLIC }, {HB_FUNCNAME( BREAK )} , NULL }, + { "CDOW" , { HB_FS_PUBLIC }, {HB_FUNCNAME( CDOW )} , NULL }, + { "CHR" , { HB_FS_PUBLIC }, {HB_FUNCNAME( CHR )} , NULL }, + { "CMONTH" , { HB_FS_PUBLIC }, {HB_FUNCNAME( CMONTH )} , NULL }, + { "COL" , { HB_FS_PUBLIC }, {HB_FUNCNAME( COL )} , NULL }, + { "CTOD" , { HB_FS_PUBLIC }, {HB_FUNCNAME( CTOD )} , NULL }, + { "DATE" , { HB_FS_PUBLIC }, {HB_FUNCNAME( DATE )} , NULL }, + { "DAY" , { HB_FS_PUBLIC }, {HB_FUNCNAME( DAY )} , NULL }, + { "DELETED" , { HB_FS_PUBLIC }, {HB_FUNCNAME( DELETED )} , NULL }, + { "DEVPOS" , { HB_FS_PUBLIC }, {HB_FUNCNAME( DEVPOS )} , NULL }, + { "DOW" , { HB_FS_PUBLIC }, {HB_FUNCNAME( DOW )} , NULL }, + { "DTOC" , { HB_FS_PUBLIC }, {HB_FUNCNAME( DTOC )} , NULL }, + { "DTOS" , { HB_FS_PUBLIC }, {HB_FUNCNAME( DTOS )} , NULL }, + { "EMPTY" , { HB_FS_PUBLIC }, {HB_FUNCNAME( EMPTY )} , NULL }, + { "EOF" , { HB_FS_PUBLIC }, {HB_FUNCNAME( EOF )} , NULL }, + { "EXP" , { HB_FS_PUBLIC }, {HB_FUNCNAME( EXP )} , NULL }, + { "FCOUNT" , { HB_FS_PUBLIC }, {HB_FUNCNAME( FCOUNT )} , NULL }, + { "FIELDNAME" , { HB_FS_PUBLIC }, {HB_FUNCNAME( FIELDNAME )} , NULL }, + { "FLOCK" , { HB_FS_PUBLIC }, {HB_FUNCNAME( FLOCK )} , NULL }, + { "FOUND" , { HB_FS_PUBLIC }, {HB_FUNCNAME( FOUND )} , NULL }, + { "INKEY" , { HB_FS_PUBLIC }, {HB_FUNCNAME( INKEY )} , NULL }, + { "INT" , { HB_FS_PUBLIC }, {HB_FUNCNAME( INT )} , NULL }, + { "LASTREC" , { HB_FS_PUBLIC }, {HB_FUNCNAME( LASTREC )} , NULL }, + { "LEFT" , { HB_FS_PUBLIC }, {HB_FUNCNAME( LEFT )} , NULL }, + { "LEN" , { HB_FS_PUBLIC }, {HB_FUNCNAME( LEN )} , NULL }, + { "LOCK" , { HB_FS_PUBLIC }, {HB_FUNCNAME( LOCK )} , NULL }, + { "LOG" , { HB_FS_PUBLIC }, {HB_FUNCNAME( LOG )} , NULL }, + { "LOWER" , { HB_FS_PUBLIC }, {HB_FUNCNAME( LOWER )} , NULL }, + { "LTRIM" , { HB_FS_PUBLIC }, {HB_FUNCNAME( LTRIM )} , NULL }, + { "MAX" , { HB_FS_PUBLIC }, {HB_FUNCNAME( MAX )} , NULL }, + { "MIN" , { HB_FS_PUBLIC }, {HB_FUNCNAME( MIN )} , NULL }, + { "MONTH" , { HB_FS_PUBLIC }, {HB_FUNCNAME( MONTH )} , NULL }, + { "PCOL" , { HB_FS_PUBLIC }, {HB_FUNCNAME( PCOL )} , NULL }, + { "PCOUNT" , { HB_FS_PUBLIC }, {HB_FUNCNAME( PCOUNT )} , NULL }, + { "PROW" , { HB_FS_PUBLIC }, {HB_FUNCNAME( PROW )} , NULL }, + { "RECCOUNT" , { HB_FS_PUBLIC }, {HB_FUNCNAME( RECCOUNT )} , NULL }, + { "RECNO" , { HB_FS_PUBLIC }, {HB_FUNCNAME( RECNO )} , NULL }, + { "REPLICATE" , { HB_FS_PUBLIC }, {HB_FUNCNAME( REPLICATE )} , NULL }, + { "RLOCK" , { HB_FS_PUBLIC }, {HB_FUNCNAME( RLOCK )} , NULL }, + { "ROUND" , { HB_FS_PUBLIC }, {HB_FUNCNAME( ROUND )} , NULL }, + { "ROW" , { HB_FS_PUBLIC }, {HB_FUNCNAME( ROW )} , NULL }, + { "RTRIM" , { HB_FS_PUBLIC }, {HB_FUNCNAME( RTRIM )} , NULL }, + { "SECONDS" , { HB_FS_PUBLIC }, {HB_FUNCNAME( SECONDS )} , NULL }, + { "SELECT" , { HB_FS_PUBLIC }, {HB_FUNCNAME( SELECT )} , NULL }, + { "SETPOS" , { HB_FS_PUBLIC }, {HB_FUNCNAME( SETPOS )} , NULL }, + { "SETPOSBS" , { HB_FS_PUBLIC }, {HB_FUNCNAME( SETPOSBS )} , NULL }, + { "SPACE" , { HB_FS_PUBLIC }, {HB_FUNCNAME( SPACE )} , NULL }, + { "SQRT" , { HB_FS_PUBLIC }, {HB_FUNCNAME( SQRT )} , NULL }, + { "STR" , { HB_FS_PUBLIC }, {HB_FUNCNAME( STR )} , NULL }, + { "SUBSTR" , { HB_FS_PUBLIC }, {HB_FUNCNAME( SUBSTR )} , NULL }, + { "TIME" , { HB_FS_PUBLIC }, {HB_FUNCNAME( TIME )} , NULL }, + { "TRANSFORM" , { HB_FS_PUBLIC }, {HB_FUNCNAME( TRANSFORM )} , NULL }, + { "TRIM" , { HB_FS_PUBLIC }, {HB_FUNCNAME( TRIM )} , NULL }, + { "TYPE" , { HB_FS_PUBLIC }, {HB_FUNCNAME( TYPE )} , NULL }, + { "UPPER" , { HB_FS_PUBLIC }, {HB_FUNCNAME( UPPER )} , NULL }, + { "VAL" , { HB_FS_PUBLIC }, {HB_FUNCNAME( VAL )} , NULL }, + { "WORD" , { HB_FS_PUBLIC }, {HB_FUNCNAME( WORD )} , NULL }, + { "YEAR" , { HB_FS_PUBLIC }, {HB_FUNCNAME( YEAR )} , NULL } }; /* NOTE: The system symbol table with runtime functions HAVE TO be called diff --git a/harbour/source/vm/runner.c b/harbour/source/vm/runner.c index 80ebeb33bd..12c78cd7f6 100644 --- a/harbour/source/vm/runner.c +++ b/harbour/source/vm/runner.c @@ -334,15 +334,15 @@ PHRB_BODY hb_hrbLoad( char* szHrb ) for( ul = 0; ul < pHrbBody->ulSymbols; ul++ ) /* Read symbols in .HRB */ { - pSymRead[ ul ].szName = hb_hrbFileReadId( file, szFileName ); - pSymRead[ ul ].cScope = hb_hrbFileReadByte( file, szFileName ); + pSymRead[ ul ].szName = hb_hrbFileReadId( file, szFileName ); + pSymRead[ ul ].scope.value = hb_hrbFileReadByte( file, szFileName ); pSymRead[ ul ].value.pFunPtr = ( PHB_FUNC ) ( ULONG ) hb_hrbFileReadByte( file, szFileName ); pSymRead[ ul ].pDynSym = NULL; if ( pHrbBody->ulSymStart == -1 && - pSymRead[ ul ].cScope & HB_FS_FIRST && - ! ( pSymRead[ ul ].cScope & HB_FS_INITEXIT ) ) - pHrbBody->ulSymStart = ul; + pSymRead[ ul ].scope.value & HB_FS_FIRST && + ! ( pSymRead[ ul ].scope.value & HB_FS_INITEXIT ) ) + pHrbBody->ulSymStart = ul; } pHrbBody->ulFuncs = hb_hrbFileReadLong( file, szFileName ); /* Read number of functions */ @@ -374,7 +374,7 @@ PHRB_BODY hb_hrbLoad( char* szHrb ) { /* Exists and NOT static ? */ /* if( hb_dynsymFind( pSymRead[ ul ].szName ) && - !( pSymRead[ ul ].cScope & HB_FS_STATIC ) ) + !( pSymRead[ ul ].scope.value & HB_FS_STATIC ) ) { hb_errRT_BASE( EG_ARG, 9999, "Duplicate symbol", pSymRead[ ul ].szName ); bError = TRUE; @@ -423,7 +423,7 @@ void hb_hrbDo( PHRB_BODY pHrbBody, int argc, char * argv[] ) */ for( ul = 0; ul < pHrbBody->ulSymbols; ul++ ) /* Check INIT functions */ { - if( ( pHrbBody->pSymRead[ ul ].cScope & HB_FS_INITEXIT ) == HB_FS_INITEXIT ) + if( ( pHrbBody->pSymRead[ ul ].scope.value & HB_FS_INITEXIT ) == HB_FS_INITEXIT ) { /* call (_INITSTATICS) function. This function assigns * literal values to static variables only. There is no need @@ -435,7 +435,7 @@ void hb_hrbDo( PHRB_BODY pHrbBody, int argc, char * argv[] ) } for( ul = 0; ul < pHrbBody->ulSymbols; ul++ ) /* Check INIT functions */ { - if( ( pHrbBody->pSymRead[ ul ].cScope & HB_FS_INITEXIT ) == HB_FS_INIT ) + if( ( pHrbBody->pSymRead[ ul ].scope.value & HB_FS_INITEXIT ) == HB_FS_INIT ) { hb_vmPushSymbol( pHrbBody->pSymRead + ul ); hb_vmPushNil(); @@ -461,12 +461,12 @@ void hb_hrbDo( PHRB_BODY pHrbBody, int argc, char * argv[] ) for( ul = 0; ul < pHrbBody->ulSymbols; ul++ ) /* Check EXIT functions */ { - if( ( pHrbBody->pSymRead[ ul ].cScope & HB_FS_INITEXIT ) == HB_FS_EXIT ) + if( ( pHrbBody->pSymRead[ ul ].scope.value & HB_FS_INITEXIT ) == HB_FS_EXIT ) { hb_vmPushSymbol( pHrbBody->pSymRead + ul ); hb_vmPushNil(); hb_vmDo( 0 ); /* Run exit function */ - pHrbBody->pSymRead[ ul ].cScope = pHrbBody->pSymRead[ ul ].cScope & ( ~HB_FS_EXIT ); + pHrbBody->pSymRead[ ul ].scope.value = pHrbBody->pSymRead[ ul ].scope.value & ( ~HB_FS_EXIT ); /* Exit function cannot be handled by main in hvm.c */ }