A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[mc] Remove useless braces
[simgrid.git]
/
include
/
xbt
/
base.h
diff --git
a/include/xbt/base.h
b/include/xbt/base.h
index
b5312f2
..
4347e66
100644
(file)
--- a/
include/xbt/base.h
+++ b/
include/xbt/base.h
@@
-13,7
+13,7
@@
/* Define _GNU_SOURCE for getline, isfinite, etc. */
#ifndef _GNU_SOURCE
/* Define _GNU_SOURCE for getline, isfinite, etc. */
#ifndef _GNU_SOURCE
-
#define _GNU_SOURCE
+ #define _GNU_SOURCE
#endif
/* Attributes are only in recent versions of GCC */
#endif
/* Attributes are only in recent versions of GCC */
@@
-27,23
+27,23
@@
#endif
#if defined(__MINGW32__) && defined(__MINGW_PRINTF_FORMAT)
#endif
#if defined(__MINGW32__) && defined(__MINGW_PRINTF_FORMAT)
- # define
_XBT_GNUC
_PRINTF( format_idx, arg_idx ) \
+ # define
XBT_ATTRIB
_PRINTF( format_idx, arg_idx ) \
__attribute__((__format__ (__MINGW_PRINTF_FORMAT, format_idx, arg_idx)))
#else
__attribute__((__format__ (__MINGW_PRINTF_FORMAT, format_idx, arg_idx)))
#else
- # define
_XBT_GNUC
_PRINTF( format_idx, arg_idx ) \
+ # define
XBT_ATTRIB
_PRINTF( format_idx, arg_idx ) \
__attribute__((__format__ (__printf__, format_idx, arg_idx)))
#endif
#if defined(__MINGW32__) && defined(__MINGW_SCANF_FORMAT)
__attribute__((__format__ (__printf__, format_idx, arg_idx)))
#endif
#if defined(__MINGW32__) && defined(__MINGW_SCANF_FORMAT)
- # define
_XBT_GNUC
_SCANF( format_idx, arg_idx ) \
+ # define
XBT_ATTRIB
_SCANF( format_idx, arg_idx ) \
__attribute__((__MINGW_SCANF_FORMAT (__scanf__, format_idx, arg_idx)))
#else
__attribute__((__MINGW_SCANF_FORMAT (__scanf__, format_idx, arg_idx)))
#else
- # define
_XBT_GNUC
_SCANF( format_idx, arg_idx ) \
+ # define
XBT_ATTRIB
_SCANF( format_idx, arg_idx ) \
__attribute__((__format__ (__scanf__, format_idx, arg_idx)))
#endif
__attribute__((__format__ (__scanf__, format_idx, arg_idx)))
#endif
-# define
_XBT_GNUC
_NORETURN __attribute__((__noreturn__))
-# define
_XBT_GNUC
_UNUSED __attribute__((__unused__))
+# define
XBT_ATTRIB
_NORETURN __attribute__((__noreturn__))
+# define
XBT_ATTRIB
_UNUSED __attribute__((__unused__))
/* Constructor priorities exist since gcc 4.3. Apparently, they are however not
* supported on Macs. */
/* Constructor priorities exist since gcc 4.3. Apparently, they are however not
* supported on Macs. */
@@
-56,16
+56,24
@@
# endif
# undef _XBT_NEED_INIT_PRAGMA
# endif
# undef _XBT_NEED_INIT_PRAGMA
-#el
se /* !__GNUC__
*/
-# define
_XBT_GNUC
_PRINTF( format_idx, arg_idx )
-# define
_XBT_GNUC
_SCANF( format_idx, arg_idx )
-# define
_XBT_GNUC_NORETURN
-# define
_XBT_GNUC
_UNUSED
+#el
if defined(_MSC_VER) /* Microsoft Visual Thing
*/
+# define
XBT_ATTRIB
_PRINTF( format_idx, arg_idx )
+# define
XBT_ATTRIB
_SCANF( format_idx, arg_idx )
+# define
XBT_ATTRIB_NORETURN __declspec(noreturn)
+# define
XBT_ATTRIB
_UNUSED
# define _XBT_GNUC_CONSTRUCTOR(prio)
# define _XBT_GNUC_DESTRUCTOR(prio)
# define _XBT_GNUC_CONSTRUCTOR(prio)
# define _XBT_GNUC_DESTRUCTOR(prio)
-# define _XBT_NEED_INIT_PRAGMA 1
+# define _XBT_NEED_INIT_PRAGMA 1
+#else
+# define XBT_ATTRIB_PRINTF( format_idx, arg_idx )
+# define XBT_ATTRIB_SCANF( format_idx, arg_idx )
+# define XBT_ATTRIB_NORETURN
+# define XBT_ATTRIB_UNUSED
+# define _XBT_GNUC_CONSTRUCTOR(prio)
+# define _XBT_GNUC_DESTRUCTOR(prio)
+# define _XBT_NEED_INIT_PRAGMA 1
-#endif /*
!__GNUC__
*/
+#endif /*
gcc or MSVC else
*/
/* inline and __FUNCTION__ are only in GCC when -ansi is off */
/* inline and __FUNCTION__ are only in GCC when -ansi is off */
@@
-77,24
+85,18
@@
# define _XBT_FUNCTION "function"
#endif
# define _XBT_FUNCTION "function"
#endif
-#if
def DOXYGEN
-#
define XBT_INLINE
+#if
defined(__GNUC__)
+#
define XBT_ALWAYS_INLINE inline __attribute__ ((always_inline))
#else
#else
-# ifndef __cplusplus
-# if defined(__GNUC__) && ! defined(__STRICT_ANSI__)
-# define XBT_INLINE inline
-# elif (defined(__STDC__) && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L)
-# define XBT_INLINE inline
-# else
-# define XBT_INLINE
-# endif
-# else
-# if defined (__VISUALC__)
-# define XBT_INLINE __inline
-# else
-# define XBT_INLINE inline
-# endif
-# endif /* __cplusplus */
+# define XBT_ALWAYS_INLINE inline
+#endif
+
+#if defined(__GNUC__)
+# define XBT_THREAD_LOCAL __thread
+#elif defined(_MSC_VER)
+# define XBT_THREAD_LOCAL __declspec(thread)
+#else
+# define XBT_THREAD_LOCAL No thread local on this architecture
#endif
/* improvable on gcc (by evaluating arguments only once), but wouldn't be portable */
#endif
/* improvable on gcc (by evaluating arguments only once), but wouldn't be portable */
@@
-111,8
+113,7
@@
/*
* Expands to `one' if there is only one argument for the variadic part.
* Otherwise, expands to `more'.
/*
* Expands to `one' if there is only one argument for the variadic part.
* Otherwise, expands to `more'.
- * Works with up to 63 arguments, which is the maximum mandated by the C99
- * standard.
+ * Works with up to 63 arguments, which is the maximum mandated by the C99 standard.
*/
#define _XBT_IF_ONE_ARG(one, more, ...) \
_XBT_IF_ONE_ARG_(__VA_ARGS__, \
*/
#define _XBT_IF_ONE_ARG(one, more, ...) \
_XBT_IF_ONE_ARG_(__VA_ARGS__, \
@@
-133,57
+134,33
@@
a16, a15, a14, a13, a12, a11, a10, a9, \
a8, a7, a6, a5, a4, a3, a2, a1, N, ...) N
a16, a15, a14, a13, a12, a11, a10, a9, \
a8, a7, a6, a5, a4, a3, a2, a1, N, ...) N
-/*
- * Function calling convention (not used for now)
- */
-
-#ifdef _XBT_WIN32
-# ifndef _XBT_CALL
-# define _XBT_CALL __cdecl
-# endif
-#else
-# define _XBT_CALL
-#endif
-
/* Handle import/export stuff
*
* Rational of XBT_PUBLIC:
* * This is for library symbols visible from the application-land.
/* Handle import/export stuff
*
* Rational of XBT_PUBLIC:
* * This is for library symbols visible from the application-land.
- * Basically, any symbols defined in the include/directory must be
- * like this (plus some other globals).
+ * Basically, any symbols defined in the include/directory must be like this (plus some other globals).
*
* UNIX coders should just think of it as a special way to say "extern".
*
*
* UNIX coders should just think of it as a special way to say "extern".
*
- * * If you build the DLL, define the DLL_EXPORT symbol so that all symbols
- * actually get exported by this file.
-
- * * If you do a static windows compilation, define DLL_STATIC, both when
- * compiling the application files and when compiling the library.
- *
- * * If you link your application against the DLL or if you do a UNIX build,
- * don't do anything special. This file will do the right thing for you
- * by default.
+ * * If you build the DLL, define the DLL_EXPORT symbol so that all symbols actually get exported by this file.
*
*
+ * * If you link your application against the DLL or if you do a UNIX build, don't do anything special. This file
+ * will do the right thing for you by default.
*
*
- * Rational of XBT_EXPORT_NO_IMPORT: (windows-only
cruft
)
+ * Rational of XBT_EXPORT_NO_IMPORT: (windows-only)
* * Symbols which must be exported in the DLL, but not imported from it.
*
* * Symbols which must be exported in the DLL, but not imported from it.
*
- * * This is obviously useful for initialized globals (which cannot be
- * extern or similar).
- * * This is also used in the log mecanism where a macro creates the
- * variable automatically. When the macro is called from within SimGrid,
- * the symbol must be exported, but when called from within the client
- * code, it must not try to retrieve the symbol from the DLL since it's
- * not in there.
+ * * This is obviously useful for initialized globals (which cannot be extern or similar).
+ * * This is also used in the log mechanism where a macro creates the variable automatically. When the macro is
+ * called from within SimGrid, the symbol must be exported, but when called from within the client code, it must
+ * not try to retrieve the symbol from the DLL since it's not in there.
*
*
- * Rational of XBT_IMPORT_NO_EXPORT: (windows-only cruft)
- * * Symbols which must be imported from the DLL, but not explicitely
- * exported from it.
+ * Rational of XBT_IMPORT_NO_EXPORT: (windows-only)
+ * * Symbols which must be imported from the DLL, but not explicitly exported from it.
*
*
- * * The root log category is already exported, but not imported explicitely
- * when creating a subcategory since we cannot import the parent category
- * to deal with the fact that the parent may be in application space, not
- * DLL space.
+ * * The root log category is already exported, but not imported explicitly when creating a subcategory since we
+ * cannot import the parent category to deal with the fact that the parent may be in application space, not DLL
+ * space.
*/
/* Build the DLL */
*/
/* Build the DLL */
@@
-193,49
+170,35
@@
# define XBT_IMPORT_NO_EXPORT(type) type
# define XBT_PUBLIC_DATA(type) extern __declspec(dllexport) type
# define XBT_PUBLIC_CLASS class __declspec(dllexport)
# define XBT_IMPORT_NO_EXPORT(type) type
# define XBT_PUBLIC_DATA(type) extern __declspec(dllexport) type
# define XBT_PUBLIC_CLASS class __declspec(dllexport)
-
-
-/* Pack everything up statically */
-#elif defined(DLL_STATIC)
-# define XBT_PUBLIC(type) type
-# define XBT_EXPORT_NO_IMPORT(type) type
-# define XBT_IMPORT_NO_EXPORT(type) type
-# define XBT_PUBLIC_DATA(type) extern type
-# define XBT_PUBLIC_CLASS class
-
+# define XBT_PRIVATE
/* Link against the DLL */
/* Link against the DLL */
-#elif (defined(_
XBT_WIN32) && !defined(DLL_EXPORT) && !defined(DLL_STATIC
))
+#elif (defined(_
WIN32) && !defined(DLL_EXPORT
))
# 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) extern __declspec(dllimport) type
# define XBT_PUBLIC_CLASS class __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
# define XBT_PUBLIC_DATA(type) extern __declspec(dllimport) type
# define XBT_PUBLIC_CLASS class __declspec(dllimport)
+# define XBT_PRIVATE
+#elif defined(__ELF__)
+# 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
+# define XBT_PUBLIC_DATA(type) extern __attribute__((visibility("default"))) type
+# define XBT_PUBLIC_CLASS class __attribute__((visibility("default")))
+# define XBT_PRIVATE __attribute__((visibility("hidden")))
-/* UNIX build */
#else
# define XBT_PUBLIC(type) type
# define XBT_EXPORT_NO_IMPORT(type) type
# define XBT_IMPORT_NO_EXPORT(type) type
# define XBT_PUBLIC_DATA(type) extern type
# define XBT_PUBLIC_CLASS class
#else
# define XBT_PUBLIC(type) type
# define XBT_EXPORT_NO_IMPORT(type) type
# define XBT_IMPORT_NO_EXPORT(type) type
# define XBT_PUBLIC_DATA(type) extern type
# define XBT_PUBLIC_CLASS class
+# define XBT_PRIVATE
#endif
#endif
-#ifdef _XBT_WIN32
-#define XBT_INTERNAL
-#else
-#define XBT_INTERNAL __attribute__((visibility ("hidden")))
-#endif
-
-#if !defined (max) && !defined(__cplusplus)
-# define max(a,b) (((a) > (b)) ? (a) : (b))
-#endif
-#if !defined (min) && !defined(__cplusplus)
-# define min(a,b) (((a) < (b)) ? (a) : (b))
-#endif
-
#define TRUE 1
#define FALSE 0
#define TRUE 1
#define FALSE 0