X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/befbbbe1fbb31663a8f91e24ce12df271cf4ae79..4e4a69258bc6825a548dabc242d5caeaf82ac634:/include/xbt/base.h diff --git a/include/xbt/base.h b/include/xbt/base.h index 68ea79ea08..8528c62589 100644 --- a/include/xbt/base.h +++ b/include/xbt/base.h @@ -1,6 +1,6 @@ /* xbt.h - Public interface to the xbt (simgrid's toolbox) */ -/* Copyright (c) 2004-2015. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2004-2017. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -45,9 +45,35 @@ __attribute__((__format__ (__scanf__, format_idx, arg_idx))) #endif +#if defined(__cplusplus) +#if __cplusplus >= 201103L +#define XBT_ATTRIB_NORETURN [[noreturn]] +#endif +#if __cplusplus >= 201703L +#define XBT_ATTRIB_UNUSED [[maybe_unused]] +#endif +#if __cplusplus >= 201402L +#define XBT_ATTRIB_DEPRECATED(msg) [[deprecated(msg)]] +#endif +#elif defined(__STDC_VERSION__) +#if __STDC_VERSION__ >= 201112L +#define XBT_ATTRIB_NORETURN _Noreturn +#endif +#endif + +#ifndef XBT_ATTRIB_NORETURN #define XBT_ATTRIB_NORETURN __attribute__((noreturn)) +#endif +#ifndef XBT_ATTRIB_UNUSED #define XBT_ATTRIB_UNUSED __attribute__((unused)) -#define XBT_ATTRIB_DEPRECATED(m) __attribute__((deprecated(m))) +#endif +#ifndef XBT_ATTRIB_DEPRECATED +#define XBT_ATTRIB_DEPRECATED(msg) __attribute__((deprecated(msg))) +#endif + +#define XBT_ATTRIB_DEPRECATED_v319(msg) XBT_ATTRIB_DEPRECATED(msg) /* Will be dropped in v3.19 */ +#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 */ /* Constructor priorities exist since gcc 4.3. Apparently, they are however not * supported on Macs. */ @@ -137,6 +163,7 @@ /* Build the DLL */ #if defined(DLL_EXPORT) +# define XBT_ATTRIB_PUBLIC __declspec(dllexport) # define XBT_PUBLIC(type) __declspec(dllexport) type # define XBT_EXPORT_NO_IMPORT(type) __declspec(dllexport) type # define XBT_IMPORT_NO_EXPORT(type) type @@ -146,6 +173,7 @@ /* Link against the DLL */ #elif (defined(_WIN32) && !defined(DLL_EXPORT)) +# define XBT_ATTRIB_PUBLIC __declspec(dllimport) # define XBT_PUBLIC(type) __declspec(dllimport) type # define XBT_EXPORT_NO_IMPORT(type) type # define XBT_IMPORT_NO_EXPORT(type) __declspec(dllimport) type @@ -154,6 +182,7 @@ # define XBT_PRIVATE #elif defined(__ELF__) +# define XBT_ATTRIB_PUBLIC __attribute__((visibility("default"))) # define XBT_PUBLIC(type) __attribute__((visibility("default"))) type # define XBT_EXPORT_NO_IMPORT(type) __attribute__((visibility("default"))) type # define XBT_IMPORT_NO_EXPORT(type) __attribute__((visibility("default"))) type @@ -162,6 +191,7 @@ # define XBT_PRIVATE __attribute__((visibility("hidden"))) #else +# define XBT_ATTRIB_PUBLIC /* public */ # define XBT_PUBLIC(type) type # define XBT_EXPORT_NO_IMPORT(type) type # define XBT_IMPORT_NO_EXPORT(type) type