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.
This commit is contained in:
Przemyslaw Czerpak
2005-11-16 12:27:55 +00:00
parent 5d6b9d803e
commit 035d484e54
17 changed files with 168 additions and 136 deletions

View File

@@ -8,6 +8,41 @@
2002-12-01 13:30 UTC+0100 Foo Bar <foo.bar@foobar.org>
*/
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

View File

@@ -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

View File

@@ -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_ )

View File

@@ -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 */
}

View File

@@ -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

View File

@@ -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 )

View File

@@ -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_ )

View File

@@ -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

View File

@@ -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_ )

View File

@@ -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_ )

View File

@@ -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_ )

View File

@@ -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_ )

View File

@@ -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_ )

View File

@@ -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 );

View File

@@ -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 ) ) )

View File

@@ -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

View File

@@ -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 */
}