X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/2ea5ad4f724dff9bcb6f4c4f73783d2dae1c0211..b7ca16289c913278988d37c1e2e57bdc93eb16e4:/include/xbt/misc.h diff --git a/include/xbt/misc.h b/include/xbt/misc.h index 8c2709aab6..a49fbf0b31 100644 --- a/include/xbt/misc.h +++ b/include/xbt/misc.h @@ -21,12 +21,14 @@ # define _XBT_GNUC_FORMAT( arg_idx ) \ __attribute__((__format_arg__ (arg_idx))) # define _XBT_GNUC_NORETURN __attribute__((__noreturn__)) +# define _XBT_GNUC_UNUSED __attribute__((unused)) #else /* !__GNUC__ */ # define _XBT_GNUC_PRINTF( format_idx, arg_idx ) # define _XBT_GNUC_SCANF( format_idx, arg_idx ) # define _XBT_GNUC_FORMAT( arg_idx ) # define _XBT_GNUC_NORETURN +# define _XBT_GNUC_UNUSED #endif /* !__GNUC__ */ @@ -34,13 +36,66 @@ #if defined(__GNUC__) && ! defined(__STRICT_ANSI__) # define _XBT_FUNCTION __FUNCTION__ -# define _XBT_INLINE inline #elif (defined(__STDC__) && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) # define _XBT_FUNC__ __func__ /* ISO-C99 compliant */ -# define _XBT_INLINE inline #else # define _XBT_FUNCTION "function" -# define _XBT_INLINE +#endif + +#ifndef __cplusplus +# if defined(__GNUC__) && ! defined(__STRICT_ANSI__) +# define XBT_INLINE inline +# elif (defined(__STDC__) && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) +# define XBT_INLINE inline +# elif defined(__BORLANDC__) && !defined(__STRICT_ANSI__) +# define XBT_INLINE __inline +# else +# define XBT_INLINE +# endif +# else +# define XBT_INLINE inline +#endif + +/* Windows __declspec(). */ +#if defined(_WIN32) && defined(__BORLANDC__) +# if(__BORLANDC__ < 0x540) +# if (defined (__DLL) || defined (_DLL) || defined (_WINDLL) || defined (_RTLDLL) || defined (_XBT_USE_DYNAMIC_LIB) ) && ! defined (_XBT_USE_STAT +# undef _XBT_USE_DECLSPEC +# define _XBT_USE_DECLSPEC +# endif +# else +# if ( defined (__DLL) || defined (_DLL) || defined (_WINDLL) || defined (_RTLDLL) || defined(_AFXDLL) || defined (_XBT_USE_DYNAMIC_LIB) ) +# undef _XBT_USE_DECLSPEC +# define _XBT_USE_DECLSPEC 1 +# endif +# endif +#endif + +#if defined (_XBT_USE_DECLSPEC) /* using export/import technique */ + +# ifndef _XBT_EXPORT_DECLSPEC +# define _XBT_EXPORT_DECLSPEC +# endif + +# ifndef _XBT_IMPORT_DECLSPEC +# define _XBT_IMPORT_DECLSPEC +# endif + +# if defined (_XBT_DESIGNATED_DLL) /* this is a lib which will contain xbt exports */ +# define XBT_PUBLIC _XBT_EXPORT_DECLSPEC +# else +# define XBT_PUBLIC _XBT_IMPORT_DECLSPEC /* other modules, importing xbt exports */ +# endif + +#else /* not using DLL export/import specifications */ + +# define XBT_PUBLIC + +#endif /* #if defined (_XBT_USE_DECLSPEC) */ + +/* Function calling convention (not used for now) */ +#if !defined (_XBT_CALL) +#define _XBT_CALL #endif @@ -76,23 +131,10 @@ /* End of cruft for C++ */ SG_BEGIN_DECL() -/* Dunno where to place this: needed by config and amok */ -typedef struct { - char *name; - int port; -} xbt_host_t; -const char *xbt_procname(void); +XBT_PUBLIC const char *xbt_procname(void); - -/* Generic function type */ - - typedef void (void_f_ppvoid_t)(void**); - typedef void (void_f_pvoid_t) (void*); - - typedef int (int_f_pvoid_pvoid_t) (void*,void*); - - typedef int (*int_f_void_t) (void); /* FIXME: rename it to int_pf_void_t */ +#define XBT_BACKTRACE_SIZE 10 /* FIXME: better place? Do document */ SG_END_DECL()