Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Remove features marked with DEPRECATED_v321.
[simgrid.git] / include / xbt / base.h
index 3129f5d..53f71a3 100644 (file)
@@ -53,7 +53,7 @@
 #define XBT_ATTRIB_UNUSED [[maybe_unused]]
 #endif
 #if __cplusplus >= 201402L
-#define XBT_ATTRIB_DEPRECATED(msg) [[deprecated(msg)]]
+#define XBT_ATTRIB_DEPRECATED(mesg) [[deprecated(mesg)]]
 #endif
 #elif defined(__STDC_VERSION__)
 #if __STDC_VERSION__ >= 201112L
 #define XBT_ATTRIB_UNUSED  __attribute__((unused))
 #endif
 #ifndef XBT_ATTRIB_DEPRECATED
-#define XBT_ATTRIB_DEPRECATED(msg) __attribute__((deprecated(msg)))
+#define XBT_ATTRIB_DEPRECATED(mesg) __attribute__((deprecated(mesg)))
 #endif
 
-#define XBT_ATTRIB_DEPRECATED_v320(msg) XBT_ATTRIB_DEPRECATED(msg) /* Will be dropped in v3.20 */
-#define XBT_ATTRIB_DEPRECATED_v321(msg) XBT_ATTRIB_DEPRECATED(msg) /* Will be dropped in v3.21 */
-#define XBT_ATTRIB_DEPRECATED_v322(msg) XBT_ATTRIB_DEPRECATED(msg) /* Will be dropped in v3.22 */
+#define XBT_ATTRIB_DEPRECATED_v322(mesg) XBT_ATTRIB_DEPRECATED(mesg) /* Will be dropped in v3.22 */
+#define XBT_ATTRIB_DEPRECATED_v323(mesg)                                                                               \
+  XBT_ATTRIB_DEPRECATED(mesg " (this compatibility wrapper will be dropped in v3.23)") /* Will be dropped in v3.23 */
 
-#define XBT_ATTRIB_CONSTRUCTOR(prio) __attribute__((__constructor__(prio)))
-#define XBT_ATTRIB_DESTRUCTOR(prio) __attribute__((__destructor__(prio)))
+#if !defined(__APPLE__)
+#  define XBT_ATTRIB_CONSTRUCTOR(prio) __attribute__((__constructor__(prio)))
+#  define XBT_ATTRIB_DESTRUCTOR(prio) __attribute__((__destructor__(prio)))
+#else
+#  define XBT_ATTRIB_CONSTRUCTOR(prio) __attribute__((__constructor__))
+#  define XBT_ATTRIB_DESTRUCTOR(prio) __attribute__((__destructor__))
+#endif
 
 #if defined(__GNUC__)
 #  define XBT_ALWAYS_INLINE inline __attribute__ ((always_inline))
 #  define XBT_THREAD_LOCAL No thread local on this architecture
 #endif
 
-/* improvable on gcc (by evaluating arguments only once), but wouldn't be portable */
-#ifdef MIN
-#  undef MIN
-#endif
-#define MIN(a,b) ((a)<(b)?(a):(b))
-
-#ifdef MAX
-#  undef MAX
-#endif
-#define MAX(a,b) ((a)>(b)?(a):(b))
-
 /*
  * Expands to `one' if there is only one argument for the variadic part.
  * Otherwise, expands to `more'.
 
 /* Build the DLL */
 #if defined(DLL_EXPORT)
-#  define XBT_PUBLIC                  __declspec(dllexport)
-#  define XBT_EXPORT_NO_IMPORT(type)  __declspec(dllexport) type
-#  define XBT_IMPORT_NO_EXPORT(type)  type
-#  define XBT_PUBLIC_DATA             extern __declspec(dllexport)
+#  define XBT_PUBLIC            __declspec(dllexport)
+#  define XBT_EXPORT_NO_IMPORT  __declspec(dllexport)
+#  define XBT_IMPORT_NO_EXPORT
+#  define XBT_PUBLIC_DATA       extern __declspec(dllexport)
 #  define XBT_PRIVATE
 
 /* Link against the DLL */
 #elif (defined(_WIN32) && !defined(DLL_EXPORT))
-#  define XBT_PUBLIC                  __declspec(dllimport)
-#  define XBT_EXPORT_NO_IMPORT(type)  type
-#  define XBT_IMPORT_NO_EXPORT(type)  __declspec(dllimport) type
-#  define XBT_PUBLIC_DATA             extern __declspec(dllimport)
+#  define XBT_PUBLIC            __declspec(dllimport)
+#  define XBT_EXPORT_NO_IMPORT
+#  define XBT_IMPORT_NO_EXPORT  __declspec(dllimport)
+#  define XBT_PUBLIC_DATA       extern __declspec(dllimport)
 #  define XBT_PRIVATE
 
 #elif defined(__ELF__)
-#  define XBT_PUBLIC                  __attribute__((visibility("default")))
-#  define XBT_EXPORT_NO_IMPORT(type)  __attribute__((visibility("default"))) type
-#  define XBT_IMPORT_NO_EXPORT(type)  __attribute__((visibility("default"))) type
-#  define XBT_PUBLIC_DATA             extern __attribute__((visibility("default")))
-#  define XBT_PRIVATE                 __attribute__((visibility("hidden")))
+#  define XBT_PUBLIC            __attribute__((visibility("default")))
+#  define XBT_EXPORT_NO_IMPORT  __attribute__((visibility("default")))
+#  define XBT_IMPORT_NO_EXPORT  __attribute__((visibility("default")))
+#  define XBT_PUBLIC_DATA       extern __attribute__((visibility("default")))
+#  define XBT_PRIVATE           __attribute__((visibility("hidden")))
 
 #else
-#  define XBT_PUBLIC                  /* public */
-#  define XBT_EXPORT_NO_IMPORT(type)  type
-#  define XBT_IMPORT_NO_EXPORT(type)  type
-#  define XBT_PUBLIC_DATA             extern
-#  define XBT_PRIVATE                 /** @private */
+#  define XBT_PUBLIC            /* public */
+#  define XBT_EXPORT_NO_IMPORT
+#  define XBT_IMPORT_NO_EXPORT
+#  define XBT_PUBLIC_DATA       extern
+#  define XBT_PRIVATE           /** @private */
 
 #endif
 
-#define TRUE  1
-#define FALSE 0
-
 /* C++ users need love */
 #ifndef SG_BEGIN_DECL
 # ifdef __cplusplus