Go to the documentation of this file.
10 #if defined(__GNUC__) && !defined(__ibmxl__)
16 # if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__CYGWIN__)
20 # ifndef UTIL_SYMBOL_EXPORT
21 # define UTIL_SYMBOL_EXPORT __attribute__((__dllexport__))
23 # ifndef UTIL_SYMBOL_IMPORT
24 # define UTIL_SYMBOL_IMPORT __attribute__((__dllimport__))
29 # ifndef UTIL_SYMBOL_EXPORT
30 # define UTIL_SYMBOL_EXPORT __attribute__((visibility("default")))
32 # ifndef UTIL_SYMBOL_IMPORT
33 # define UTIL_SYMBOL_IMPORT __attribute__((visibility("default")))
35 # ifndef UTIL_SYMBOL_VISIBLE
36 # define UTIL_SYMBOL_VISIBLE __attribute__((visibility("default")))
38 # ifndef UTIL_SYMBOL_LOCAL
39 # define UTIL_SYMBOL_LOCAL __attribute__((visibility("hidden")))
46 # ifndef UTIL_SYMBOL_EXPORT
47 # define UTIL_SYMBOL_EXPORT
49 # ifndef UTIL_SYMBOL_IMPORT
50 # define UTIL_SYMBOL_IMPORT
52 # ifndef UTIL_SYMBOL_VISIBLE
53 # define UTIL_SYMBOL_VISIBLE
55 # ifndef UTIL_SYMBOL_LOCAL
56 # define UTIL_SYMBOL_LOCAL
61 #elif defined(_MSC_VER)
75 #if !defined(UTIL_SYMBOL_EXPORT) && (defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__CYGWIN__))
76 # ifndef UTIL_SYMBOL_EXPORT
77 # define UTIL_SYMBOL_EXPORT __declspec(dllexport)
79 # ifndef UTIL_SYMBOL_IMPORT
80 # define UTIL_SYMBOL_IMPORT __declspec(dllimport)
85 #ifndef UTIL_SYMBOL_EXPORT
86 # define UTIL_SYMBOL_EXPORT
88 #ifndef UTIL_SYMBOL_IMPORT
89 # define UTIL_SYMBOL_IMPORT
91 #ifndef UTIL_SYMBOL_LOCAL
92 # define UTIL_SYMBOL_LOCAL
94 #ifndef UTIL_SYMBOL_VISIBLE
95 # define UTIL_SYMBOL_VISIBLE
101 #if defined(__GNUC__) || defined(__GNUG__)
106 # define __cdecl __attribute__((__cdecl__))
116 #ifndef UTIL_FORCEINLINE
117 # if defined(__clang__)
118 # if __cplusplus >= 201103L
119 # define UTIL_FORCEINLINE [[gnu::always_inline]] inline
121 # define UTIL_FORCEINLINE __attribute__((always_inline)) inline
123 # elif defined(__GNUC__) && __GNUC__ > 3
124 # if __cplusplus >= 201103L && (__GNUC__ * 100 + __GNUC_MINOR__) >= 408
125 # define UTIL_FORCEINLINE [[gnu::always_inline]] inline
127 # define UTIL_FORCEINLINE __attribute__((always_inline)) inline
129 # elif defined(_MSC_VER)
130 # define UTIL_FORCEINLINE __forceinline
132 # define UTIL_FORCEINLINE inline
136 #ifndef UTIL_NOINLINE_NOCLONE
137 # if defined(__clang__)
138 # if __cplusplus >= 201103L
139 # define UTIL_NOINLINE_NOCLONE [[gnu::noinline]]
141 # define UTIL_NOINLINE_NOCLONE __attribute__((noinline))
143 # elif defined(__GNUC__) && __GNUC__ > 3
144 # if __cplusplus >= 201103L && (__GNUC__ * 100 + __GNUC_MINOR__) >= 408
145 # define UTIL_NOINLINE_NOCLONE [[gnu::noinline, gnu::noclone]]
147 # define UTIL_NOINLINE_NOCLONE __attribute__((noinline, noclone))
149 # elif defined(_MSC_VER)
150 # define UTIL_NOINLINE_NOCLONE __declspec(noinline)
152 # define UTIL_NOINLINE_NOCLONE