| #ifndef _U_COMPILER_H_ |
| #define _U_COMPILER_H_ |
| |
| #include "c99_compat.h" /* inline, __func__, etc. */ |
| |
| |
| /* XXX: Use standard `inline` keyword instead */ |
| #ifndef INLINE |
| # define INLINE inline |
| #endif |
| |
| /* Function visibility */ |
| #ifndef PUBLIC |
| # if defined(__GNUC__) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)) |
| # define PUBLIC __attribute__((visibility("default"))) |
| # elif defined(_MSC_VER) |
| # define PUBLIC __declspec(dllexport) |
| # else |
| # define PUBLIC |
| # endif |
| #endif |
| |
| #ifndef likely |
| # if defined(__GNUC__) |
| # define likely(x) __builtin_expect(!!(x), 1) |
| # define unlikely(x) __builtin_expect(!!(x), 0) |
| # else |
| # define likely(x) (x) |
| # define unlikely(x) (x) |
| # endif |
| #endif |
| |
| #endif /* _U_COMPILER_H_ */ |