//===- DiagnosticInfo.h ---------------------------------------------------===// // // The MCLinker Project // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #ifndef MCLD_LD_DIAGNOSTICINFOS_H_ #define MCLD_LD_DIAGNOSTICINFOS_H_ #include namespace mcld { namespace diag { enum ID { #define DIAG(ENUM, CLASS, ADDRMSG, LINEMSG) ENUM, #include "mcld/LD/DiagAttribute.inc" #include "mcld/LD/DiagCommonKinds.inc" #include "mcld/LD/DiagReaders.inc" #include "mcld/LD/DiagSymbolResolutions.inc" #include "mcld/LD/DiagRelocations.inc" #include "mcld/LD/DiagLayouts.inc" #include "mcld/LD/DiagGOTPLT.inc" #include "mcld/LD/DiagLDScript.inc" #include "mcld/LD/DiagMips.inc" #undef DIAG NUM_OF_BUILDIN_DIAGNOSTIC_INFO }; } // namespace diag class DiagnosticEngine; class LinkerConfig; /** \class DiagnosticInfos * \brief DiagnosticInfos caches run-time information of DiagnosticInfo. */ class DiagnosticInfos { public: explicit DiagnosticInfos(const LinkerConfig& pConfig); ~DiagnosticInfos(); llvm::StringRef getDescription(unsigned int pID, bool pLoC) const; bool process(DiagnosticEngine& pEngine) const; private: const LinkerConfig& m_Config; }; } // namespace mcld #endif // MCLD_LD_DIAGNOSTICINFOS_H_