X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/79f947c54111b76b2db108fade4d8e4c0e4e703f..5a00610e05eab122e23f56b589d5bb240e6ceda7:/include/xbt/base.h diff --git a/include/xbt/base.h b/include/xbt/base.h index 9d4ea07042..259c84c893 100644 --- a/include/xbt/base.h +++ b/include/xbt/base.h @@ -1,7 +1,6 @@ -/* xbt.h - Public interface to the xbt (simgrid's toolbox) */ +/* xbt.h - Public interface to the xbt (simgrid's toolbox) */ -/* Copyright (c) 2004-2015. The SimGrid Team. - * All rights reserved. */ +/* Copyright (c) 2004-2015. 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. */ @@ -14,6 +13,21 @@ #define _GNU_SOURCE #endif +// Teach the compiler that some code path is unreacheable: +#if defined(__has_builtin) + #if __has_builtin(__builtin_unreachable) + #define XBT_UNREACHABLE() __builtin_unreachable() + #else + #include + #define XBT_UNREACHABLE() abort() + #endif +#elif (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) + #define XBT_UNREACHABLE() __builtin_unreachable() +#else + #include + #define XBT_UNREACHABLE() abort() +#endif + /* On MinGW, stdio.h defines __MINGW_PRINTF_FORMAT and __MINGW_SCANF_FORMAT which are the suitable format style (either gnu_printf or ms_printf) depending on which version is available (__USE_MINGW_ANSI_STDIO): */ @@ -33,6 +47,7 @@ # define XBT_ATTRIB_NORETURN __attribute__((__noreturn__)) # define XBT_ATTRIB_UNUSED __attribute__((__unused__)) +# define XBT_ATTRIB_DEPRECATED(m) __attribute__((__deprecated__(m))) /* Constructor priorities exist since gcc 4.3. Apparently, they are however not * supported on Macs. */ @@ -153,14 +168,14 @@ # define XBT_IMPORT_NO_EXPORT(type) type # define XBT_PUBLIC_DATA(type) extern type # define XBT_PUBLIC_CLASS class -# define XBT_PRIVATE +# define XBT_PRIVATE /** @private */ #endif #define TRUE 1 #define FALSE 0 -/*! C++ users need love */ +/* C++ users need love */ #ifndef SG_BEGIN_DECL # ifdef __cplusplus # define SG_BEGIN_DECL() extern "C" {