2004-04-24 15:30 UTC+0100 Ryszard Glab <rglab@imid.med.pl>

* include/hbapi.h
      * changed ULONG hb_objHasMsg into BOOL hb_objHasMsg

   * include/hbvmpub.h
      * added
         union {
          PHB_FUNC pFunPtr;
          int iStaticsBase;
         } value
       to HB_SYMB structure to remove pointer/int conversion

   * source/compiler/genc.c
   * source/compiler/gencli.c
   * source/rdd/dbf1.c
   * source/rdd/delim1.c
   * source/rdd/sdf1.c
   * source/rdd/dbfcdx/dbfcdx1.c
   * source/rdd/dbfdbt/dbfdbt1.c
   * source/rdd/dbffpt/dbffpt1.c
   * source/rdd/dbfntx/dbfntx1.c
   * source/rtl/symbol.prg
   * source/vm/classes.c
   * source/vm/dynsym.c
   * source/vm/hvm.c
   * source/vm/initsymb.c
   * source/vm/macro.c
   * source/vm/runner.c
      * changed to use new HB_SYMB structure
      * removed all pointer/long castings (except runner.c)
This commit is contained in:
Ryszard Glab
2004-04-24 13:33:06 +00:00
parent 28d46311d7
commit 58e748bc75
19 changed files with 164 additions and 128 deletions

View File

@@ -8,6 +8,39 @@
2002-12-01 23:12 UTC+0100 Foo Bar <foo.bar@foobar.org>
*/
2004-04-24 15:30 UTC+0100 Ryszard Glab <rglab@imid.med.pl>
* include/hbapi.h
* changed ULONG hb_objHasMsg into BOOL hb_objHasMsg
* include/hbvmpub.h
* added
union {
PHB_FUNC pFunPtr;
int iStaticsBase;
} value
to HB_SYMB structure to remove pointer/int conversion
* source/compiler/genc.c
* source/compiler/gencli.c
* source/rdd/dbf1.c
* source/rdd/delim1.c
* source/rdd/sdf1.c
* source/rdd/dbfcdx/dbfcdx1.c
* source/rdd/dbfdbt/dbfdbt1.c
* source/rdd/dbffpt/dbffpt1.c
* source/rdd/dbfntx/dbfntx1.c
* source/rtl/symbol.prg
* source/vm/classes.c
* source/vm/dynsym.c
* source/vm/hvm.c
* source/vm/initsymb.c
* source/vm/macro.c
* source/vm/runner.c
* changed to use new HB_SYMB structure
* removed all pointer/long castings (except runner.c)
2004-04-22 18:00 UTC-0500 David G. Holm <dholm@jsd-llc.com>
* source/vm/itemapi.c
! #if check for for RSXNT and EMX must be ahead of GNUC test

View File

@@ -453,7 +453,7 @@ extern BOOL hb_clsIsParent( USHORT uiClass, char * szParentName ); /* is a c
extern char * hb_objGetClsName( PHB_ITEM pObject ); /* retrieves an object class name */
extern char * hb_objGetRealClsName( PHB_ITEM pObject, char * szString ); /* retrieves an object class name for a specific message */
extern PHB_FUNC hb_objGetMethod( PHB_ITEM pObject, PHB_SYMB pSymMsg ); /* returns the method pointer of a object class */
extern ULONG hb_objHasMsg( PHB_ITEM pObject, char * szString ); /* returns TRUE/FALSE whether szString is an existing message for object */
extern BOOL hb_objHasMsg( PHB_ITEM pObject, char * szString ); /* returns TRUE/FALSE whether szString is an existing message for object */
extern void hb_objSendMsg( PHB_ITEM pObj, char *sMsg, ULONG ulArg, ... );
/* dynamic symbol table management */

View File

@@ -70,7 +70,10 @@ typedef struct
{
char * szName; /* the name of the symbol */
HB_SYMBOLSCOPE cScope; /* the scope of the symbol */
PHB_FUNC pFunPtr; /* function address for function symbol table entries */
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

View File

@@ -151,7 +151,7 @@ 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
{
@@ -186,11 +186,11 @@ void hb_compGenCCode( PHB_FNAME pFileName ) /* generates the C language ou
/* specify the function address if it is a defined function or an
external called function */
if( hb_compFunctionFind( pSym->szName ) ) /* is it a function defined in this module */
fprintf( yyc, ", HB_FUNCNAME( %s ), NULL }", pSym->szName );
fprintf( yyc, ", {HB_FUNCNAME( %s )}, NULL }", pSym->szName );
else if( 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

@@ -165,7 +165,7 @@ void hb_compGenILCode( PHB_FNAME pFileName ) /* generates the IL output */
// * 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
// {
@@ -200,11 +200,11 @@ void hb_compGenILCode( PHB_FNAME pFileName ) /* generates the IL output */
// /* specify the function address if it is a defined function or an
// external called function */
// if( hb_compFunctionFind( pSym->szName ) ) /* is it a function defined in this module */
// fprintf( yyc, ", HB_FUNCNAME( %s ), NULL }", pSym->szName );
// fprintf( yyc, ", {HB_FUNCNAME( %s )}, NULL }", pSym->szName );
// else if( 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

@@ -77,8 +77,8 @@ HB_FUNC( DBF_GETFUNCTABLE );
HB_INIT_SYMBOLS_BEGIN( dbf1__InitSymbols )
{ "_DBFC", HB_FS_PUBLIC, HB_FUNCNAME( _DBFC ), NULL },
{ "DBF_GETFUNCTABLE", HB_FS_PUBLIC, HB_FUNCNAME( DBF_GETFUNCTABLE ), NULL }
{ "_DBFC", HB_FS_PUBLIC, {HB_FUNCNAME( _DBFC )}, NULL },
{ "DBF_GETFUNCTABLE", HB_FS_PUBLIC, {HB_FUNCNAME( DBF_GETFUNCTABLE )}, NULL }
HB_INIT_SYMBOLS_END( dbf1__InitSymbols )
#if defined(HB_STATIC_STARTUP)

View File

@@ -307,8 +307,8 @@ HB_FUNC( DBFCDX_GETFUNCTABLE )
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 )
#if defined(_MSC_VER)

View File

@@ -245,8 +245,8 @@ HB_FUNC( DBFDBT_GETFUNCTABLE )
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 )
#if defined(HB_STATIC_STARTUP)

View File

@@ -247,8 +247,8 @@ HB_FUNC( DBFFPT_GETFUNCTABLE )
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 )
#if defined(HB_STATIC_STARTUP)

View File

@@ -143,8 +143,8 @@ HB_FUNC( DBFNTX_GETFUNCTABLE );
#endif
HB_INIT_SYMBOLS_BEGIN( dbfntx1__InitSymbols )
{ "_DBFNTX", HB_FS_PUBLIC, HB_FUNCNAME( _DBFNTX ), 0 },
{ "DBFNTX_GETFUNCTABLE", HB_FS_PUBLIC, HB_FUNCNAME( DBFNTX_GETFUNCTABLE) , 0 }
{ "_DBFNTX", HB_FS_PUBLIC, {HB_FUNCNAME( _DBFNTX )}, 0 },
{ "DBFNTX_GETFUNCTABLE", HB_FS_PUBLIC, {HB_FUNCNAME( DBFNTX_GETFUNCTABLE)} , 0 }
HB_INIT_SYMBOLS_END( dbfntx1__InitSymbols )
#if defined(_MSC_VER)
#if _MSC_VER >= 1010

View File

@@ -66,8 +66,8 @@ HB_FUNC( DELIM_GETFUNCTABLE );
#define HB_PRG_PCODE_VER HB_PCODE_VER
HB_INIT_SYMBOLS_BEGIN( delim1__InitSymbols )
{ "_DELIMC", HB_FS_PUBLIC, HB_FUNCNAME( _DELIMC ), NULL },
{ "DELIM_GETFUNCTABLE", HB_FS_PUBLIC, HB_FUNCNAME( DELIM_GETFUNCTABLE ), NULL }
{ "_DELIMC", HB_FS_PUBLIC, {HB_FUNCNAME( _DELIMC )}, NULL },
{ "DELIM_GETFUNCTABLE", HB_FS_PUBLIC, {HB_FUNCNAME( DELIM_GETFUNCTABLE )}, NULL }
HB_INIT_SYMBOLS_END( delim1__InitSymbols )
#if defined(HB_STATIC_STARTUP)

View File

@@ -66,8 +66,8 @@ HB_FUNC( SDF_GETFUNCTABLE );
#define HB_PRG_PCODE_VER HB_PCODE_VER
HB_INIT_SYMBOLS_BEGIN( sdf1__InitSymbols )
{ "_SDFC", HB_FS_PUBLIC, HB_FUNCNAME( _SDFC ), NULL },
{ "SDF_GETFUNCTABLE", HB_FS_PUBLIC, HB_FUNCNAME( SDF_GETFUNCTABLE ), NULL }
{ "_SDFC", HB_FS_PUBLIC, {HB_FUNCNAME( _SDFC )}, NULL },
{ "SDF_GETFUNCTABLE", HB_FS_PUBLIC, {HB_FUNCNAME( SDF_GETFUNCTABLE )}, NULL }
HB_INIT_SYMBOLS_END( sdf1__InitSymbols )
#if defined(HB_STATIC_STARTUP)

View File

@@ -116,12 +116,12 @@ return .f.
HB_FUNC( GETSYMBOLPOINTER )
{
hb_retnl( ( long ) hb_dynsymGet( hb_parc( 1 ) ) );
hb_retptr( hb_dynsymGet( hb_parc( 1 ) ) );
}
HB_FUNC( GETSYMBOLNAME )
{
PHB_DYNS pDynSym = ( PHB_DYNS ) hb_parnl( 1 );
PHB_DYNS pDynSym = ( PHB_DYNS ) hb_parptr( 1 );
hb_retc( ( pDynSym != NULL ? pDynSym->pSymbol->szName : "" ) );
}
@@ -146,9 +146,9 @@ HB_FUNC( SYMBOL_EXEC )
/* we invoke the message with no parameters */
hb_vmFunction( 0 );
pSym = ( PHB_DYNS ) hb_parnl( -1 ); /* we take the returned DATA value from
pSym = ( PHB_DYNS ) hb_parptr( -1 ); /* we take the returned DATA value from
the HVM hb_stack.Return */
if( pSym != NULL && pSym->pSymbol->pFunPtr )
if( pSym != NULL && pSym->pSymbol->value.pFunPtr )
{
int i;

View File

@@ -216,7 +216,7 @@ static void hb_clsRelease( PCLASS );
PHB_FUNC hb_objGetMethod( PHB_ITEM, PHB_SYMB );
PHB_FUNC hb_objGetMthd( PHB_ITEM pObject, PHB_SYMB pMessage, BOOL lAllowErrFunc );
PMETHOD hb_objGetpMethod( PHB_ITEM, PHB_SYMB );
ULONG hb_objHasMsg( PHB_ITEM pObject, char * szString );
BOOL hb_objHasMsg( PHB_ITEM pObject, char * szString );
void * hb_mthRequested( void );
void hb_mthAddTime( void * pMethod, ULONG ulClockTicks );
@@ -955,13 +955,13 @@ PMETHOD hb_objGetpMethod( PHB_ITEM pObject, PHB_SYMB pMessage )
/*
* <uPtr> = hb_objHasMsg( <pObject>, <szString> )
* <bool> = hb_objHasMsg( <pObject>, <szString> )
*
* Check whether <szString> is an existing message for object.
*
* <uPtr> should be read as a boolean
*/
ULONG hb_objHasMsg( PHB_ITEM pObject, char *szString )
BOOL hb_objHasMsg( PHB_ITEM pObject, char *szString )
{
PHB_DYNS pDynSym = hb_dynsymFindName( szString );
@@ -969,11 +969,11 @@ ULONG hb_objHasMsg( PHB_ITEM pObject, char *szString )
if( pDynSym )
{
return ( ULONG ) hb_objGetMthd( pObject, pDynSym->pSymbol, FALSE );
return hb_objGetMthd( pObject, pDynSym->pSymbol, FALSE ) != NULL;
}
else
{
return 0;
return FALSE;
}
}
@@ -1135,7 +1135,7 @@ HB_FUNC( __CLSADDMSG )
{
case HB_OO_MSG_METHOD:
pNewMeth->pFunction = ( PHB_FUNC ) hb_parnl( 3 );
pNewMeth->pFunction = ( PHB_FUNC ) hb_parptr( 3 );
pNewMeth->uiScope = uiScope;
pNewMeth->uiData = 0;
break;
@@ -1237,7 +1237,7 @@ HB_FUNC( __CLSADDMSG )
case HB_OO_MSG_ONERROR:
pClass->pFunError = ( PHB_FUNC ) hb_parnl( 3 );
pClass->pFunError = ( PHB_FUNC ) hb_parptr( 3 );
break;
default:
@@ -1748,7 +1748,7 @@ HB_FUNC( __CLSMODMSG )
}
else /* Modify METHOD */
{
pClass->pMethods[ uiAt ].pFunction = ( PHB_FUNC ) hb_parnl( 3 );
pClass->pMethods[ uiAt ].pFunction = ( PHB_FUNC ) hb_parptr( 3 );
}
}
}

View File

@@ -87,7 +87,7 @@ PHB_SYMB HB_EXPORT hb_symbolNew( char * szName ) /* Create a new symbol */
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->pFunPtr = NULL;
pSymbol->value.pFunPtr = NULL;
pSymbol->pDynSym = NULL;
return pSymbol;
@@ -105,9 +105,9 @@ PHB_DYNS HB_EXPORT hb_dynsymNew( PHB_SYMB pSymbol ) /* creates a new dynamic
{
if( pSymbol->cScope & HB_FS_PUBLIC ) /* only for HB_FS_PUBLIC */
{
if( ( ! pDynSym->pFunPtr ) && pSymbol->pFunPtr ) /* The DynSym existed */
if( ( ! pDynSym->pFunPtr ) && pSymbol->value.pFunPtr ) /* The DynSym existed */
{
pDynSym->pFunPtr = pSymbol->pFunPtr; /* but had no function ptr assigned */
pDynSym->pFunPtr = pSymbol->value.pFunPtr; /* but had no function ptr assigned */
pDynSym->pSymbol = pSymbol;
pDynSym->ulCalls = 0; /* profiler support */
pDynSym->ulTime = 0; /* profiler support */
@@ -147,8 +147,8 @@ PHB_DYNS HB_EXPORT hb_dynsymNew( PHB_SYMB pSymbol ) /* creates a new dynamic
if( pSymbol->cScope & HB_FS_PUBLIC ) /* only for HB_FS_PUBLIC */
{
if( pDynSym->pFunPtr != pSymbol->pFunPtr ) /* it contains a function pointer */
pDynSym->pFunPtr = pSymbol->pFunPtr; /* place the function at DynSym */
if( pDynSym->pFunPtr != pSymbol->value.pFunPtr ) /* it contains a function pointer */
pDynSym->pFunPtr = pSymbol->value.pFunPtr; /* place the function at DynSym */
}
pSymbol->pDynSym = pDynSym; /* place a pointer to DynSym */

View File

@@ -212,7 +212,7 @@ 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_symEval = { "__EVAL", HB_FS_PUBLIC, {hb_vmDoBlock}, NULL }; /* symbol to evaluate codeblocks */
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() */
@@ -303,7 +303,7 @@ void hb_vmDoInitRdd( void )
for ( i = 0; rddName[i]; i++ )
{
pDynSym = hb_dynsymFind( rddName[i] );
if( pDynSym && pDynSym->pSymbol->pFunPtr )
if( pDynSym && pDynSym->pSymbol->value.pFunPtr )
{
hb_vmPushSymbol( pDynSym->pSymbol );
hb_vmPushNil();
@@ -380,7 +380,7 @@ void HB_EXPORT hb_vmInit( BOOL bStartMainProc )
{
PHB_DYNS pDynSym = hb_dynsymFind( "_APPMAIN" );
if( pDynSym && pDynSym->pSymbol->pFunPtr )
if( pDynSym && pDynSym->pSymbol->value.pFunPtr )
s_pSymStart = pDynSym->pSymbol;
#ifdef HARBOUR_START_PROCEDURE
else
@@ -396,11 +396,11 @@ void HB_EXPORT hb_vmInit( BOOL bStartMainProc )
{
pDynSym = hb_dynsymFind( HARBOUR_START_PROCEDURE );
if( ! ( pDynSym && pDynSym->pSymbol->pFunPtr ) && s_pszLinkedMain )
if( ! ( pDynSym && pDynSym->pSymbol->value.pFunPtr ) && s_pszLinkedMain )
pDynSym = hb_dynsymFind( s_pszLinkedMain );
}
if( pDynSym && pDynSym->pSymbol->pFunPtr )
if( pDynSym && pDynSym->pSymbol->value.pFunPtr )
s_pSymStart = pDynSym->pSymbol;
else
hb_errInternal( HB_EI_VMBADSTARTUP, NULL, HARBOUR_START_PROCEDURE, NULL );
@@ -2275,7 +2275,7 @@ static void hb_vmFuncPtr( void ) /* pushes a function address pointer. Removes
if( HB_IS_SYMBOL( pItem ) )
{
hb_stackPop();
hb_vmPushLong( ( ULONG ) pItem->item.asSymbol.value->pFunPtr );
hb_vmPushPointer( ( void* ) pItem->item.asSymbol.value->value.pFunPtr );
}
else
hb_errInternal( HB_EI_VMNOTSYMBOL, NULL, "hb_vmFuncPtr()", NULL );
@@ -3308,7 +3308,7 @@ void HB_EXPORT hb_vmDo( USHORT uiParams )
PHB_BASEARRAY pSelfBase = NULL;
if( pSym == &( hb_symEval ) && HB_IS_BLOCK( pSelf ) )
pFunc = pSym->pFunPtr; /* __EVAL method = function */
pFunc = pSym->value.pFunPtr; /* __EVAL method = function */
else
{
pFunc = hb_objGetMethod( pSelf, pSym );
@@ -3400,7 +3400,7 @@ void HB_EXPORT hb_vmDo( USHORT uiParams )
}
else /* it is a function */
{
pFunc = pSym->pFunPtr;
pFunc = pSym->value.pFunPtr;
if( pFunc )
{
@@ -3498,7 +3498,7 @@ void HB_EXPORT hb_vmSend( USHORT uiParams )
if( HB_IS_NIL( pSelf ) ) /* are we sending a message ? */
{
pFunc = pSym->pFunPtr;
pFunc = pSym->value.pFunPtr;
if( pFunc )
{
@@ -3557,12 +3557,12 @@ void HB_EXPORT hb_vmSend( USHORT uiParams )
{
if( pSym == &( hb_symEval ) )
{
pFunc = pSym->pFunPtr; /* __EVAL method = function */
pFunc = pSym->value.pFunPtr; /* __EVAL method = function */
}
else if( strncmp( pSym->szName, "EVAL", 4 ) == 0 )
{
pSym = &hb_symEval;
pFunc = pSym->pFunPtr; /* __EVAL method = function */
pFunc = pSym->value.pFunPtr; /* __EVAL method = function */
}
}
else if( HB_IS_OBJECT( pSelf ) ) /* Object passed */
@@ -3849,7 +3849,7 @@ static void hb_vmSFrame( PHB_SYMB pSym ) /* sets the statics frame for a fu
HB_TRACE(HB_TR_DEBUG, ("hb_vmSFrame(%p)", pSym));
/* _INITSTATICS is now the statics frame. Statics() changed it! */
hb_stack.iStatics = ( int ) pSym->pFunPtr; /* pSym is { "$_INITSTATICS", HB_FS_INIT | HB_FS_EXIT, _INITSTATICS } for each PRG */
hb_stack.iStatics = pSym->value.iStaticsBase; /* pSym is { "$_INITSTATICS", HB_FS_INIT | HB_FS_EXIT, _INITSTATICS } for each PRG */
}
static void hb_vmStatics( PHB_SYMB pSym, USHORT uiStatics ) /* initializes the global aStatics array or redimensionates it */
@@ -3858,12 +3858,12 @@ static void hb_vmStatics( PHB_SYMB pSym, USHORT uiStatics ) /* initializes the g
if( HB_IS_NIL( &s_aStatics ) )
{
pSym->pFunPtr = NULL; /* statics frame for this PRG */
pSym->value.iStaticsBase = 0; /* statics frame for this PRG */
hb_arrayNew( &s_aStatics, uiStatics );
}
else
{
pSym->pFunPtr = ( PHB_FUNC ) hb_arrayLen( &s_aStatics );
pSym->value.iStaticsBase = hb_arrayLen( &s_aStatics );
hb_arraySize( &s_aStatics, hb_arrayLen( &s_aStatics ) + uiStatics );
}
@@ -5206,8 +5206,8 @@ void HB_EXPORT hb_vmProcessDllSymbols( PHB_SYMB pModuleSymbols, USHORT uiModuleS
{
PHB_DYNS pDynSym = hb_dynsymFind( ( pModuleSymbols + ui )->szName );
if( pDynSym && pDynSym->pFunPtr && ( pModuleSymbols + ui )->pFunPtr )
( pModuleSymbols + ui )->pFunPtr = pDynSym->pFunPtr;
if( pDynSym && pDynSym->pFunPtr && ( pModuleSymbols + ui )->value.pFunPtr )
( pModuleSymbols + ui )->value.pFunPtr = pDynSym->pFunPtr;
else
hb_dynsymNew( ( pModuleSymbols + ui ) );
}

View File

@@ -118,69 +118,69 @@ extern HB_FUNC( WORD );
extern HB_FUNC( 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

@@ -1225,7 +1225,7 @@ void hb_compGenPushSymbol( char * szSymbolName, BOOL bFunction, BOOL bAlias, HB_
if( bFunction )
{
if( pSym && ((pSym->pSymbol->pFunPtr == NULL) || (pSym->pSymbol->cScope & HB_FS_STATIC)) )
if( pSym && ((pSym->pSymbol->value.pFunPtr == NULL) || (pSym->pSymbol->cScope & HB_FS_STATIC)) )
{
/* static functions are not allowed in macro */
HB_MACRO_DATA->status |= HB_MACRO_UNKN_SYM;

View File

@@ -335,7 +335,7 @@ PHRB_BODY hb_hrbLoad( char* szHrb )
{
pSymRead[ ul ].szName = hb_hrbFileReadId( file, szFileName );
pSymRead[ ul ].cScope = hb_hrbFileReadByte( file, szFileName );
pSymRead[ ul ].pFunPtr = ( PHB_FUNC ) ( ULONG ) hb_hrbFileReadByte( file, szFileName );
pSymRead[ ul ].value.pFunPtr = ( PHB_FUNC ) ( ULONG ) hb_hrbFileReadByte( file, szFileName );
pSymRead[ ul ].pDynSym = NULL;
if ( pHrbBody->ulSymStart == -1 &&
@@ -366,7 +366,7 @@ PHRB_BODY hb_hrbLoad( char* szHrb )
s_ulSymEntry = 0;
for( ul = 0; ul < pHrbBody->ulSymbols; ul++ ) /* Linker */
{
if( ( ( ULONG ) pSymRead[ ul ].pFunPtr ) == SYM_FUNC )
if( ( ( ULONG ) pSymRead[ ul ].value.pFunPtr ) == SYM_FUNC )
{
ulPos = hb_hrbFindSymbol( pSymRead[ ul ].szName, pDynFunc, pHrbBody->ulFuncs );
if( ulPos != SYM_NOT_FOUND )
@@ -380,12 +380,12 @@ PHRB_BODY hb_hrbLoad( char* szHrb )
break;
}
*/
pSymRead[ ul ].pFunPtr = pDynFunc[ ulPos ].pAsmCall->pFunPtr;
pSymRead[ ul ].value.pFunPtr = pDynFunc[ ulPos ].pAsmCall->pFunPtr;
}
else
pSymRead[ ul ].pFunPtr = ( PHB_FUNC ) SYM_EXTERN;
pSymRead[ ul ].value.pFunPtr = ( PHB_FUNC ) SYM_EXTERN;
}
if( ( ( ULONG ) pSymRead[ ul ].pFunPtr ) == SYM_EXTERN )
if( ( ( ULONG ) pSymRead[ ul ].value.pFunPtr ) == SYM_EXTERN )
{ /* External function */
pDynSym = hb_dynsymFind( pSymRead[ ul ].szName );
if( !pDynSym )
@@ -397,7 +397,7 @@ PHRB_BODY hb_hrbLoad( char* szHrb )
bError = TRUE;
break;
}
pSymRead[ ul ].pFunPtr = pDynSym->pFunPtr;
pSymRead[ ul ].value.pFunPtr = pDynSym->pFunPtr;
}
}
if( bError )
@@ -429,7 +429,7 @@ void hb_hrbDo( PHRB_BODY pHrbBody, int argc, char * argv[] )
* to pass any parameters to this function because they
* cannot be used to initialize static variable.
*/
pHrbBody->pSymRead[ ul ].pFunPtr();
pHrbBody->pSymRead[ ul ].value.pFunPtr();
}
}
for( ul = 0; ul < pHrbBody->ulSymbols; ul++ ) /* Check INIT functions */