36#define DIAG_STATE(_) \
45#define DEFINE_ENUM(name) name,
53#define DEFINE_CASE(name) \
80 inline static bool IsClang(
const std::string name) {
81 return name.find(
"-clang") == 0;
85 return name.find(
"-Werror=") == 0;
89 return name.find(
"-Wno-error=") == 0;
92 inline static bool IsDisable(
const std::string name) {
93 return name.find(
"-Wno-") == 0;
96 inline static bool IsEnable(
const std::string name) {
128 DiagPtr diag = std::make_shared<Diag>();
129 if (!diag->ParseArgs(argc, argv)) {
141 bool Emit(
const char *name,
const TermPtr term =
nullptr);
143 bool Register(
const char *name,
State state,
const char *desc =
nullptr);
154 for (
int i = 0; i < argc; i++) {
static std::string RemoveDiagPrefix(const std::string name)
static const char * toString(State state)
static bool IsClang(const std::string name)
static bool IsEnable(const std::string name)
bool TestIgnore(const char *name)
void Push(const TermPtr term=nullptr)
Diag(const Diag &)=delete
bool Apply(const char *name, State state, const TermPtr term=nullptr)
void Pop(const TermPtr term=nullptr)
static const char * DIAG_MACRO_NOT_FOUND
Diag::State Test(const char *name)
std::vector< DataDiag > DiagListType
bool Emit(const char *name, const TermPtr term=nullptr)
bool Register(const char *name, State state, const char *desc=nullptr)
static const char * DIAG_MACRO_STORAGE_NOT_EXIST
static bool IsDisable(const std::string name)
static const char * DIAG_EXTRA_TOKENS
const Diag & operator=(const Diag &)=delete
static bool IsTurnNoError(const std::string name)
static const char * DIAG_FILL_REMAINDER
bool ParseArgs(int argc, const char **argv)
static std::string ChangeState(const std::string name, State from_state, State to_state)
DiagStackType m_diag_stack
std::vector< DiagListType > DiagStackType
static DiagPtr Init(int argc=0, const char **argv=nullptr)
static const char * DIAG_ERROR_LIMIT
static bool IsTurnError(const std::string name)
#define DEFINE_CASE(name)
#define LOG_RUNTIME(format,...)
#define ASSERT(condition)
std::shared_ptr< Term > TermPtr
std::shared_ptr< Diag > DiagPtr