X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/025e9b46ddcf40fa23c435b365ffe56917a1960b..f9df6a0ce7023e4e22d83bb6c50f27bd21fab329:/include/xbt/base.h diff --git a/include/xbt/base.h b/include/xbt/base.h index d042d98d86..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. */ @@ -9,13 +8,26 @@ #ifndef XBT_BASE_H #define XBT_BASE_H -#include "simgrid_config.h" - /* Define _GNU_SOURCE for getline, isfinite, etc. */ #ifndef _GNU_SOURCE #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): */ @@ -35,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. */ @@ -155,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" {