ChangeLog: 19990704-16:20

This commit is contained in:
Ryszard Glab
1999-07-04 15:28:07 +00:00
parent 13bc1c4449
commit 86fb7771e2
18 changed files with 117 additions and 120 deletions

View File

@@ -1,3 +1,36 @@
19990704-16:20 Ryszard Glab <rglab@imid.med.pl>
* include/init.h
* changed definitions of HB_INIT_SYMBOLS_* and HB_CALL_ON_STARTUP_*
to make it more consistent. The symbol table should be defined now:
HB_INIT_SYMBOLS_BEGIN( moduleName__InitSymbols )
{ "FIRST", FS_PUBLIC, HB_FIRST, 0},
/* more symbols */
HB_INIT_SYMBOLS_END( moduleName__InitSymbols );
* source/compiler/harbour.y
* changed generated C code to support new HB_INIT_SYMBOLS_* macros
* source/rtl/arrays.c
* source/rtl/classes.c
* source/rtl/console.c
* source/rtl/dates.c
* source/rtl/descend.c
* source/rtl/dir.c
* source/rtl/environ.c
* source/rtl/files.c
* source/rtl/hardcr.c
* source/rtl/math.c
* source/rtl/mtran.c
* source/rtl/set.c
* source/rtl/strings.c
* source/rtl/transfrm.c
* changed to use he new definition of HB_INIT_SYMBOLS_* and
HB_CALL_ON_STARTUP_* macros
* tests/working/box.prg
* changed "BOX.CH" to lowercase (Linux is case-sensitive OS)
19990702-09:08 Alexander Kresin
* source\hbpp\hbpp.c
* Changed logic for fixing some problems

View File

@@ -12,81 +12,89 @@ void ProcessSymbols( SYMBOL * pSymbols, WORD wSymbols );
#ifdef HARBOUR_STRICT_ANSI_C
#define HB_INIT_SYMBOLS_BEGIN( func ) \
static SYMBOL symbols[] = {
#define HB_INIT_SYMBOLS_END( func ) }; }; \
void func( void ) \
{ \
ProcessSymbols( symbols, sizeof( symbols ) / sizeof( SYMBOL ) ); \
}
#define HB_INIT_SYMBOLS_END( func )
#define HB_CALL_ON_STARTUP_BEGIN( func ) func( void )
#define HB_CALL_ON_STARTUP_END( func )
#define HB_CALL_ON_STARTUP_BEGIN( func ) func( void ) {
#define HB_CALL_ON_STARTUP_END( func ) }
#else /* HARBOUR_STRICT_ANSI_C */
#ifdef __GNUC__
#define HB_INIT_SYMBOLS_BEGIN( func ) \
static SYMBOL symbols[] = {
#define HB_INIT_SYMBOLS_END( func ) }; \
static void __attribute__ ((constructor)) func( void ) \
{ \
ProcessSymbols( symbols, sizeof( symbols ) / sizeof( SYMBOL ) ); \
}
#define HB_INIT_SYMBOLS_END( func )
#define HB_CALL_ON_STARTUP_BEGIN( func ) \
static void __attribute__ ((constructor)) func( void )
static void __attribute__ ((constructor)) func( void ) {
#define HB_CALL_ON_STARTUP_END( func )
#define HB_CALL_ON_STARTUP_END( func ) }
#endif
#ifdef __BORLANDC__
#define HB_INIT_SYMBOLS_BEGIN( func ) \
static SYMBOL symbols[] = {
#define HB_INIT_SYMBOLS_END( func ) }; \
static void func( void ) \
{ \
ProcessSymbols( symbols, sizeof( symbols ) / sizeof( SYMBOL ) ); \
}
#define HB_INIT_SYMBOLS_END( func )
#define HB_CALL_ON_STARTUP_BEGIN( func ) \
static void func( void )
static void func( void ) {
#define HB_CALL_ON_STARTUP_END( func )
#define HB_CALL_ON_STARTUP_END( func ) }
#endif
#if (defined(_MSC_VER) || defined(__IBMCPP__))
#define HB_INIT_SYMBOLS_BEGIN( func ) \
static int func( void ) \
{ \
ProcessSymbols( symbols, sizeof( symbols ) / sizeof( SYMBOL ) ); \
return 1; \
}
static SYMBOL symbols[] = {
#define HB_INIT_SYMBOLS_END( func ) static int static_int_##func = func();
#define HB_INIT_SYMBOLS_END( func ) }; \
static int func( void ) \
{ \
ProcessSymbols( symbols, sizeof( symbols ) / sizeof( SYMBOL ) ); \
return 1; \
}; \
static int static_int_##func = func()
#define HB_CALL_ON_STARTUP_BEGIN( func ) \
static int func( void ); \
static int static_int_##func = func(); \
static int func( void )
static int func( void ) {
#define HB_CALL_ON_STARTUP_END( func ) return 1;
#define HB_CALL_ON_STARTUP_END( func ) return 1 }; \
static int static_int_##func = func()
#endif
#ifdef __WATCOMC__
#define HB_INIT_SYMBOLS_BEGIN( func ) \
static int func( void ) \
{ \
ProcessSymbols( symbols, sizeof( symbols ) / sizeof( SYMBOL ) ); \
return 1; \
}
#define HB_INIT_SYMBOLS_END( func ) static int static_int_##func = func();
static SYMBOL symbols[] = {
#define HB_INIT_SYMBOLS_END( func ) }; \
static int func( void ) \
{ \
ProcessSymbols( symbols, sizeof( symbols ) / sizeof( SYMBOL ) ); \
return 1; \
}; \
static int static_int_##func = func()
#define HB_CALL_ON_STARTUP_BEGIN( func ) \
static int func( void ); \
static int static_int_##func = func(); \
static int func( void )
static int func( void ) {
#define HB_CALL_ON_STARTUP_END( func ) return 1;
#define HB_CALL_ON_STARTUP_END( func ) return 1; }; \
static int static_int_##func = func()
#endif
#endif /*HARBOUR_STRICT_ANSI_C */

View File

@@ -2070,7 +2070,10 @@ void GenCCode( char *szFileName, char *szName ) /* generates the C languag
}
/* writes the symbol table */
fprintf( yyc, "\nstatic SYMBOL symbols[] = { " );
/* fprintf( yyc, "\nstatic SYMBOL symbols[] = { " ); */
/* Generate the wrapper that will initialize local symbol table
*/
fprintf( yyc, "\n\nHB_INIT_SYMBOLS_BEGIN( %s__InitSymbols )\n", symbols.pFirst->szName );
if( ! _iStartProc )
pSym = pSym->pNext; /* starting procedure is always the first symbol */
@@ -2111,16 +2114,12 @@ void GenCCode( char *szFileName, char *szName ) /* generates the C languag
}
if( pSym != symbols.pLast )
fprintf( yyc, ",\n " );
fprintf( yyc, ",\n" );
pSym = pSym->pNext;
}
fprintf( yyc, " };\n\n" );
/* Generate function that will initialize local symbol table
*/
fprintf( yyc, "HB_INIT_SYMBOLS_BEGIN( %s__InitSymbols );\n", symbols.pFirst->szName );
fprintf( yyc, "HB_INIT_SYMBOLS_END( %s__InitSymbols )\n\n", symbols.pFirst->szName );
/* fprintf( yyc, " };\n\n" ); */
fprintf( yyc, "\nHB_INIT_SYMBOLS_END( %s__InitSymbols );\n", symbols.pFirst->szName );
fprintf( yyc, "#pragma startup %s__InitSymbols\n\n", symbols.pFirst->szName );
/* Generate functions data

View File

@@ -21,7 +21,7 @@ HARBOUR HB_ASIZE(void);
HARBOUR HB_ASORT(void);
HARBOUR HB_ATAIL(void);
static SYMBOL symbols[] = {
HB_INIT_SYMBOLS_BEGIN( Arrays__InitSymbols )
{ "ACLONE", FS_PUBLIC, HB_ACLONE , 0 },
{ "ACOPY", FS_PUBLIC, HB_ACOPY , 0 },
{ "ADEL", FS_PUBLIC, HB_ADEL , 0 },
@@ -33,8 +33,8 @@ static SYMBOL symbols[] = {
{ "ASIZE", FS_PUBLIC, HB_ASIZE , 0 },
{ "ASORT", FS_PUBLIC, HB_ASORT , 0 },
{ "ATAIL", FS_PUBLIC, HB_ATAIL , 0 },
};
HB_INIT_SYMBOLS_END( Arrays__InitSymbols );
#pragma startup Arrays__InitSymbols
PHB_ITEM hb_itemNew( PHB_ITEM );
PHB_ITEM hb_itemArrayPut( PHB_ITEM , ULONG , PHB_ITEM );
@@ -46,10 +46,6 @@ static char *szBoundError = "Bound error: Array access";
static char *szArgumentError = "Argument error: incorrect type";
HB_INIT_SYMBOLS_BEGIN( Arrays__InitSymbols );
HB_INIT_SYMBOLS_END( Arrays__InitSymbols )
#pragma startup Arrays__InitSymbols
/*
* Internal
*/

View File

@@ -96,7 +96,7 @@ HARBOUR HB_OMODMETHOD( void );
/* Exported symbols of both classes.c and objfunc.prg */
static SYMBOL symbols[] = {
HB_INIT_SYMBOLS_BEGIN( Classes__InitSymbols )
{ "AODATA" , FS_PUBLIC, HB_AODATA , 0 },
{ "AOGET" , FS_PUBLIC, HB_AOGET , 0 },
{ "AOMETHOD" , FS_PUBLIC, HB_AOMETHOD , 0 },
@@ -120,11 +120,7 @@ static SYMBOL symbols[] = {
{ "OMODINLINE" , FS_PUBLIC, HB_OMODINLINE , 0 },
{ "OMODMETHOD" , FS_PUBLIC, HB_OMODMETHOD , 0 },
{ "OSEND" , FS_PUBLIC, HB_OSEND , 0 }
};
HB_INIT_SYMBOLS_BEGIN( Classes__InitSymbols );
HB_INIT_SYMBOLS_END( Classes__InitSymbols )
HB_INIT_SYMBOLS_END( Classes__InitSymbols );
#pragma startup Classes__InitSymbols
/*

View File

@@ -57,7 +57,7 @@ HARBOUR HB_SETPRC( void );
HARBOUR HB_QOUT( void );
HARBOUR HB_QQOUT( void );
static SYMBOL symbols[] = {
HB_INIT_SYMBOLS_BEGIN( Console__InitSymbols )
{ "__ACCEPT" , FS_PUBLIC, HB___ACCEPT , 0 },
{ "__EJECT" , FS_PUBLIC, HB___EJECT , 0 },
{ "DEVOUT" , FS_PUBLIC, HB_DEVOUT , 0 },
@@ -77,18 +77,13 @@ static SYMBOL symbols[] = {
{ "SETPRC" , FS_PUBLIC, HB_SETPRC , 0 },
{ "QOUT" , FS_PUBLIC, HB_QOUT , 0 },
{ "QQOUT" , FS_PUBLIC, HB_QQOUT , 0 }
};
HB_INIT_SYMBOLS_BEGIN( Console__InitSymbols );
HB_INIT_SYMBOLS_END( Console__InitSymbols )
HB_INIT_SYMBOLS_END( Console__InitSymbols );
#pragma startup Console__InitSymbols
static unsigned short dev_row, dev_col, p_row, p_col;
static char CrLf [ CRLF_BUFFER_LEN ];
HB_CALL_ON_STARTUP_BEGIN( InitializeConsole )
{
#if defined(OS_DOS_COMPATIBLE)
CrLf [0] = 13;
CrLf [1] = 10;
@@ -107,8 +102,7 @@ HB_CALL_ON_STARTUP_BEGIN( InitializeConsole )
dev_col = 0;
#endif
p_row = p_col = 0;
HB_CALL_ON_STARTUP_END( InitializeConsole )
}
HB_CALL_ON_STARTUP_END( InitializeConsole );
#pragma startup InitializeConsole
USHORT hb_max_row( void )

View File

@@ -39,14 +39,12 @@ HARBOUR HB_STOD( void );
HARBOUR HB_TIME( void );
HARBOUR HB_YEAR( void );
static SYMBOL symbols[] = {
HB_INIT_SYMBOLS_BEGIN( Dates__InitSymbols )
{ "STOD", FS_PUBLIC, HB_STOD, 0 }
}; /* rest of the functions is pulled automatically in initsymb.c */
HB_INIT_SYMBOLS_BEGIN( Dates__InitSymbols );
HB_INIT_SYMBOLS_END( Dates__InitSymbols )
HB_INIT_SYMBOLS_END( Dates__InitSymbols );
#pragma startup Dates__InitSymbols
/* rest of the functions is pulled automatically in initsymb.c */
double hb__seconds( void )
{

View File

@@ -11,12 +11,9 @@ extern STACK stack;
HARBOUR HB_DESCEND(void);
static SYMBOL symbols[] = {
HB_INIT_SYMBOLS_BEGIN( Descend__InitSymbols )
{ "DESCEND", FS_PUBLIC, HB_DESCEND, 0 }
};
HB_INIT_SYMBOLS_BEGIN( Descend__InitSymbols );
HB_INIT_SYMBOLS_END( Descend__InitSymbols )
HB_INIT_SYMBOLS_END( Descend__InitSymbols );
#pragma Descend__InitSymbols
char *hb_strdescend( char *string )

View File

@@ -87,12 +87,9 @@
HARBOUR HB_DIRECTORY(void);
static SYMBOL symbols[] = {
HB_INIT_SYMBOLS_BEGIN( Dir__InitSymbols )
{ "DIRECTORY", FS_PUBLIC, HB_DIRECTORY, 0 }
};
HB_INIT_SYMBOLS_BEGIN( Dir__InitSymbols );
HB_INIT_SYMBOLS_END( Dir__InitSymbols )
HB_INIT_SYMBOLS_END( Dir__InitSymbols );
#pragma startup Dir__InitSymbols
static BOOL hb_strMatchDOS (char *pszString, char *pszMask);

View File

@@ -43,15 +43,12 @@ HARBOUR HB_GETENV(void);
HARBOUR HB_OS(void);
HARBOUR HB_VERSION(void);
static SYMBOL symbols[] = {
HB_INIT_SYMBOLS_BEGIN( Environ__InitSymbols )
{ "__RUN" , FS_PUBLIC, HB___RUN , 0 },
{ "GETENV" , FS_PUBLIC, HB_GETENV , 0 },
{ "OS" , FS_PUBLIC, HB_OS , 0 },
{ "VERSION", FS_PUBLIC, HB_VERSION, 0 }
};
HB_INIT_SYMBOLS_BEGIN( Environ__InitSymbols );
HB_INIT_SYMBOLS_END( Environ__InitSymbols )
HB_INIT_SYMBOLS_END( Environ__InitSymbols );
#pragma startup Environ__InitSymbols
HARBOUR HB_OS(void)

View File

@@ -131,7 +131,7 @@ HARBOUR HB_I2BIN( void );
HARBOUR HB_L2BIN( void );
HARBOUR HB_W2BIN( void );
static SYMBOL symbols[] = {
HB_INIT_SYMBOLS_BEGIN( Files__InitSymbols )
{ "BIN2I" , FS_PUBLIC, HB_BIN2I , 0 },
{ "BIN2L" , FS_PUBLIC, HB_BIN2L , 0 },
{ "BIN2W" , FS_PUBLIC, HB_BIN2W , 0 },
@@ -148,10 +148,7 @@ static SYMBOL symbols[] = {
{ "I2BIN" , FS_PUBLIC, HB_I2BIN , 0 },
{ "L2BIN" , FS_PUBLIC, HB_L2BIN , 0 },
{ "W2BIN" , FS_PUBLIC, HB_W2BIN , 0 }
};
HB_INIT_SYMBOLS_BEGIN( Files__InitSymbols );
HB_INIT_SYMBOLS_END( Files__InitSymbols )
HB_INIT_SYMBOLS_END( Files__InitSymbols );
#pragma startup Files__InitSymbols
/* Convert HARBOUR flags to IO subsystem flags */

View File

@@ -12,12 +12,9 @@
HARBOUR HB_HARDCR(void);
static SYMBOL symbols[] = {
HB_INIT_SYMBOLS_BEGIN( HardCR__InitSymbols )
{ "HARDCR", FS_PUBLIC, HB_HARDCR, 0 }
};
HB_INIT_SYMBOLS_BEGIN( HardCR__InitSymbols );
HB_INIT_SYMBOLS_END( HardCR__InitSymbols )
HB_INIT_SYMBOLS_END( HardCR__InitSymbols );
#pragma startup HardCR__InitSymbols
char *hb_hardcr( char *string )

View File

@@ -20,13 +20,12 @@ HARBOUR HB_MOD( void );
HARBOUR HB_ROUND( void );
HARBOUR HB_SQRT( void );
static SYMBOL symbols[] = {
{ "MOD" , FS_PUBLIC, HB_MOD , 0 }
}; /* The rest of functions is pulled automatically by initsymb.c */
HB_INIT_SYMBOLS_BEGIN( Math__InitSymbols );
HB_INIT_SYMBOLS_END( Math__InitSymbols )
HB_INIT_SYMBOLS_BEGIN( Math__InitSymbols )
{ "MOD" , FS_PUBLIC, HB_MOD , 0 }
HB_INIT_SYMBOLS_END( Math__InitSymbols );
#pragma startup Math__InitSymbols
/* The rest of functions is pulled automatically by initsymb.c */
HARBOUR HB_ABS( void )
{

View File

@@ -14,12 +14,10 @@
HARBOUR HB_MEMOTRAN(void);
static SYMBOL symbols[] = {
{ "MEMOTRAN", FS_PUBLIC, HB_MEMOTRAN, 0 }
};
HB_INIT_SYMBOLS_BEGIN( Memotran__InitSymbols );
HB_INIT_SYMBOLS_END( Memotran__InitSymbols )
HB_INIT_SYMBOLS_BEGIN( Memotran__InitSymbols )
{ "MEMOTRAN", FS_PUBLIC, HB_MEMOTRAN, 0 }
HB_INIT_SYMBOLS_END( Memotran__InitSymbols );
#pragma startup Memotran__InitSymbols
char *hb_memotran( char *string, char *hardcr, char *softcr )

View File

@@ -34,13 +34,10 @@ int hb_set_printhan;
HARBOUR HB_SET( void );
HARBOUR HB___SETCENTURY( void );
static SYMBOL symbols[] = {
HB_INIT_SYMBOLS_BEGIN( Set__InitSymbols )
{ "__SETCENTURY", FS_PUBLIC, HB___SETCENTURY, 0 },
{ "SET" , FS_PUBLIC, HB_SET , 0 }
};
HB_INIT_SYMBOLS_BEGIN( Set__InitSymbols );
HB_INIT_SYMBOLS_END( Set__InitSymbols )
HB_INIT_SYMBOLS_END( Set__InitSymbols );
#pragma startup Set__InitSymbols
static BOOL set_logical (PHB_ITEM pItem)

View File

@@ -51,7 +51,7 @@ HARBOUR HB_TRIM( void );
HARBOUR HB_UPPER( void );
HARBOUR HB_VAL( void );
static SYMBOL symbols[] = {
HB_INIT_SYMBOLS_BEGIN( Strings__InitSymbols )
{ "ALLTRIM" , FS_PUBLIC, HB_ALLTRIM, 0 },
{ "ISALPHA" , FS_PUBLIC, HB_ISALPHA, 0 },
{ "ISDIGIT" , FS_PUBLIC, HB_ISDIGIT, 0 },
@@ -65,18 +65,14 @@ static SYMBOL symbols[] = {
{ "RIGHT" , FS_PUBLIC, HB_RIGHT , 0 },
{ "STRTRAN" , FS_PUBLIC, HB_STRTRAN, 0 },
{ "STUFF" , FS_PUBLIC, HB_STUFF , 0 }
}; /* The rest of functions is pulled automatically by initsymb.c */
HB_INIT_SYMBOLS_BEGIN( Strings__InitSymbols );
HB_INIT_SYMBOLS_END( Strings__InitSymbols )
HB_INIT_SYMBOLS_END( Strings__InitSymbols );
#pragma startup Strings__InitSymbols
/* The rest of functions is pulled automatically by initsymb.c */
#ifdef HARBOUR_STRICT_CLIPPER_COMPATIBILITY
HB_CALL_ON_STARTUP_BEGIN( Strings_InitInfinity )
{
infinity = -log( 0 );
}
HB_CALL_ON_STARTUP_END( Strings_InitInfinity )
HB_CALL_ON_STARTUP_END( Strings_InitInfinity );
#pragma startup Strings_InitInfinity
#endif

View File

@@ -18,11 +18,9 @@
HARBOUR HB_TRANSFORM( void );
static SYMBOL symbols[] = {
{ "TRANSFORM" , FS_PUBLIC, HB_TRANSFORM , 0 }
};
HB_INIT_SYMBOLS_BEGIN( Transfrm__InitSymbols );
HB_INIT_SYMBOLS_BEGIN( Transfrm__InitSymbols )
{ "TRANSFORM" , FS_PUBLIC, HB_TRANSFORM , 0 }
HB_INIT_SYMBOLS_END( Transfrm__InitSymbols )
#pragma startup Transfrm__InitSymbols

View File

@@ -1,6 +1,6 @@
// Testing Harbour device management.
#include "BOX.CH"
#include "box.ch"
function Main()
dispbox( 1, 1, 5, 5, B_SINGLE + 'X', 'color not supported')