1 //===- PrettyBuiltinDumper.cpp ---------------------------------- *- C++ *-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #include "PrettyBuiltinDumper.h"
11 #include "LinePrinter.h"
13 #include "llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h"
16 using namespace llvm::pdb;
18 BuiltinDumper::BuiltinDumper(LinePrinter &P)
19 : PDBSymDumper(false), Printer(P) {}
21 void BuiltinDumper::start(const PDBSymbolTypeBuiltin &Symbol) {
22 if (Symbol.isConstType())
23 WithColor(Printer, PDB_ColorItem::Keyword).get() << "const ";
24 if (Symbol.isVolatileType())
25 WithColor(Printer, PDB_ColorItem::Keyword).get() << "volatile ";
26 WithColor(Printer, PDB_ColorItem::Type).get() << getTypeName(Symbol);
29 StringRef BuiltinDumper::getTypeName(const PDBSymbolTypeBuiltin &Symbol) {
30 PDB_BuiltinType Type = Symbol.getBuiltinType();
32 case PDB_BuiltinType::Float:
33 if (Symbol.getLength() == 4)
36 case PDB_BuiltinType::UInt:
37 switch (Symbol.getLength()) {
39 return "unsigned __int64";
41 return "unsigned int";
43 return "unsigned short";
45 return "unsigned char";
49 case PDB_BuiltinType::Int:
50 switch (Symbol.getLength()) {
62 case PDB_BuiltinType::Char:
64 case PDB_BuiltinType::WCharT:
66 case PDB_BuiltinType::Void:
68 case PDB_BuiltinType::Long:
70 case PDB_BuiltinType::ULong:
71 return "unsigned long";
72 case PDB_BuiltinType::Bool:
74 case PDB_BuiltinType::Currency:
76 case PDB_BuiltinType::Date:
78 case PDB_BuiltinType::Variant:
80 case PDB_BuiltinType::Complex:
82 case PDB_BuiltinType::Bitfield:
84 case PDB_BuiltinType::BSTR:
86 case PDB_BuiltinType::HResult:
88 case PDB_BuiltinType::BCD:
90 case PDB_BuiltinType::Char16:
92 case PDB_BuiltinType::Char32:
94 case PDB_BuiltinType::None:
97 llvm_unreachable("Unknown PDB_BuiltinType");