/* Attributes are only in recent versions of GCC */
#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4))
# define _XBT_GNUC_PRINTF( format_idx, arg_idx ) \
- __attribute__((__format__ (__printf__, format_idx, arg_idx)))
+ __attribute__((__format__ (__printf__, format_idx, arg_idx)))
# define _XBT_GNUC_SCANF( format_idx, arg_idx ) \
- __attribute__((__format__ (__scanf__, format_idx, arg_idx)))
+ __attribute__((__format__ (__scanf__, format_idx, arg_idx)))
# define _XBT_GNUC_NORETURN __attribute__((__noreturn__))
# define _XBT_GNUC_UNUSED __attribute__((__unused__))
-# define _XBT_GNUC_CONSTRUCTOR(prio) __attribute__((__constructor__ (prio)))
-# define _XBT_GNUC_DESTRUCTOR(prio) __attribute__((__destructor__ (prio)))
+/* Constructor priorities exist since gcc 4.3. Apparently, they are however not
+ * supported on Macs. */
+# if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) && !defined(__APPLE__)
+# define _XBT_GNUC_CONSTRUCTOR(prio) __attribute__((__constructor__ (prio)))
+# define _XBT_GNUC_DESTRUCTOR(prio) __attribute__((__destructor__ (prio)))
+# else
+# define _XBT_GNUC_CONSTRUCTOR(prio) __attribute__((__constructor__))
+# define _XBT_GNUC_DESTRUCTOR(prio) __attribute__((__destructor__))
+# endif
# undef _XBT_NEED_INIT_PRAGMA
#else /* !__GNUC__ */
# define XBT_INLINE
# endif
# else
-# if defined (__VISUALC__)
-# define XBT_INLINE __inline
-# else
-# define XBT_INLINE inline
-# endif
+# if defined (__VISUALC__)
+# define XBT_INLINE __inline
+# else
+# define XBT_INLINE inline
+# endif
# endif /* __cplusplus */
#endif
# define XBT_PUBLIC(type) __declspec(dllexport) type
# define XBT_EXPORT_NO_IMPORT(type) __declspec(dllexport) type
# define XBT_IMPORT_NO_EXPORT(type) type
-# define XBT_PUBLIC_DATA(type) __declspec(dllexport) type
+# define XBT_PUBLIC_DATA(type) __declspec(dllexport) type
/* Pack everything up statically */
#elif defined(DLL_STATIC)
/* Link against the DLL */
#elif (defined(_XBT_WIN32) && !defined(DLL_EXPORT) && !defined(DLL_STATIC))
-# define XBT_PUBLIC(type) __declspec(dllimport) type
-# define XBT_EXPORT_NO_IMPORT(type) type
-# define XBT_IMPORT_NO_EXPORT(type) __declspec(dllimport) type
-# define XBT_PUBLIC_DATA(type) __declspec(dllimport) type
+# define XBT_PUBLIC(type) __declspec(dllimport) type
+# define XBT_EXPORT_NO_IMPORT(type) type
+# define XBT_IMPORT_NO_EXPORT(type) __declspec(dllimport) type
+# define XBT_PUBLIC_DATA(type) __declspec(dllimport) type
/* UNIX build */
#else
#endif
#if !defined (max) && !defined(__cplusplus)
-# define max(a,b) (((a) > (b)) ? (a) : (b))
+# define max(a,b) (((a) > (b)) ? (a) : (b))
#endif
#if !defined (min) && !defined(__cplusplus)
-# define min(a,b) (((a) < (b)) ? (a) : (b))
+# define min(a,b) (((a) < (b)) ? (a) : (b))
#endif
#define TRUE 1
#define FALSE 0
-#define XBT_MAX_CHANNEL 10 /* FIXME: killme */
/*! C++ users need love */
#ifndef SG_BEGIN_DECL
# ifdef __cplusplus