/* * $Id$ * * Harbour local symbols initialization */ #ifndef HB_INIT_H_ #define HB_INIT_H_ 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_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_CALL_ON_STARTUP_BEGIN( func ) \ static void __attribute__ ((constructor)) func( void ) { #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_CALL_ON_STARTUP_BEGIN( func ) \ static void func( void ) { #define HB_CALL_ON_STARTUP_END( func ) } #endif #if (defined(_MSC_VER) || defined(__IBMCPP__)) #define HB_INIT_SYMBOLS_BEGIN( 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 ) { #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 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 ) { #define HB_CALL_ON_STARTUP_END( func ) return 1; }; \ static int static_int_##func = func() #endif #endif /*HARBOUR_STRICT_ANSI_C */ #endif /* HB_INIT_H_ */