1 //===- Formatters.h ---------------------------------------------*- C++ -*-===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 #ifndef LLVM_DEBUGINFO_PDB_NATIVE_FORMATTERS_H 11 #define LLVM_DEBUGINFO_PDB_NATIVE_FORMATTERS_H 12 13 #include "llvm/ADT/ArrayRef.h" 14 #include "llvm/ADT/StringRef.h" 15 #include "llvm/DebugInfo/CodeView/Formatters.h" 16 #include "llvm/DebugInfo/PDB/Native/RawConstants.h" 17 #include "llvm/DebugInfo/PDB/Native/RawTypes.h" 18 #include "llvm/Support/FormatProviders.h" 19 20 #define FORMAT_CASE(Value, Name) \ 21 case Value: \ 22 Stream << Name; \ 23 break; 24 25 namespace llvm { 26 template <> struct format_provider<pdb::PDB_UniqueId> { 27 static void format(const pdb::PDB_UniqueId &V, llvm::raw_ostream &Stream, 28 StringRef Style) { 29 codeview::fmt_guid(V.Guid).format(Stream, Style); 30 } 31 }; 32 33 template <> struct format_provider<pdb::PdbRaw_ImplVer> { 34 static void format(const pdb::PdbRaw_ImplVer &V, llvm::raw_ostream &Stream, 35 StringRef Style) { 36 switch (V) { 37 FORMAT_CASE(pdb::PdbRaw_ImplVer::PdbImplVC110, "VC110") 38 FORMAT_CASE(pdb::PdbRaw_ImplVer::PdbImplVC140, "VC140") 39 FORMAT_CASE(pdb::PdbRaw_ImplVer::PdbImplVC2, "VC2") 40 FORMAT_CASE(pdb::PdbRaw_ImplVer::PdbImplVC4, "VC4") 41 FORMAT_CASE(pdb::PdbRaw_ImplVer::PdbImplVC41, "VC41") 42 FORMAT_CASE(pdb::PdbRaw_ImplVer::PdbImplVC50, "VC50") 43 FORMAT_CASE(pdb::PdbRaw_ImplVer::PdbImplVC70, "VC70") 44 FORMAT_CASE(pdb::PdbRaw_ImplVer::PdbImplVC70Dep, "VC70Dep") 45 FORMAT_CASE(pdb::PdbRaw_ImplVer::PdbImplVC80, "VC80") 46 FORMAT_CASE(pdb::PdbRaw_ImplVer::PdbImplVC98, "VC98") 47 } 48 } 49 }; 50 } 51 52 #endif 53