u_compiler.h revision a73c6540d9a7f6e26d8568ba2fc522cb865f0a6c
1#ifndef _U_COMPILER_H_
2#define _U_COMPILER_H_
3
4/* Function inlining */
5#ifndef INLINE
6#  ifdef __cplusplus
7#    define INLINE inline
8#  elif defined(__GNUC__)
9#    define INLINE __inline__
10#  elif defined(_MSC_VER)
11#    define INLINE __inline
12#  elif defined(__ICL)
13#    define INLINE __inline
14#  elif defined(__INTEL_COMPILER)
15#    define INLINE inline
16#  elif defined(__WATCOMC__) && (__WATCOMC__ >= 1100)
17#    define INLINE __inline
18#  elif defined(__SUNPRO_C) && defined(__C99FEATURES__)
19#    define INLINE inline
20#  elif (__STDC_VERSION__ >= 199901L) /* C99 */
21#    define INLINE inline
22#  else
23#    define INLINE
24#  endif
25#endif
26
27/* Function visibility */
28#ifndef PUBLIC
29#  if defined(__GNUC__) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590))
30#    define PUBLIC __attribute__((visibility("default")))
31#    define HIDDEN __attribute__((visibility("hidden")))
32#  else
33#    define PUBLIC
34#    define HIDDEN
35#  endif
36#endif
37
38#ifndef likely
39#  if defined(__GNUC__)
40#    define likely(x)   __builtin_expect(!!(x), 1)
41#    define unlikely(x) __builtin_expect(!!(x), 0)
42#  else
43#    define likely(x)   (x)
44#    define unlikely(x) (x)
45#  endif
46#endif
47
48#endif /* _U_COMPILER_H_ */
49