2006-06-17 00:20 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbcomp.h
+ added extern hb_comp_szFile
* harbour/include/hbinit.h
* changed hb_vmProcessSymbolsExt() to hb_vmProcessSymbolsEx() respecting
Mindaugas suggestion.
+ added HB_INIT_SYMBOLS_EX_END() macro
* translate HB_INIT_SYMBOLS_END() macro to HB_INIT_SYMBOLS_EX_END()
* harbour/include/hbsetup.h
+ added HB_PCODE_VER_MIN and HB_PCODE_VER both now are set to 0x0001
* harbour/include/hbtypes.h
* changed VM_PROCESS_SYMBOLS_EXT to VM_PROCESS_SYMBOLS_EX
* harbour/include/hbvm.h
+ added hb_vmFindModuleSymbolName() - it returns the file name of given
symbol if it was registered in HVM
* harbour/source/compiler/genc.c
* set HB_FS_LOCAL for local module functions
* use HB_INIT_SYMBOLS_EX_END instead of HB_INIT_SYMBOLS_END
* harbour/source/compiler/harbour.c
* minor modifications
* harbour/contrib/rdd_ads/ads1.c
* harbour/source/rdd/dbf1.c
* harbour/source/rdd/delim1.c
* harbour/source/rdd/sdf1.c
* harbour/source/rdd/dbfdbt/dbfdbt1.c
* harbour/source/rdd/dbffpt/dbffpt1.c
* harbour/source/rdd/dbfcdx/dbfcdx1.c
* added HB_FS_LOCAL to function symbols in registered symbol tables
* harbour/source/rdd/dbfntx/dbfntx1.c
* added HB_FS_LOCAL to function symbols in registered symbol tables
! added missing break
+ added DBOI_KEYCOUNTRAW, DBOI_KEYNORAW. They works like DBOI_KEYCOUNT
and DBOI_KEYNO in pure DBFNTX. Only with some upper level RDDs like
RMDBFNTX which supports bit map filters they can return differ results.
* harbour/source/rdd/workarea.c
* changed ORDERINFO to DBORDERINFO in error message
* harbour/source/rtl/set.c
* respect previous settings in logical SETs if given value is not valid
new one.
+ added misinf initialization for _SET_FORCEOPT and _SET_HARDCOMMIT.
* changed default value of _SET_OPTIMIZE to TRUE
* harbour/source/vm/dynsym.c
* give the highest priority for LOCAL function symbols
* harbour/source/vm/hvm.c
+ added hb_vmFindModuleSymbolName() - it returns the file name of given
symbol if it was registered in HVM
* changed hb_vmProcessSymbolsExt() to hb_vmProcessSymbolsEx() and added
PCOE version checking
* harbour/source/vm/maindllp.c
* changed hb_vmProcessSymbolsExt() to hb_vmProcessSymbolsEx()
* changed VM_PROCESS_SYMBOLS_EXT to VM_PROCESS_SYMBOLS_EX
* harbour/source/vm/proc.c
* changed to use stack macros/functions instead of direct accessing
HB_STACK members
+ implemented PROCFILE() - it returns now real source file name
with body of given function symbol or function executed at given
stack level. If the source file cannot be detected then empty
string is returned. Unlike in xHarbour it works also for static
functions. synatx:
PROCFILE( [ <FuncSym> | <nStackLevel> ] )
F.e.:
PROCFILE() -> current module name
PROCFILE(@DBFCDX()) -> ../../dbfcdx1.c
This commit is contained in:
@@ -8,6 +8,84 @@
|
||||
2002-12-01 13:30 UTC+0100 Foo Bar <foo.bar@foobar.org>
|
||||
*/
|
||||
|
||||
|
||||
* harbour/source/rtl/math.c
|
||||
! fixed possible memory leak
|
||||
* indenting
|
||||
|
||||
* harbour/source/vm/classes.c
|
||||
! fixed possible GPF in __GETMSGPRF
|
||||
* use only one function for method name hashing
|
||||
|
||||
* harbour/source/vm/hvm.c
|
||||
* minor fix
|
||||
|
||||
2006-06-17 00:20 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
||||
* harbour/include/hbcomp.h
|
||||
+ added extern hb_comp_szFile
|
||||
|
||||
* harbour/include/hbinit.h
|
||||
* changed hb_vmProcessSymbolsExt() to hb_vmProcessSymbolsEx() respecting
|
||||
Mindaugas suggestion.
|
||||
+ added HB_INIT_SYMBOLS_EX_END() macro
|
||||
* translate HB_INIT_SYMBOLS_END() macro to HB_INIT_SYMBOLS_EX_END()
|
||||
|
||||
* harbour/include/hbsetup.h
|
||||
+ added HB_PCODE_VER_MIN and HB_PCODE_VER both now are set to 0x0001
|
||||
|
||||
* harbour/include/hbtypes.h
|
||||
* changed VM_PROCESS_SYMBOLS_EXT to VM_PROCESS_SYMBOLS_EX
|
||||
|
||||
* harbour/include/hbvm.h
|
||||
+ added hb_vmFindModuleSymbolName() - it returns the file name of given
|
||||
symbol if it was registered in HVM
|
||||
|
||||
* harbour/source/compiler/genc.c
|
||||
* set HB_FS_LOCAL for local module functions
|
||||
* use HB_INIT_SYMBOLS_EX_END instead of HB_INIT_SYMBOLS_END
|
||||
|
||||
* harbour/source/compiler/harbour.c
|
||||
* minor modifications
|
||||
|
||||
* harbour/contrib/rdd_ads/ads1.c
|
||||
* harbour/source/rdd/dbf1.c
|
||||
* harbour/source/rdd/delim1.c
|
||||
* harbour/source/rdd/sdf1.c
|
||||
* harbour/source/rdd/dbfdbt/dbfdbt1.c
|
||||
* harbour/source/rdd/dbffpt/dbffpt1.c
|
||||
* harbour/source/rdd/dbfcdx/dbfcdx1.c
|
||||
* added HB_FS_LOCAL to function symbols in registered symbol tables
|
||||
|
||||
* harbour/source/rdd/dbfntx/dbfntx1.c
|
||||
* added HB_FS_LOCAL to function symbols in registered symbol tables
|
||||
! added missing break
|
||||
+ added DBOI_KEYCOUNTRAW, DBOI_KEYNORAW. They works like DBOI_KEYCOUNT
|
||||
and DBOI_KEYNO in pure DBFNTX. Only with some upper level RDDs like
|
||||
RMDBFNTX which supports bit map filters they can return differ results.
|
||||
|
||||
* harbour/source/rdd/workarea.c
|
||||
* changed ORDERINFO to DBORDERINFO in error message
|
||||
|
||||
* harbour/source/rtl/set.c
|
||||
* respect previous settings in logical SETs if given value is not valid
|
||||
new one.
|
||||
+ added misinf initialization for _SET_FORCEOPT and _SET_HARDCOMMIT.
|
||||
* changed default value of _SET_OPTIMIZE to TRUE
|
||||
|
||||
* harbour/source/vm/dynsym.c
|
||||
* give the highest priority for LOCAL function symbols
|
||||
|
||||
* harbour/source/vm/hvm.c
|
||||
+ added hb_vmFindModuleSymbolName() - it returns the file name of given
|
||||
symbol if it was registered in HVM
|
||||
* changed hb_vmProcessSymbolsExt() to hb_vmProcessSymbolsEx() and added
|
||||
PCOE version checking
|
||||
|
||||
* harbour/source/vm/maindllp.c
|
||||
* changed hb_vmProcessSymbolsExt() to hb_vmProcessSymbolsEx()
|
||||
* changed VM_PROCESS_SYMBOLS_EXT to VM_PROCESS_SYMBOLS_EX
|
||||
|
||||
* harbour/source/vm/proc.c
|
||||
* changed to use stack macros/functions instead of direct accessing
|
||||
HB_STACK members
|
||||
+ implemented PROCFILE() - it returns now real source file name
|
||||
|
||||
@@ -4572,11 +4572,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_FS_LOCAL}, {HB_FUNCNAME( ADS )}, NULL },
|
||||
{ "ADS_GETFUNCTABLE", {HB_FS_PUBLIC|HB_FS_LOCAL}, {HB_FUNCNAME( ADS_GETFUNCTABLE )}, NULL },
|
||||
{ "ADT_GETFUNCTABLE", {HB_FS_PUBLIC|HB_FS_LOCAL}, {HB_FUNCNAME( ADT_GETFUNCTABLE )}, NULL },
|
||||
{ "ADSNTX_GETFUNCTABLE", {HB_FS_PUBLIC|HB_FS_LOCAL}, {HB_FUNCNAME( ADSNTX_GETFUNCTABLE )}, NULL },
|
||||
{ "ADSCDX_GETFUNCTABLE", {HB_FS_PUBLIC|HB_FS_LOCAL}, {HB_FUNCNAME( ADSCDX_GETFUNCTABLE )}, NULL }
|
||||
HB_INIT_SYMBOLS_END( ads1__InitSymbols )
|
||||
|
||||
HB_CALL_ON_STARTUP_BEGIN( _hb_ads_rdd_init_ )
|
||||
|
||||
@@ -589,6 +589,8 @@ extern int hb_comp_iLinePRG;
|
||||
|
||||
extern ULONG hb_comp_Supported;
|
||||
|
||||
extern char * hb_comp_szFile;
|
||||
|
||||
/* table with PCODEs' length */
|
||||
extern const BYTE hb_comp_pcode_len[];
|
||||
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
HB_EXTERN_BEGIN
|
||||
|
||||
extern HB_EXPORT PHB_SYMB hb_vmProcessSymbols( PHB_SYMB pSymbols, USHORT uiSymbols ); /* old module symbols initialization */
|
||||
extern HB_EXPORT PHB_SYMB hb_vmProcessSymbolsExt( PHB_SYMB pSymbols, USHORT uiSymbols, char * szModuleName, ULONG ulID, USHORT uiPcodeMin, USHORT uiPcodeMax ); /* module symbols initialization with extended information */
|
||||
extern HB_EXPORT PHB_SYMB hb_vmProcessSymbolsEx( PHB_SYMB pSymbols, USHORT uiSymbols, char * szModuleName, ULONG ulID, USHORT uiPcodeVer ); /* module symbols initialization with extended information */
|
||||
|
||||
#if defined(_MSC_VER) && !defined(_WIN64) && \
|
||||
!defined(__LCC__) && !defined(__POCC__) && !defined(__XCC__) && \
|
||||
@@ -84,18 +84,19 @@ extern HB_EXPORT PHB_SYMB hb_vmProcessSymbolsExt( PHB_SYMB pSymbols, USHORT uiSy
|
||||
|
||||
#endif
|
||||
|
||||
#define HB_INIT_SYMBOLS_END( func ) HB_INIT_SYMBOLS_EX_END( func, __FILE__, 0L, 0x0000 )
|
||||
|
||||
#if defined(HARBOUR_STRICT_ANSI_C)
|
||||
|
||||
#define HB_INIT_SYMBOLS_BEGIN( func ) \
|
||||
static HB_SYMB symbols_table[] = {
|
||||
|
||||
#define HB_INIT_SYMBOLS_END( func ) \
|
||||
#define HB_INIT_SYMBOLS_EX_END( func, module, id, vpcode ) \
|
||||
}; \
|
||||
static PHB_SYMB symbols = symbols_table; \
|
||||
void func( void ) \
|
||||
{ \
|
||||
symbols = hb_vmProcessSymbols( symbols_table, (USHORT) ( sizeof( symbols_table ) / sizeof( HB_SYMB ) ) ); \
|
||||
symbols = hb_vmProcessSymbolsEx( symbols_table, (USHORT) ( sizeof( symbols_table ) / sizeof( HB_SYMB ) ), (module), (id), (vpcode) ); \
|
||||
}
|
||||
|
||||
#define HB_CALL_ON_STARTUP_BEGIN( func ) \
|
||||
@@ -114,12 +115,12 @@ extern HB_EXPORT PHB_SYMB hb_vmProcessSymbolsExt( PHB_SYMB pSymbols, USHORT uiSy
|
||||
#define HB_INIT_SYMBOLS_BEGIN( func ) \
|
||||
static HB_SYMB symbols_table[] = {
|
||||
|
||||
#define HB_INIT_SYMBOLS_END( func ) \
|
||||
#define HB_INIT_SYMBOLS_EX_END( func, module, id, vpcode ) \
|
||||
}; \
|
||||
static PHB_SYMB symbols = symbols_table; \
|
||||
static void __attribute__ ((constructor)) func( void ) \
|
||||
{ \
|
||||
symbols = hb_vmProcessSymbols( symbols_table, (USHORT) ( sizeof( symbols_table ) / sizeof( HB_SYMB ) ) ); \
|
||||
symbols = hb_vmProcessSymbolsEx( symbols_table, (USHORT) ( sizeof( symbols_table ) / sizeof( HB_SYMB ) ), (module), (id), (vpcode) ); \
|
||||
}
|
||||
|
||||
#define HB_CALL_ON_STARTUP_BEGIN( func ) \
|
||||
@@ -136,12 +137,12 @@ extern HB_EXPORT PHB_SYMB hb_vmProcessSymbolsExt( PHB_SYMB pSymbols, USHORT uiSy
|
||||
#define HB_INIT_SYMBOLS_BEGIN( func ) \
|
||||
static HB_SYMB symbols_table[] = {
|
||||
|
||||
#define HB_INIT_SYMBOLS_END( func ) \
|
||||
#define HB_INIT_SYMBOLS_EX_END( func, module, id, vpcode ) \
|
||||
}; \
|
||||
static PHB_SYMB symbols = symbols_table; \
|
||||
static int func( void ) \
|
||||
{ \
|
||||
symbols = hb_vmProcessSymbols( symbols_table, (USHORT) ( sizeof( symbols_table ) / sizeof( HB_SYMB ) ) ); \
|
||||
symbols = hb_vmProcessSymbolsEx( symbols_table, (USHORT) ( sizeof( symbols_table ) / sizeof( HB_SYMB ) ), (module), (id), (vpcode) ); \
|
||||
return 0; \
|
||||
}
|
||||
|
||||
@@ -166,9 +167,9 @@ extern HB_EXPORT PHB_SYMB hb_vmProcessSymbolsExt( PHB_SYMB pSymbols, USHORT uiSy
|
||||
#define HB_INIT_SYMBOLS_BEGIN( func ) \
|
||||
static HB_SYMB symbols_table[] = {
|
||||
|
||||
#define HB_INIT_SYMBOLS_END( func ) \
|
||||
#define HB_INIT_SYMBOLS_EX_END( func, module, id, vpcode ) \
|
||||
}; \
|
||||
static PHB_SYMB symbols = hb_vmProcessSymbols( symbols_table, (USHORT) ( sizeof( symbols_table ) / sizeof( HB_SYMB ) ) ); \
|
||||
static PHB_SYMB symbols = hb_vmProcessSymbolsEx( symbols_table, (USHORT) ( sizeof( symbols_table ) / sizeof( HB_SYMB ) ), (module), (id), (vpcode) ); \
|
||||
|
||||
#define HB_CALL_ON_STARTUP_BEGIN( func ) \
|
||||
static int func( void ) \
|
||||
@@ -198,12 +199,12 @@ extern HB_EXPORT PHB_SYMB hb_vmProcessSymbolsExt( PHB_SYMB pSymbols, USHORT uiSy
|
||||
#define HB_INIT_SYMBOLS_BEGIN( func ) \
|
||||
static HB_SYMB symbols_table[] = {
|
||||
|
||||
#define HB_INIT_SYMBOLS_END( func ) \
|
||||
#define HB_INIT_SYMBOLS_EX_END( func, module, id, vpcode ) \
|
||||
}; \
|
||||
static PHB_SYMB symbols = symbols_table; \
|
||||
static void func( void ) \
|
||||
{ \
|
||||
symbols = hb_vmProcessSymbols( symbols_table, (USHORT) ( sizeof( symbols_table ) / sizeof( HB_SYMB ) ) ); \
|
||||
symbols = hb_vmProcessSymbolsEx( symbols_table, (USHORT) ( sizeof( symbols_table ) / sizeof( HB_SYMB ) ), (module), (id), (vpcode) ); \
|
||||
}
|
||||
|
||||
#define HB_CALL_ON_STARTUP_BEGIN( func ) \
|
||||
|
||||
@@ -60,6 +60,14 @@
|
||||
*/
|
||||
#include "hbsetup.ch"
|
||||
|
||||
/* ***********************************************************************
|
||||
* Define PCODE version number
|
||||
* HB_PCODE_VER_MIN define minimum supported PCODE by HVM
|
||||
*/
|
||||
|
||||
#define HB_PCODE_VER 0x0001
|
||||
#define HB_PCODE_VER_MIN 0x0001
|
||||
|
||||
/* ***********************************************************************
|
||||
* NOTE: You can select the default language modul used by Harbour, by
|
||||
* defining this to a valid language modul identifier.
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
|
||||
typedef PHB_SYMB ( * VM_PROCESS_DLL_SYMBOLS ) ( PHB_SYMB pModuleSymbols,
|
||||
USHORT uiModuleSymbols );
|
||||
typedef PHB_SYMB ( * VM_PROCESS_SYMBOLS_EXT )
|
||||
typedef PHB_SYMB ( * VM_PROCESS_SYMBOLS_EX )
|
||||
( PHB_SYMB pModuleSymbols, USHORT uiModuleSymbols,
|
||||
char * szModuleName, ULONG ulID,
|
||||
USHORT uiPcodeMin, USHORT uiPcodeMax );
|
||||
|
||||
@@ -70,7 +70,7 @@ extern HB_EXPORT void hb_vmAtExit( HB_INIT_FUNC pFunc, void * cargo );
|
||||
/* Harbour virtual machine functions */
|
||||
extern HB_EXPORT void hb_vmExecute( const BYTE * pCode, PHB_SYMB pSymbols ); /* invokes the virtual machine */
|
||||
extern HB_EXPORT PHB_SYMB hb_vmProcessSymbols( PHB_SYMB pSymbols, USHORT uiSymbols ); /* old module symbols initialization */
|
||||
extern HB_EXPORT PHB_SYMB hb_vmProcessSymbolsExt( PHB_SYMB pSymbols, USHORT uiSymbols, char * szModuleName, ULONG ulID, USHORT uiPcodeMin, USHORT uiPcodeMax ); /* module symbols initialization with extended information */
|
||||
extern HB_EXPORT PHB_SYMB hb_vmProcessSymbolsEx( PHB_SYMB pSymbols, USHORT uiSymbols, char * szModuleName, ULONG ulID, USHORT uiPcodeVer ); /* module symbols initialization with extended information */
|
||||
|
||||
#ifdef _HB_API_INTERNAL_
|
||||
typedef struct _HB_SYMBOLS
|
||||
@@ -92,6 +92,8 @@ extern HB_EXPORT PHB_SYMB hb_vmProcessSymbolsExt( PHB_SYMB pSymbols, USHORT uiSy
|
||||
extern void hb_vmBeginSymbolGroup( void * hDynLib, BOOL fClone );
|
||||
extern void hb_vmInitSymbolGroup( void * hNewDynLib, int argc, char * argv[] );
|
||||
extern void hb_vmExitSymbolGroup( void * hDynLib );
|
||||
extern char * hb_vmFindModuleSymbolName( PHB_SYMB pSym );
|
||||
|
||||
#endif
|
||||
|
||||
extern HB_EXPORT void hb_vmSymbolInit_RT( void ); /* initialization of runtime support symbols */
|
||||
|
||||
@@ -36,7 +36,7 @@ extern void hb_compGenCRealCode( PFUNCTION pFunc, FILE * yyc );
|
||||
static void hb_compGenCReadable( PFUNCTION pFunc, FILE * yyc );
|
||||
static void hb_compGenCCompact( PFUNCTION pFunc, FILE * yyc );
|
||||
static void hb_compGenCFunc( FILE *yyc, char *cDecor, char *szName, int iStrip );
|
||||
static void hb_writeEndInit( FILE* yyc, char * szModulname );
|
||||
static void hb_writeEndInit( FILE* yyc, char * szModulname, char * szSourceFile );
|
||||
|
||||
/* helper structure to pass information */
|
||||
typedef struct HB_stru_genc_info
|
||||
@@ -64,6 +64,7 @@ void hb_compGenCCode( PHB_FNAME pFileName ) /* generates the C language ou
|
||||
BOOL bIsExitFunction ;
|
||||
BOOL bIsStaticVariable ;
|
||||
|
||||
hb_fsFNameMerge( szFileName, pFileName );
|
||||
if( ! pFileName->szExtension )
|
||||
pFileName->szExtension = ".c";
|
||||
hb_fsFNameMerge( szFileName, pFileName );
|
||||
@@ -177,7 +178,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, "{ \"%s\", {HB_FS_INITEXIT}, {hb_INITSTATICS}, NULL }", pSym->szName ); /* NOTE: hb_ intentionally in lower case */
|
||||
fprintf( yyc, "{ \"%s\", {HB_FS_INITEXIT|HB_FS_LOCAL}, {hb_INITSTATICS}, NULL }", pSym->szName ); /* NOTE: hb_ intentionally in lower case */
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -208,6 +209,8 @@ void hb_compGenCCode( PHB_FNAME pFileName ) /* generates the C language ou
|
||||
external called function */
|
||||
if( pSym->bFunc && hb_compFunctionFind( pSym->szName ) ) /* is it a function defined in this module */
|
||||
{
|
||||
fprintf( yyc, " | HB_FS_LOCAL" );
|
||||
|
||||
if( pSym->cScope & HB_FS_INIT )
|
||||
hb_compGenCFunc( yyc, "}, {HB_INIT_FUNCNAME( %s )}, NULL }", pSym->szName, 1 );
|
||||
else if( pSym->cScope & HB_FS_EXIT )
|
||||
@@ -227,7 +230,7 @@ void hb_compGenCCode( PHB_FNAME pFileName ) /* generates the C language ou
|
||||
pSym = pSym->pNext;
|
||||
}
|
||||
|
||||
hb_writeEndInit( yyc, szModulname );
|
||||
hb_writeEndInit( yyc, szModulname, hb_comp_szFile );
|
||||
|
||||
/* Generate functions data
|
||||
*/
|
||||
@@ -311,10 +314,17 @@ void hb_compGenCCode( PHB_FNAME pFileName ) /* generates the C language ou
|
||||
printf( "Done.\n" );
|
||||
}
|
||||
|
||||
static void hb_writeEndInit( FILE* yyc, char * szModulname )
|
||||
static void hb_writeEndInit( FILE* yyc, char * szModulname, char * szSourceFile )
|
||||
{
|
||||
fprintf( yyc, "\nHB_INIT_SYMBOLS_END( hb_vm_SymbolInit_%s%s )\n\n"
|
||||
"#if defined(HB_PRAGMA_STARTUP)\n"
|
||||
/*
|
||||
HB_SYMBOL_UNUSED( szSourceFile );
|
||||
fprintf( yyc, "\nHB_INIT_SYMBOLS_END( hb_vm_SymbolInit_%s%s )\n\n",
|
||||
hb_comp_szPrefix, szModulname );
|
||||
*/
|
||||
fprintf( yyc, "\nHB_INIT_SYMBOLS_EX_END( hb_vm_SymbolInit_%s%s, \"%s\", 0x%lx, 0x%04x )\n\n",
|
||||
hb_comp_szPrefix, szModulname, szSourceFile, 0L, HB_PCODE_VER );
|
||||
|
||||
fprintf( yyc, "#if defined(HB_PRAGMA_STARTUP)\n"
|
||||
" #pragma startup hb_vm_SymbolInit_%s%s\n"
|
||||
"#elif defined(HB_MSC_STARTUP)\n"
|
||||
" #if _MSC_VER >= 1010\n"
|
||||
@@ -330,7 +340,6 @@ static void hb_writeEndInit( FILE* yyc, char * szModulname )
|
||||
"#endif\n\n",
|
||||
hb_comp_szPrefix, szModulname,
|
||||
hb_comp_szPrefix, szModulname,
|
||||
hb_comp_szPrefix, szModulname,
|
||||
hb_comp_szPrefix, szModulname );
|
||||
}
|
||||
|
||||
|
||||
@@ -110,7 +110,7 @@ char * hb_comp_szFromClass;
|
||||
PCOMDECLARED hb_comp_pLastMethod;
|
||||
|
||||
int hb_comp_iLine; /* currently processed line number (globaly) */
|
||||
char * hb_comp_szFile; /* File Name of last compiled line */
|
||||
char * hb_comp_szFile; /* Source file name of compiled module */
|
||||
PFUNCTION hb_comp_pInitFunc;
|
||||
PHB_FNAME hb_comp_pFileName = NULL;
|
||||
PHB_FNAME hb_comp_pFilePpo = NULL;
|
||||
@@ -4809,8 +4809,8 @@ int hb_compCompile( char * szPrg, int argc, char * argv[] )
|
||||
|
||||
if( hb_comp_pFileName->szName )
|
||||
{
|
||||
char szFileName[ _POSIX_PATH_MAX ]; /* filename to parse */
|
||||
char szPpoName[ _POSIX_PATH_MAX ];
|
||||
char szFileName[ _POSIX_PATH_MAX + 1 ]; /* filename to parse */
|
||||
char szPpoName[ _POSIX_PATH_MAX + 1 ];
|
||||
|
||||
if( !hb_comp_pFileName->szExtension )
|
||||
hb_comp_pFileName->szExtension = ".prg";
|
||||
|
||||
@@ -4359,7 +4359,6 @@ static ERRCODE hb_dbfRddInfo( LPRDDNODE pRDD, USHORT uiIndex, ULONG ulConnect, P
|
||||
case RDDI_ISDBF:
|
||||
case RDDI_CANPUTREC:
|
||||
case RDDI_LOCAL:
|
||||
case RDDI_LARGEFILE:
|
||||
hb_itemPutL( pItem, TRUE );
|
||||
break;
|
||||
|
||||
@@ -4474,8 +4473,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_FS_LOCAL}, {HB_FUNCNAME( _DBF )}, NULL },
|
||||
{ "DBF_GETFUNCTABLE", {HB_FS_PUBLIC|HB_FS_LOCAL}, {HB_FUNCNAME( DBF_GETFUNCTABLE )}, NULL }
|
||||
HB_INIT_SYMBOLS_END( dbf1__InitSymbols )
|
||||
|
||||
HB_CALL_ON_STARTUP_BEGIN( _hb_dbf_rdd_init_ )
|
||||
|
||||
@@ -9318,8 +9318,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_FS_LOCAL}, {HB_FUNCNAME( SIXCDX )}, NULL },
|
||||
{ "SIXCDX_GETFUNCTABLE", {HB_FS_PUBLIC|HB_FS_LOCAL}, {HB_FUNCNAME( SIXCDX_GETFUNCTABLE )}, NULL }
|
||||
HB_INIT_SYMBOLS_END( dbfcdx1__InitSymbols )
|
||||
|
||||
#else
|
||||
@@ -9382,8 +9382,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_FS_LOCAL}, {HB_FUNCNAME( DBFCDX )}, NULL },
|
||||
{ "DBFCDX_GETFUNCTABLE", {HB_FS_PUBLIC|HB_FS_LOCAL}, {HB_FUNCNAME( DBFCDX_GETFUNCTABLE )}, NULL }
|
||||
HB_INIT_SYMBOLS_END( dbfcdx1__InitSymbols )
|
||||
|
||||
#endif
|
||||
|
||||
@@ -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_FS_LOCAL}, {HB_FUNCNAME( DBFDBT )}, NULL },
|
||||
{ "DBFDBT_GETFUNCTABLE", {HB_FS_PUBLIC|HB_FS_LOCAL}, {HB_FUNCNAME( DBFDBT_GETFUNCTABLE )}, NULL }
|
||||
HB_INIT_SYMBOLS_END( dbfdbt1__InitSymbols )
|
||||
|
||||
HB_CALL_ON_STARTUP_BEGIN( _hb_dbfdbt_rdd_init_ )
|
||||
|
||||
@@ -4748,10 +4748,10 @@ 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 },
|
||||
{ "DBFBLOB", {HB_FS_PUBLIC}, {HB_FUNCNAME( DBFBLOB )}, NULL },
|
||||
{ "DBFBLOB_GETFUNCTABLE", {HB_FS_PUBLIC}, {HB_FUNCNAME( DBFBLOB_GETFUNCTABLE )}, NULL }
|
||||
{ "DBFFPT", {HB_FS_PUBLIC|HB_FS_LOCAL}, {HB_FUNCNAME( DBFFPT )}, NULL },
|
||||
{ "DBFFPT_GETFUNCTABLE", {HB_FS_PUBLIC|HB_FS_LOCAL}, {HB_FUNCNAME( DBFFPT_GETFUNCTABLE )}, NULL },
|
||||
{ "DBFBLOB", {HB_FS_PUBLIC|HB_FS_LOCAL}, {HB_FUNCNAME( DBFBLOB )}, NULL },
|
||||
{ "DBFBLOB_GETFUNCTABLE", {HB_FS_PUBLIC|HB_FS_LOCAL}, {HB_FUNCNAME( DBFBLOB_GETFUNCTABLE )}, NULL }
|
||||
HB_INIT_SYMBOLS_END( dbffpt1__InitSymbols )
|
||||
|
||||
HB_CALL_ON_STARTUP_BEGIN( _hb_dbffpt_rdd_init_ )
|
||||
|
||||
@@ -6743,9 +6743,11 @@ static ERRCODE ntxOrderInfo( NTXAREAP pArea, USHORT uiIndex, LPDBORDERINFO pInfo
|
||||
hb_itemPutC( pInfo->itmResult, pTag->Owner->IndexName );
|
||||
break;
|
||||
case DBOI_KEYCOUNT:
|
||||
case DBOI_KEYCOUNTRAW:
|
||||
hb_itemPutNL( pInfo->itmResult, hb_ntxOrdKeyCount( pTag ) );
|
||||
break;
|
||||
case DBOI_POSITION:
|
||||
case DBOI_KEYNORAW:
|
||||
if( hb_itemType( pInfo->itmNewVal ) & HB_IT_NUMERIC )
|
||||
hb_itemPutL( pInfo->itmResult,
|
||||
hb_ntxOrdKeyGoto( pTag, hb_itemGetNL( pInfo->itmNewVal ) ) );
|
||||
@@ -6880,6 +6882,7 @@ static ERRCODE ntxOrderInfo( NTXAREAP pArea, USHORT uiIndex, LPDBORDERINFO pInfo
|
||||
hb_ntxTagClearScope( pTag, 1 );
|
||||
if( pInfo->itmResult )
|
||||
hb_itemClear( pInfo->itmResult );
|
||||
break;
|
||||
case DBOI_KEYADD:
|
||||
if( pTag->Owner->fReadonly )
|
||||
{
|
||||
@@ -7656,8 +7659,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_FS_LOCAL}, {HB_FUNCNAME( DBFNTX )}, NULL },
|
||||
{ "DBFNTX_GETFUNCTABLE", {HB_FS_PUBLIC|HB_FS_LOCAL}, {HB_FUNCNAME( DBFNTX_GETFUNCTABLE )}, NULL }
|
||||
HB_INIT_SYMBOLS_END( dbfntx1__InitSymbols )
|
||||
|
||||
HB_CALL_ON_STARTUP_BEGIN( _hb_dbfntx_rdd_init_ )
|
||||
|
||||
@@ -1340,7 +1340,6 @@ static ERRCODE hb_delimRddInfo( LPRDDNODE pRDD, USHORT uiIndex, ULONG ulConnect,
|
||||
{
|
||||
case RDDI_CANPUTREC:
|
||||
case RDDI_LOCAL:
|
||||
case RDDI_LARGEFILE:
|
||||
hb_itemPutL( pItem, TRUE );
|
||||
break;
|
||||
|
||||
@@ -1502,8 +1501,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_FS_LOCAL}, {HB_FUNCNAME( DELIM )}, NULL },
|
||||
{ "DELIM_GETFUNCTABLE", {HB_FS_PUBLIC|HB_FS_LOCAL}, {HB_FUNCNAME( DELIM_GETFUNCTABLE )}, NULL }
|
||||
HB_INIT_SYMBOLS_END( delim1__InitSymbols )
|
||||
|
||||
HB_CALL_ON_STARTUP_BEGIN( _hb_delim_rdd_init_ )
|
||||
|
||||
@@ -1110,7 +1110,6 @@ static ERRCODE hb_sdfRddInfo( LPRDDNODE pRDD, USHORT uiIndex, ULONG ulConnect, P
|
||||
{
|
||||
case RDDI_CANPUTREC:
|
||||
case RDDI_LOCAL:
|
||||
case RDDI_LARGEFILE:
|
||||
hb_itemPutL( pItem, TRUE );
|
||||
break;
|
||||
|
||||
@@ -1266,8 +1265,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_FS_LOCAL}, {HB_FUNCNAME( SDF )}, NULL },
|
||||
{ "SDF_GETFUNCTABLE", {HB_FS_PUBLIC|HB_FS_LOCAL}, {HB_FUNCNAME( SDF_GETFUNCTABLE )}, NULL }
|
||||
HB_INIT_SYMBOLS_END( sdf1__InitSymbols )
|
||||
|
||||
HB_CALL_ON_STARTUP_BEGIN( _hb_sdf_rdd_init_ )
|
||||
|
||||
@@ -719,7 +719,7 @@ ERRCODE hb_waOrderInfo( AREAP pArea, USHORT index, LPDBORDERINFO param )
|
||||
HB_SYMBOL_UNUSED( index );
|
||||
HB_SYMBOL_UNUSED( param );
|
||||
|
||||
hb_errRT_DBCMD( EG_ARG, EDBCMD_BADPARAMETER, NULL, "ORDERINFO" );
|
||||
hb_errRT_DBCMD( EG_ARG, EDBCMD_BADPARAMETER, NULL, "DBORDERINFO" );
|
||||
return FAILURE;
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -104,9 +104,9 @@ static char set_char( PHB_ITEM pItem, char oldChar )
|
||||
return newChar;
|
||||
}
|
||||
|
||||
static BOOL set_logical( PHB_ITEM pItem )
|
||||
static BOOL set_logical( PHB_ITEM pItem, BOOL bDefault )
|
||||
{
|
||||
BOOL bLogical = FALSE;
|
||||
BOOL bLogical = bDefault;
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("set_logical(%p)", pItem));
|
||||
|
||||
@@ -421,7 +421,7 @@ HB_FUNC( SET )
|
||||
{
|
||||
case HB_SET_ALTERNATE :
|
||||
hb_retl( hb_set.HB_SET_ALTERNATE );
|
||||
if( args > 1 ) hb_set.HB_SET_ALTERNATE = set_logical( pArg2 );
|
||||
if( args > 1 ) hb_set.HB_SET_ALTERNATE = set_logical( pArg2, hb_set.HB_SET_ALTERNATE );
|
||||
break;
|
||||
case HB_SET_ALTFILE :
|
||||
if( hb_set.HB_SET_ALTFILE ) hb_retc( hb_set.HB_SET_ALTFILE );
|
||||
@@ -441,7 +441,7 @@ HB_FUNC( SET )
|
||||
hb_set.HB_SET_ALTFILE = set_string( pArg2, hb_set.HB_SET_ALTFILE );
|
||||
}
|
||||
}
|
||||
if( args > 2 ) bFlag = set_logical( pArg3 );
|
||||
if( args > 2 ) bFlag = set_logical( pArg3, FALSE );
|
||||
else bFlag = FALSE;
|
||||
if( args > 1 )
|
||||
{
|
||||
@@ -454,7 +454,7 @@ HB_FUNC( SET )
|
||||
break;
|
||||
case HB_SET_AUTOPEN :
|
||||
hb_retl( hb_set.HB_SET_AUTOPEN );
|
||||
if( args > 1 ) hb_set.HB_SET_AUTOPEN = set_logical( pArg2 );
|
||||
if( args > 1 ) hb_set.HB_SET_AUTOPEN = set_logical( pArg2, hb_set.HB_SET_AUTOPEN );
|
||||
break;
|
||||
case HB_SET_AUTORDER :
|
||||
hb_retni( hb_set.HB_SET_AUTORDER );
|
||||
@@ -478,22 +478,22 @@ HB_FUNC( SET )
|
||||
break;
|
||||
case HB_SET_BELL :
|
||||
hb_retl( hb_set.HB_SET_BELL );
|
||||
if( args > 1 ) hb_set.HB_SET_BELL = set_logical( pArg2 );
|
||||
if( args > 1 ) hb_set.HB_SET_BELL = set_logical( pArg2, hb_set.HB_SET_BELL );
|
||||
break;
|
||||
case HB_SET_CANCEL :
|
||||
hb_retl( hb_set.HB_SET_CANCEL );
|
||||
if( args > 1 ) hb_set.HB_SET_CANCEL = set_logical( pArg2 );
|
||||
if( args > 1 ) hb_set.HB_SET_CANCEL = set_logical( pArg2, hb_set.HB_SET_CANCEL );
|
||||
break;
|
||||
case HB_SET_COLOR :
|
||||
hb_retc( hb_conSetColor( args >= 2 && HB_IS_STRING( pArg2 ) ? hb_itemGetCPtr( pArg2 ) : ( char * ) NULL ) );
|
||||
break;
|
||||
case HB_SET_CONFIRM :
|
||||
hb_retl( hb_set.HB_SET_CONFIRM );
|
||||
if( args > 1 ) hb_set.HB_SET_CONFIRM = set_logical( pArg2 );
|
||||
if( args > 1 ) hb_set.HB_SET_CONFIRM = set_logical( pArg2, hb_set.HB_SET_CONFIRM );
|
||||
break;
|
||||
case HB_SET_CONSOLE :
|
||||
hb_retl( hb_set.HB_SET_CONSOLE );
|
||||
if( args > 1 ) hb_set.HB_SET_CONSOLE = set_logical( pArg2 );
|
||||
if( args > 1 ) hb_set.HB_SET_CONSOLE = set_logical( pArg2, hb_set.HB_SET_CONSOLE );
|
||||
break;
|
||||
case HB_SET_CURSOR :
|
||||
if( args >= 2 && HB_IS_NUMERIC( pArg2 ) )
|
||||
@@ -536,7 +536,7 @@ HB_FUNC( SET )
|
||||
break;
|
||||
case HB_SET_DEBUG :
|
||||
hb_retl( hb_set.HB_SET_DEBUG );
|
||||
if( args > 1 ) hb_set.HB_SET_DEBUG = set_logical( pArg2 );
|
||||
if( args > 1 ) hb_set.HB_SET_DEBUG = set_logical( pArg2, hb_set.HB_SET_DEBUG );
|
||||
break;
|
||||
case HB_SET_DECIMALS :
|
||||
hb_retni( hb_set.HB_SET_DECIMALS );
|
||||
@@ -555,7 +555,7 @@ HB_FUNC( SET )
|
||||
break;
|
||||
case HB_SET_DELETED :
|
||||
hb_retl( hb_set.HB_SET_DELETED );
|
||||
if( args > 1 ) hb_set.HB_SET_DELETED = set_logical( pArg2 );
|
||||
if( args > 1 ) hb_set.HB_SET_DELETED = set_logical( pArg2, hb_set.HB_SET_DELETED );
|
||||
break;
|
||||
case HB_SET_DELIMCHARS :
|
||||
if( hb_set.HB_SET_DELIMCHARS ) hb_retc( hb_set.HB_SET_DELIMCHARS );
|
||||
@@ -564,7 +564,7 @@ HB_FUNC( SET )
|
||||
break;
|
||||
case HB_SET_DELIMITERS :
|
||||
hb_retl( hb_set.HB_SET_DELIMITERS );
|
||||
if( args > 1 ) hb_set.HB_SET_DELIMITERS = set_logical( pArg2 );
|
||||
if( args > 1 ) hb_set.HB_SET_DELIMITERS = set_logical( pArg2, hb_set.HB_SET_DELIMITERS );
|
||||
break;
|
||||
case HB_SET_DEVICE :
|
||||
if( hb_set.HB_SET_DEVICE ) hb_retc( hb_set.HB_SET_DEVICE );
|
||||
@@ -580,7 +580,7 @@ HB_FUNC( SET )
|
||||
break;
|
||||
case HB_SET_EOF :
|
||||
hb_retl( hb_set.HB_SET_EOF );
|
||||
if( args > 1 ) hb_set.HB_SET_EOF = set_logical( pArg2 );
|
||||
if( args > 1 ) hb_set.HB_SET_EOF = set_logical( pArg2, hb_set.HB_SET_EOF );
|
||||
break;
|
||||
case HB_SET_EPOCH :
|
||||
hb_retni( hb_set.HB_SET_EPOCH );
|
||||
@@ -594,7 +594,7 @@ HB_FUNC( SET )
|
||||
break;
|
||||
case HB_SET_ESCAPE :
|
||||
hb_retl( hb_set.HB_SET_ESCAPE );
|
||||
if( args > 1 ) hb_set.HB_SET_ESCAPE = set_logical( pArg2 );
|
||||
if( args > 1 ) hb_set.HB_SET_ESCAPE = set_logical( pArg2, hb_set.HB_SET_ESCAPE );
|
||||
break;
|
||||
case HB_SET_EVENTMASK :
|
||||
hb_retni( hb_set.HB_SET_EVENTMASK );
|
||||
@@ -602,20 +602,20 @@ HB_FUNC( SET )
|
||||
break;
|
||||
case HB_SET_EXACT :
|
||||
hb_retl( hb_set.HB_SET_EXACT );
|
||||
if( args > 1 ) hb_set.HB_SET_EXACT = set_logical( pArg2 );
|
||||
if( args > 1 ) hb_set.HB_SET_EXACT = set_logical( pArg2, hb_set.HB_SET_EXACT );
|
||||
break;
|
||||
case HB_SET_EXCLUSIVE :
|
||||
hb_retl( hb_set.HB_SET_EXCLUSIVE );
|
||||
if( args > 1 ) hb_set.HB_SET_EXCLUSIVE = set_logical( pArg2 );
|
||||
if( args > 1 ) hb_set.HB_SET_EXCLUSIVE = set_logical( pArg2, hb_set.HB_SET_EXCLUSIVE );
|
||||
break;
|
||||
case HB_SET_EXIT :
|
||||
hb_retl( hb_set.HB_SET_EXIT );
|
||||
/* NOTE: Otherwise ReadExit() will always set the value. [vszakats] */
|
||||
if( pArg2 != NULL && !HB_IS_NIL( pArg2 ) ) hb_set.HB_SET_EXIT = set_logical( pArg2 );
|
||||
if( pArg2 != NULL && !HB_IS_NIL( pArg2 ) ) hb_set.HB_SET_EXIT = set_logical( pArg2, hb_set.HB_SET_EXIT );
|
||||
break;
|
||||
case HB_SET_EXTRA :
|
||||
hb_retl( hb_set.HB_SET_EXTRA );
|
||||
if( args > 1 ) hb_set.HB_SET_EXTRA = set_logical( pArg2 );
|
||||
if( args > 1 ) hb_set.HB_SET_EXTRA = set_logical( pArg2, hb_set.HB_SET_EXTRA );
|
||||
break;
|
||||
case HB_SET_EXTRAFILE :
|
||||
if( hb_set.HB_SET_EXTRAFILE ) hb_retc( hb_set.HB_SET_EXTRAFILE );
|
||||
@@ -635,7 +635,7 @@ HB_FUNC( SET )
|
||||
hb_set.HB_SET_EXTRAFILE = set_string( pArg2, hb_set.HB_SET_EXTRAFILE );
|
||||
}
|
||||
}
|
||||
if( args > 2 ) bFlag = set_logical( pArg3 );
|
||||
if( args > 2 ) bFlag = set_logical( pArg3, FALSE );
|
||||
else bFlag = FALSE;
|
||||
if( args > 1 && ! HB_IS_NIL( pArg2 ) )
|
||||
{
|
||||
@@ -648,15 +648,15 @@ HB_FUNC( SET )
|
||||
break;
|
||||
case HB_SET_FIXED :
|
||||
hb_retl( hb_set.HB_SET_FIXED );
|
||||
if( args > 1 ) hb_set.HB_SET_FIXED = set_logical( pArg2 );
|
||||
if( args > 1 ) hb_set.HB_SET_FIXED = set_logical( pArg2, hb_set.HB_SET_FIXED );
|
||||
break;
|
||||
case HB_SET_INSERT :
|
||||
hb_retl( hb_set.HB_SET_INSERT );
|
||||
if( args > 1 ) hb_set.HB_SET_INSERT = set_logical( pArg2 );
|
||||
if( args > 1 ) hb_set.HB_SET_INSERT = set_logical( pArg2, hb_set.HB_SET_INSERT );
|
||||
break;
|
||||
case HB_SET_INTENSITY :
|
||||
hb_retl( hb_set.HB_SET_INTENSITY );
|
||||
if( args > 1 ) hb_set.HB_SET_INTENSITY = set_logical( pArg2 );
|
||||
if( args > 1 ) hb_set.HB_SET_INTENSITY = set_logical( pArg2, hb_set.HB_SET_INTENSITY );
|
||||
break;
|
||||
case HB_SET_MARGIN :
|
||||
hb_retni( hb_set.HB_SET_MARGIN );
|
||||
@@ -680,7 +680,7 @@ HB_FUNC( SET )
|
||||
break;
|
||||
case HB_SET_MCENTER :
|
||||
hb_retl( hb_set.HB_SET_MCENTER );
|
||||
if( args > 1 ) hb_set.HB_SET_MCENTER = set_logical( pArg2 );
|
||||
if( args > 1 ) hb_set.HB_SET_MCENTER = set_logical( pArg2, hb_set.HB_SET_MCENTER );
|
||||
break;
|
||||
case HB_SET_MESSAGE :
|
||||
hb_retni( hb_set.HB_SET_MESSAGE );
|
||||
@@ -693,17 +693,24 @@ HB_FUNC( SET )
|
||||
}
|
||||
break;
|
||||
case HB_SET_MFILEEXT :
|
||||
if( hb_set.HB_SET_MFILEEXT ) hb_retc( hb_set.HB_SET_MFILEEXT );
|
||||
else hb_retc( NULL );
|
||||
hb_retc( hb_set.HB_SET_MFILEEXT );
|
||||
if( args > 1 ) hb_set.HB_SET_MFILEEXT = set_string( pArg2, hb_set.HB_SET_MFILEEXT );
|
||||
break;
|
||||
case HB_SET_OPTIMIZE :
|
||||
hb_retl( hb_set.HB_SET_OPTIMIZE );
|
||||
if( args > 1 ) hb_set.HB_SET_OPTIMIZE = set_logical( pArg2 );
|
||||
if( args > 1 ) hb_set.HB_SET_OPTIMIZE = set_logical( pArg2, hb_set.HB_SET_OPTIMIZE );
|
||||
break;
|
||||
case HB_SET_FORCEOPT :
|
||||
hb_retl( hb_set.HB_SET_FORCEOPT );
|
||||
if( args > 1 ) hb_set.HB_SET_FORCEOPT = set_logical( pArg2, hb_set.HB_SET_FORCEOPT );
|
||||
break;
|
||||
case HB_SET_STRICTREAD :
|
||||
hb_retl( hb_set.HB_SET_STRICTREAD );
|
||||
if( args > 1 ) hb_set.HB_SET_STRICTREAD = set_logical( pArg2 );
|
||||
if( args > 1 ) hb_set.HB_SET_STRICTREAD = set_logical( pArg2, hb_set.HB_SET_STRICTREAD );
|
||||
break;
|
||||
case HB_SET_HARDCOMMIT :
|
||||
hb_retl( hb_set.HB_SET_HARDCOMMIT );
|
||||
if( args > 1 ) hb_set.HB_SET_HARDCOMMIT = set_logical( pArg2, hb_set.HB_SET_HARDCOMMIT );
|
||||
break;
|
||||
case HB_SET_PATH :
|
||||
if( hb_set.HB_SET_PATH ) hb_retc( hb_set.HB_SET_PATH );
|
||||
@@ -717,13 +724,13 @@ HB_FUNC( SET )
|
||||
break;
|
||||
case HB_SET_PRINTER :
|
||||
hb_retl( hb_set.HB_SET_PRINTER );
|
||||
if( args > 1 ) hb_set.HB_SET_PRINTER = set_logical( pArg2 );
|
||||
if( args > 1 ) hb_set.HB_SET_PRINTER = set_logical( pArg2, hb_set.HB_SET_PRINTER );
|
||||
break;
|
||||
case HB_SET_PRINTFILE :
|
||||
if( hb_set.HB_SET_PRINTFILE ) hb_retc( hb_set.HB_SET_PRINTFILE );
|
||||
else hb_retc( NULL );
|
||||
if( args > 1 && ! HB_IS_NIL( pArg2 ) ) hb_set.HB_SET_PRINTFILE = set_string( pArg2, hb_set.HB_SET_PRINTFILE );
|
||||
if( args > 2 ) bFlag = set_logical( pArg3 );
|
||||
if( args > 2 ) bFlag = set_logical( pArg3, FALSE );
|
||||
else bFlag = FALSE;
|
||||
if( args > 1 && ! HB_IS_NIL( pArg2 ) )
|
||||
{
|
||||
@@ -735,15 +742,15 @@ HB_FUNC( SET )
|
||||
break;
|
||||
case HB_SET_SCOREBOARD :
|
||||
hb_retl( hb_set.HB_SET_SCOREBOARD );
|
||||
if( args > 1 ) hb_set.HB_SET_SCOREBOARD = set_logical( pArg2 );
|
||||
if( args > 1 ) hb_set.HB_SET_SCOREBOARD = set_logical( pArg2, hb_set.HB_SET_SCOREBOARD );
|
||||
break;
|
||||
case HB_SET_SCROLLBREAK:
|
||||
hb_retl( hb_set.HB_SET_SCROLLBREAK );
|
||||
if( args > 1 ) hb_set.HB_SET_SCROLLBREAK = set_logical( pArg2 );
|
||||
if( args > 1 ) hb_set.HB_SET_SCROLLBREAK = set_logical( pArg2, hb_set.HB_SET_SCROLLBREAK );
|
||||
break;
|
||||
case HB_SET_SOFTSEEK :
|
||||
hb_retl( hb_set.HB_SET_SOFTSEEK );
|
||||
if( args > 1 ) hb_set.HB_SET_SOFTSEEK = set_logical( pArg2 );
|
||||
if( args > 1 ) hb_set.HB_SET_SOFTSEEK = set_logical( pArg2, hb_set.HB_SET_SOFTSEEK );
|
||||
break;
|
||||
case HB_SET_TYPEAHEAD :
|
||||
hb_retni( hb_set.HB_SET_TYPEAHEAD );
|
||||
@@ -761,7 +768,7 @@ HB_FUNC( SET )
|
||||
break;
|
||||
case HB_SET_UNIQUE :
|
||||
hb_retl( hb_set.HB_SET_UNIQUE );
|
||||
if( args > 1 ) hb_set.HB_SET_UNIQUE = set_logical( pArg2 );
|
||||
if( args > 1 ) hb_set.HB_SET_UNIQUE = set_logical( pArg2, hb_set.HB_SET_UNIQUE );
|
||||
break;
|
||||
case HB_SET_VIDEOMODE :
|
||||
hb_retni( hb_set.HB_SET_VIDEOMODE );
|
||||
@@ -775,7 +782,7 @@ HB_FUNC( SET )
|
||||
break;
|
||||
case HB_SET_WRAP :
|
||||
hb_retl( hb_set.HB_SET_WRAP );
|
||||
if( args > 1 ) hb_set.HB_SET_WRAP = set_logical( pArg2 );
|
||||
if( args > 1 ) hb_set.HB_SET_WRAP = set_logical( pArg2, hb_set.HB_SET_WRAP );
|
||||
break;
|
||||
case HB_SET_LANGUAGE :
|
||||
hb_retc( hb_langID() );
|
||||
@@ -786,7 +793,7 @@ HB_FUNC( SET )
|
||||
break;
|
||||
case HB_SET_IDLEREPEAT :
|
||||
hb_retl( hb_set.HB_SET_IDLEREPEAT );
|
||||
if( args > 1 ) hb_set.HB_SET_IDLEREPEAT = set_logical( pArg2 );
|
||||
if( args > 1 ) hb_set.HB_SET_IDLEREPEAT = set_logical( pArg2, hb_set.HB_SET_IDLEREPEAT );
|
||||
break;
|
||||
case HB_SET_FILECASE :
|
||||
hb_retni( hb_set.HB_SET_FILECASE );
|
||||
@@ -926,6 +933,8 @@ void hb_setInitialize( void )
|
||||
hb_set.HB_SET_EXTRAFILE = NULL;
|
||||
hb_set.hb_set_extrahan = FS_ERROR;
|
||||
hb_set.HB_SET_FIXED = FALSE;
|
||||
hb_set.HB_SET_FORCEOPT = FALSE;
|
||||
hb_set.HB_SET_HARDCOMMIT = TRUE;
|
||||
hb_set.HB_SET_IDLEREPEAT = TRUE;
|
||||
hb_set.HB_SET_INSERT = FALSE;
|
||||
hb_set.HB_SET_INTENSITY = TRUE;
|
||||
@@ -935,7 +944,7 @@ void hb_setInitialize( void )
|
||||
hb_set.HB_SET_MESSAGE = 0;
|
||||
hb_set.HB_SET_MFILEEXT = ( char * ) hb_xgrab( 1 );
|
||||
hb_set.HB_SET_MFILEEXT[ 0 ] = '\0';
|
||||
hb_set.HB_SET_OPTIMIZE = FALSE;
|
||||
hb_set.HB_SET_OPTIMIZE = TRUE;
|
||||
hb_set.HB_SET_PATH = ( char * ) hb_xgrab( 1 );
|
||||
hb_set.HB_SET_PATH[ 0 ] = '\0';
|
||||
hb_set.HB_SET_PRINTER = FALSE;
|
||||
|
||||
@@ -120,7 +120,8 @@ HB_EXPORT PHB_DYNS hb_dynsymNew( PHB_SYMB pSymbol ) /* creates a new dynamic
|
||||
|
||||
if( pDynSym ) /* If name exists */
|
||||
{
|
||||
if( !pDynSym->pSymbol->value.pFunPtr && pSymbol->value.pFunPtr ) /* The DynSym existed */
|
||||
if( ( !pDynSym->pSymbol->value.pFunPtr && pSymbol->value.pFunPtr ) ||
|
||||
( pSymbol->scope.value & HB_FS_LOCAL ) != 0 )
|
||||
{
|
||||
pDynSym->pSymbol = pSymbol;
|
||||
#ifndef HB_NO_PROFILER
|
||||
|
||||
@@ -5313,6 +5313,26 @@ static double hb_vmTopNumber( void )
|
||||
/*
|
||||
* Functions to mange module symbols
|
||||
*/
|
||||
char * hb_vmFindModuleSymbolName( PHB_SYMB pSym )
|
||||
{
|
||||
if( pSym )
|
||||
{
|
||||
PHB_SYMBOLS pLastSymbols = s_pSymbols;
|
||||
|
||||
while( pLastSymbols )
|
||||
{
|
||||
if( pLastSymbols->fActive &&
|
||||
pSym >= pLastSymbols->pModuleSymbols &&
|
||||
pSym < pLastSymbols->pModuleSymbols + pLastSymbols->uiModuleSymbols )
|
||||
{
|
||||
return pLastSymbols->szModuleName;
|
||||
}
|
||||
pLastSymbols = pLastSymbols->pNext;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static PHB_SYMBOLS hb_vmFindFreeModule( PHB_SYMB pSymbols, USHORT uiSymbols,
|
||||
char * szModuleName, ULONG ulID )
|
||||
{
|
||||
@@ -5661,15 +5681,25 @@ hb_vmRegisterSymbols( PHB_SYMB pModuleSymbols, USHORT uiSymbols, char * szModule
|
||||
/*
|
||||
* module symbols initialization with extended information
|
||||
*/
|
||||
HB_EXPORT PHB_SYMB hb_vmProcessSymbolsExt( PHB_SYMB pSymbols, USHORT uiModuleSymbols,
|
||||
char * szModuleName, ULONG ulID,
|
||||
USHORT uiPcodeMin, USHORT uiPcodeMax )
|
||||
HB_EXPORT PHB_SYMB hb_vmProcessSymbolsEx( PHB_SYMB pSymbols, USHORT uiModuleSymbols,
|
||||
char * szModuleName, ULONG ulID,
|
||||
USHORT uiPCodeVer )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_vmProcessSymbols(%p,%hu,%s,%lu,%hu,%hu)", pSymbols, uiModuleSymbols, szModuleName, ulID, uiPcodeMin, uiPcodeMax));
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_vmProcessSymbolsEx(%p,%hu,%s,%lu,%hu)", pSymbols, uiModuleSymbols, szModuleName, ulID, uiPcodeVer));
|
||||
|
||||
/* TODO: verify suported PCODE versions */
|
||||
HB_SYMBOL_UNUSED( uiPcodeMin );
|
||||
HB_SYMBOL_UNUSED( uiPcodeMax );
|
||||
if( uiPCodeVer != 0 )
|
||||
{
|
||||
if( uiPCodeVer > HB_PCODE_VER || /* the module is compiled with newer compiler version then HVM */
|
||||
uiPCodeVer < HB_PCODE_VER_MIN ) /* the module is compiled with olde compiler version */
|
||||
{
|
||||
char szPCode[ 10 ];
|
||||
sprintf( szPCode, "%i.%i", uiPCodeVer>>8, uiPCodeVer &0xff );
|
||||
|
||||
hb_errInternal( HB_EI_ERRUNRECOV, "Module '%s'\n"
|
||||
"was compiled with unsupported PCODE version %s.\n"
|
||||
"Please recompile.", szModuleName, szPCode );
|
||||
}
|
||||
}
|
||||
|
||||
return hb_vmRegisterSymbols( pSymbols, uiModuleSymbols, szModuleName, ulID,
|
||||
s_fCloneSym, s_fCloneSym )->pModuleSymbols;
|
||||
|
||||
@@ -103,14 +103,13 @@ PHB_SYMB hb_vmProcessSymbols( PHB_SYMB pSymbols, USHORT uiSymbols )
|
||||
}
|
||||
|
||||
/* module symbols initialization */
|
||||
PHB_SYMB hb_vmProcessSymbolsExt( PHB_SYMB pSymbols, USHORT uiSymbols, char * szModuleName, ULONG ulID, USHORT uiPcodeMin, USHORT uiPcodeMax ) /* module symbols initialization with extended information */
|
||||
PHB_SYMB hb_vmProcessSymbolsEx( PHB_SYMB pSymbols, USHORT uiSymbols, char * szModuleName, ULONG ulID, USHORT uiPcodeVer ) /* module symbols initialization with extended information */
|
||||
{
|
||||
FARPROC pProcessSymbols = GetProcAddress( GetModuleHandle( NULL ),
|
||||
"_hb_vmProcessSymbolsExt" );
|
||||
"_hb_vmProcessSymbolsEx" );
|
||||
if( pProcessSymbols )
|
||||
return ( ( VM_PROCESS_SYMBOLS_EXT ) pProcessSymbols )
|
||||
( pSymbols, uiSymbols, szModuleName,
|
||||
ulID, uiPcodeMin, uiPcodeMax );
|
||||
return ( ( VM_PROCESS_SYMBOLS_EX ) pProcessSymbols )
|
||||
( pSymbols, uiSymbols, szModuleName, ulID, uiPcodeVer );
|
||||
/* else
|
||||
* may we issue an error ? */
|
||||
|
||||
|
||||
@@ -72,6 +72,7 @@
|
||||
#include "hbapicls.h"
|
||||
#include "hbapiitm.h"
|
||||
#include "hbstack.h"
|
||||
#include "hbvm.h"
|
||||
|
||||
#ifdef HB_EXTENSION
|
||||
|
||||
@@ -93,14 +94,14 @@ HB_FUNC( PROCNAME )
|
||||
|
||||
HB_FUNC( PROCLINE )
|
||||
{
|
||||
long lOffset = hb_stackBaseOffset();
|
||||
int iLevel = hb_parni( 1 ) + 1; /* we are already inside ProcName() */
|
||||
PHB_ITEM * pBase = hb_stack.pBase;
|
||||
|
||||
while( ( iLevel-- > 0 ) && pBase != hb_stack.pItems )
|
||||
pBase = hb_stack.pItems + ( *pBase )->item.asSymbol.stackbase;
|
||||
while( iLevel-- > 0 && lOffset > 1 )
|
||||
lOffset = hb_stackItem( lOffset - 1 )->item.asSymbol.stackbase + 1;
|
||||
|
||||
if( iLevel < 0 )
|
||||
hb_retni( ( *pBase )->item.asSymbol.lineno );
|
||||
hb_retni( hb_stackItem( lOffset - 1 )->item.asSymbol.lineno );
|
||||
else
|
||||
hb_retni( 0 );
|
||||
}
|
||||
@@ -112,7 +113,45 @@ HB_FUNC( PROCLINE )
|
||||
|
||||
HB_FUNC( PROCFILE )
|
||||
{
|
||||
hb_retc( NULL );
|
||||
PHB_SYMB pLocalSym = NULL;
|
||||
PHB_SYMB pSym = NULL;
|
||||
|
||||
if( ISSYMBOL( 1 ) )
|
||||
{
|
||||
pSym = hb_itemGetSymbol( hb_param( 1, HB_IT_SYMBOL ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
long lOffset = hb_stackBaseOffset();
|
||||
int iLevel = hb_parni( 1 ) + 1; /* we are already inside ProcFile() */
|
||||
|
||||
while( iLevel-- > 0 && lOffset > 1 )
|
||||
lOffset = hb_stackItem( lOffset - 1 )->item.asSymbol.stackbase + 1;
|
||||
|
||||
if( iLevel < 0 )
|
||||
{
|
||||
pSym = hb_stackItem( lOffset - 1 )->item.asSymbol.value;
|
||||
|
||||
if( pSym == &hb_symEval || strcmp( pSym->szName, "EVAL" ) == 0 )
|
||||
{
|
||||
PHB_ITEM pSelf = hb_stackItem( lOffset );
|
||||
|
||||
if( HB_IS_BLOCK( pSelf ) )
|
||||
pLocalSym = pSelf->item.asBlock.value->pDefSymb;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if( !pLocalSym && pSym )
|
||||
{
|
||||
if( ( pSym->scope.value & HB_FS_LOCAL ) != 0 )
|
||||
pLocalSym = pSym;
|
||||
else if( pSym->pDynSym &&
|
||||
( pSym->pDynSym->pSymbol->scope.value & HB_FS_LOCAL ) != 0 )
|
||||
pLocalSym = pSym->pDynSym->pSymbol;
|
||||
}
|
||||
|
||||
hb_retc( hb_vmFindModuleSymbolName( pLocalSym ) );
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -120,64 +159,60 @@ HB_FUNC( PROCFILE )
|
||||
/* NOTE: szName size must be an at least:
|
||||
HB_SYMBOL_NAME_LEN + HB_SYMBOL_NAME_LEN + 2 [vszakats] */
|
||||
|
||||
char * hb_procname( int iLevel, char * szName, BOOL bSkipBlock )
|
||||
char * hb_procname( int iLevel, char * szName, BOOL bSkipBlock )
|
||||
{
|
||||
PHB_ITEM * pBase = hb_stack.pBase;
|
||||
char * szTstName;
|
||||
BOOL lcb = FALSE;
|
||||
int iLev = iLevel;
|
||||
long lOffset = hb_stackBaseOffset(), lPrevOffset = 0;
|
||||
PHB_ITEM pBase, pSelf;
|
||||
|
||||
while( ( iLevel-- > 0 ) && pBase != hb_stack.pItems )
|
||||
pBase = hb_stack.pItems + ( *pBase )->item.asSymbol.stackbase;
|
||||
|
||||
szTstName = ( *pBase )->item.asSymbol.value->szName ;
|
||||
|
||||
if( bSkipBlock )
|
||||
{
|
||||
/* Is it an inline method ? if so back one more ... */
|
||||
if( ( strcmp( szTstName, "__EVAL" ) == 0 ) && pBase != hb_stack.pItems )
|
||||
{
|
||||
pBase = hb_stack.pItems + ( *pBase )->item.asSymbol.stackbase;
|
||||
lcb = TRUE ;
|
||||
}
|
||||
}
|
||||
while( iLevel-- > 0 && lOffset > 1 )
|
||||
lOffset = hb_stackItem( lOffset - 1 )->item.asSymbol.stackbase + 1;
|
||||
|
||||
if( iLevel < 0 )
|
||||
{
|
||||
if( ( *( pBase + 1 ) )->type == HB_IT_ARRAY ) /* it is a method name */
|
||||
if( bSkipBlock && lOffset > 1 )
|
||||
{
|
||||
strcpy( szName, hb_objGetRealClsName( *( pBase + 1 ), ( *pBase )->item.asSymbol.value->szName ) );
|
||||
char * szTstName = hb_stackItem( lOffset - 1 )->item.asSymbol.value->szName ;
|
||||
/* Is it an inline method ? if so back one more ... */
|
||||
if( strcmp( szTstName, "__EVAL" ) == 0 )
|
||||
{
|
||||
lPrevOffset = lOffset;
|
||||
lOffset = hb_stackItem( lOffset - 1 )->item.asSymbol.stackbase + 1;
|
||||
}
|
||||
}
|
||||
|
||||
if( lcb )
|
||||
pBase = hb_stackItem( lOffset -1 );
|
||||
pSelf = hb_stackItem( lOffset );
|
||||
if( HB_IS_OBJECT( pSelf ) ) /* it is a method name */
|
||||
{
|
||||
strcpy( szName, hb_objGetRealClsName( pSelf, pBase->item.asSymbol.value->szName ) );
|
||||
|
||||
if( lPrevOffset )
|
||||
strcat( szName, ":(b)" );
|
||||
else
|
||||
strcat( szName, ":" );
|
||||
|
||||
strcat( szName, ( *pBase )->item.asSymbol.value->szName );
|
||||
strcat( szName, pBase->item.asSymbol.value->szName );
|
||||
}
|
||||
else
|
||||
{
|
||||
if( lcb ) /* Back to standart code block */
|
||||
if( lPrevOffset ) /* Back to standart code block */
|
||||
{
|
||||
pBase = hb_stack.pBase;
|
||||
while( ( iLev-- > 0 ) && pBase != hb_stack.pItems )
|
||||
pBase = hb_stack.pItems + ( *pBase )->item.asSymbol.stackbase;
|
||||
lOffset = lPrevOffset;
|
||||
pBase = hb_stackItem( lOffset -1 );
|
||||
pSelf = hb_stackItem( lOffset );
|
||||
}
|
||||
|
||||
if( ( strcmp( ( *pBase )->item.asSymbol.value->szName, "EVAL" ) == 0 ) )
|
||||
if( strcmp( pBase->item.asSymbol.value->szName, "EVAL" ) == 0 )
|
||||
{
|
||||
strcpy( szName, "(b)" );
|
||||
if( ( *( pBase + 1 ) )->type == HB_IT_BLOCK )
|
||||
{
|
||||
PHB_SYMB pSymb;
|
||||
pSymb = ( *( pBase + 1 ) )->item.asBlock.value->pDefSymb;
|
||||
strcat( szName, pSymb->szName );
|
||||
}
|
||||
|
||||
if( HB_IS_BLOCK( pSelf ) )
|
||||
strcat( szName, pSelf->item.asBlock.value->pDefSymb->szName );
|
||||
else
|
||||
strcat( szName, ( *pBase )->item.asSymbol.value->szName );
|
||||
strcat( szName, pBase->item.asSymbol.value->szName );
|
||||
}
|
||||
else
|
||||
strcpy( szName, ( *pBase )->item.asSymbol.value->szName );
|
||||
strcpy( szName, pBase->item.asSymbol.value->szName );
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -185,4 +220,3 @@ char * hb_procname( int iLevel, char * szName, BOOL bSkipBlock )
|
||||
|
||||
return szName;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user