Go to the documentation of this file.
7 #ifndef INCLUDE_JET_MACROS_H_
8 #define INCLUDE_JET_MACROS_H_
10 #if defined(_WIN32) || defined(_WIN64)
12 #elif defined(__APPLE__)
17 #elif defined(linux) || defined(__linux__)
21 #if defined(DEBUG) || defined(_DEBUG)
22 # define JET_DEBUG_MODE
24 # define JET_ASSERT(x) assert(x)
26 # define JET_ASSERT(x)
30 #define JET_NON_COPYABLE(ClassName) \
31 ClassName(const ClassName&) = delete; \
32 ClassName& operator=(const ClassName&) = delete;
37 #define JET_THROW_INVALID_ARG_IF(expression) \
38 if (expression) { throw std::invalid_argument(#expression); }
39 #define JET_THROW_INVALID_ARG_WITH_MESSAGE_IF(expression, message) \
40 if (expression) { throw std::invalid_argument(message); }
43 #if defined(JET_WINDOWS) && defined(_MSC_VER)
45 typedef SSIZE_T ssize_t;
48 #define JET_DIAG_STR(s) #s
49 #define JET_DIAG_JOINSTR(x, y) JET_DIAG_STR(x ## y)
51 #define JET_DIAG_DO_PRAGMA(x) __pragma (#x)
52 #define JET_DIAG_PRAGMA(compiler, x) JET_DIAG_DO_PRAGMA(warning(x))
54 #define JET_DIAG_DO_PRAGMA(x) _Pragma (#x)
55 #define JET_DIAG_PRAGMA(compiler, x) JET_DIAG_DO_PRAGMA(compiler diagnostic x)
57 #if defined(__clang__)
58 # define JET_DISABLE_CLANG_WARNING(clang_option) \
59 JET_DIAG_PRAGMA(clang, push) \
60 JET_DIAG_PRAGMA(clang, ignored JET_DIAG_JOINSTR(-W, clang_option))
61 # define JET_ENABLE_CLANG_WARNING(clang_option) JET_DIAG_PRAGMA(clang, pop)
62 # define JET_DISABLE_MSVC_WARNING(gcc_option)
63 # define JET_ENABLE_MSVC_WARNING(gcc_option)
64 # define JET_DISABLE_GCC_WARNING(gcc_option)
65 # define JET_ENABLE_GCC_WARNING(gcc_option)
66 #elif defined(_MSC_VER)
67 # define JET_DISABLE_CLANG_WARNING(gcc_option)
68 # define JET_ENABLE_CLANG_WARNING(gcc_option)
69 # define JET_DISABLE_MSVC_WARNING(msvc_errorcode) \
70 JET_DIAG_PRAGMA(msvc, push) \
71 JET_DIAG_DO_PRAGMA(warning(disable:##msvc_errorcode))
72 # define JET_ENABLE_MSVC_WARNING(msvc_errorcode) JET_DIAG_PRAGMA(msvc, pop)
73 # define JET_DISABLE_GCC_WARNING(gcc_option)
74 # define JET_ENABLE_GCC_WARNING(gcc_option)
75 #elif defined(__GNUC__)
76 #if ((__GNUC__ * 100) + __GNUC_MINOR__) >= 406
77 # define JET_DISABLE_CLANG_WARNING(gcc_option)
78 # define JET_ENABLE_CLANG_WARNING(gcc_option)
79 # define JET_DISABLE_MSVC_WARNING(gcc_option)
80 # define JET_ENABLE_MSVC_WARNING(gcc_option)
81 # define JET_DISABLE_GCC_WARNING(gcc_option) \
82 JET_DIAG_PRAGMA(GCC, push) \
83 JET_DIAG_PRAGMA(GCC, ignored JET_DIAG_JOINSTR(-W, gcc_option))
84 # define JET_ENABLE_GCC_WARNING(gcc_option) JET_DIAG_PRAGMA(GCC, pop)
86 # define JET_DISABLE_CLANG_WARNING(gcc_option)
87 # define JET_ENABLE_CLANG_WARNING(gcc_option)
88 # define JET_DISABLE_MSVC_WARNING(gcc_option)
89 # define JET_ENABLE_MSVC_WARNING(gcc_option)
90 # define JET_DISABLE_GCC_WARNING(gcc_option) \
91 JET_DIAG_PRAGMA(GCC, ignored JET_DIAG_JOINSTR(-W, gcc_option))
92 # define JET_ENABLE_GCC_WARNING(gcc_option) \
93 JET_DIAG_PRAGMA(GCC, warning JET_DIAG_JOINSTR(-W, gcc_option))
99 #endif // INCLUDE_JET_MACROS_H_