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"
12 #include "llvm-pdbutil.h"
14 #include "llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h"
17 using namespace llvm::pdb;
19 BuiltinDumper::BuiltinDumper(LinePrinter &P)
20 : PDBSymDumper(false), Printer(P) {}
22 void BuiltinDumper::start(const PDBSymbolTypeBuiltin &Symbol) {
23 if (Symbol.isConstType())
24 WithColor(Printer, PDB_ColorItem::Keyword).get() << "const ";
25 if (Symbol.isVolatileType())
26 WithColor(Printer, PDB_ColorItem::Keyword).get() << "volatile ";
27 WithColor(Printer, PDB_ColorItem::Type).get() << getTypeName(Symbol);
30 StringRef BuiltinDumper::getTypeName(const PDBSymbolTypeBuiltin &Symbol) {
31 PDB_BuiltinType Type = Symbol.getBuiltinType();
33 case PDB_BuiltinType::Float:
34 if (Symbol.getLength() == 4)
37 case PDB_BuiltinType::UInt:
38 switch (Symbol.getLength()) {
40 return "unsigned __int64";
42 return "unsigned int";
44 return "unsigned short";
46 return "unsigned char";
50 case PDB_BuiltinType::Int:
51 switch (Symbol.getLength()) {
63 case PDB_BuiltinType::Char:
65 case PDB_BuiltinType::WCharT:
67 case PDB_BuiltinType::Void:
69 case PDB_BuiltinType::Long:
71 case PDB_BuiltinType::ULong:
72 return "unsigned long";
73 case PDB_BuiltinType::Bool:
75 case PDB_BuiltinType::Currency:
77 case PDB_BuiltinType::Date:
79 case PDB_BuiltinType::Variant:
81 case PDB_BuiltinType::Complex:
83 case PDB_BuiltinType::Bitfield:
85 case PDB_BuiltinType::BSTR:
87 case PDB_BuiltinType::HResult:
89 case PDB_BuiltinType::BCD: