File indexing completed on 2025-10-31 09:20:58
0001 
0002 
0003 
0004 
0005 
0006 
0007 
0008 
0009 
0010 
0011 
0012 
0013 
0014 
0015 
0016 #ifndef DIAGNOSTICS_H
0017 #define DIAGNOSTICS_H
0018 
0019 
0020 
0021 
0022 
0023 
0024 
0025 
0026 
0027 
0028 
0029 
0030 
0031 
0032 
0033 #ifdef __GNUC__
0034 # define DIAGNOSTIC_PUSH _Pragma ("GCC diagnostic push")
0035 # define DIAGNOSTIC_POP _Pragma ("GCC diagnostic pop")
0036 
0037 
0038 # define DIAGNOSTIC_STRINGIFY_1(x) #x
0039 # define DIAGNOSTIC_STRINGIFY(x) DIAGNOSTIC_STRINGIFY_1 (x)
0040 
0041 # define DIAGNOSTIC_IGNORE(option) \
0042   _Pragma (DIAGNOSTIC_STRINGIFY (GCC diagnostic ignored option))
0043 # define DIAGNOSTIC_ERROR(option) \
0044   _Pragma (DIAGNOSTIC_STRINGIFY (GCC diagnostic error option))
0045 #else
0046 # define DIAGNOSTIC_PUSH
0047 # define DIAGNOSTIC_POP
0048 # define DIAGNOSTIC_IGNORE(option)
0049 #endif
0050 
0051 #if defined (__clang__) 
0052 
0053 # define DIAGNOSTIC_IGNORE_SELF_MOVE DIAGNOSTIC_IGNORE ("-Wself-move")
0054 # define DIAGNOSTIC_IGNORE_DEPRECATED_DECLARATIONS \
0055   DIAGNOSTIC_IGNORE ("-Wdeprecated-declarations")
0056 # define DIAGNOSTIC_IGNORE_REGISTER DIAGNOSTIC_IGNORE ("-Wregister")
0057 
0058 # if __has_warning ("-Wenum-compare-switch")
0059 #  define DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES \
0060    DIAGNOSTIC_IGNORE ("-Wenum-compare-switch")
0061 # endif
0062 
0063 # define DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL \
0064   DIAGNOSTIC_IGNORE ("-Wformat-nonliteral")
0065 
0066 # if __has_warning ("-Wuser-defined-warnings")
0067 #  define DIAGNOSTIC_IGNORE_USER_DEFINED_WARNINGS \
0068    DIAGNOSTIC_IGNORE ("-Wuser-defined-warnings")
0069 # endif
0070 
0071 # if __has_warning ("-Wunused-but-set-variable")
0072 #  define DIAGNOSTIC_IGNORE_UNUSED_BUT_SET_VARIABLE \
0073    DIAGNOSTIC_IGNORE ("-Wunused-but-set-variable")
0074 # endif
0075 
0076 # define DIAGNOSTIC_ERROR_SWITCH \
0077   DIAGNOSTIC_ERROR ("-Wswitch")
0078 
0079 #elif defined (__GNUC__) 
0080 
0081 # define DIAGNOSTIC_IGNORE_DEPRECATED_DECLARATIONS \
0082   DIAGNOSTIC_IGNORE ("-Wdeprecated-declarations")
0083 
0084 # if __GNUC__ >= 7
0085 #  define DIAGNOSTIC_IGNORE_REGISTER DIAGNOSTIC_IGNORE ("-Wregister")
0086 # endif
0087 
0088 # define DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION \
0089   DIAGNOSTIC_IGNORE ("-Wstringop-truncation")
0090 
0091 # if __GNUC__ >= 11
0092 # define DIAGNOSTIC_IGNORE_STRINGOP_OVERREAD \
0093   DIAGNOSTIC_IGNORE ("-Wstringop-overread")
0094 #endif
0095 
0096 # define DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL \
0097   DIAGNOSTIC_IGNORE ("-Wformat-nonliteral")
0098 
0099 # if __GNUC__ >= 5
0100 #  define DIAGNOSTIC_IGNORE_UNUSED_BUT_SET_VARIABLE \
0101    DIAGNOSTIC_IGNORE ("-Wunused-but-set-variable")
0102 # endif
0103 
0104 # if __GNUC__ >= 13
0105 #  define DIAGNOSTIC_IGNORE_SELF_MOVE DIAGNOSTIC_IGNORE ("-Wself-move")
0106 # endif
0107 
0108 
0109 
0110 
0111 # if __GNUC__ >= 5
0112 #  define DIAGNOSTIC_ERROR_SWITCH DIAGNOSTIC_ERROR ("-Wswitch")
0113 # endif
0114 
0115 #endif
0116 
0117 #ifndef DIAGNOSTIC_IGNORE_SELF_MOVE
0118 # define DIAGNOSTIC_IGNORE_SELF_MOVE
0119 #endif
0120 
0121 #ifndef DIAGNOSTIC_IGNORE_DEPRECATED_DECLARATIONS
0122 # define DIAGNOSTIC_IGNORE_DEPRECATED_DECLARATIONS
0123 #endif
0124 
0125 #ifndef DIAGNOSTIC_IGNORE_REGISTER
0126 # define DIAGNOSTIC_IGNORE_REGISTER
0127 #endif
0128 
0129 #ifndef DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
0130 # define DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
0131 #endif
0132 
0133 #ifndef DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION
0134 # define DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION
0135 #endif
0136 
0137 #ifndef DIAGNOSTIC_IGNORE_STRINGOP_OVERREAD
0138 # define DIAGNOSTIC_IGNORE_STRINGOP_OVERREAD
0139 #endif
0140 
0141 #ifndef DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
0142 # define DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
0143 #endif
0144 
0145 #ifndef DIAGNOSTIC_IGNORE_USER_DEFINED_WARNINGS
0146 # define DIAGNOSTIC_IGNORE_USER_DEFINED_WARNINGS
0147 #endif
0148 
0149 #ifndef DIAGNOSTIC_IGNORE_UNUSED_BUT_SET_VARIABLE
0150 # define DIAGNOSTIC_IGNORE_UNUSED_BUT_SET_VARIABLE
0151 #endif
0152 
0153 #ifndef DIAGNOSTIC_ERROR_SWITCH
0154 # define DIAGNOSTIC_ERROR_SWITCH
0155 #endif
0156 
0157 #endif