File indexing completed on 2025-09-15 09:16:41
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