1//===- BuiltinDumper.cpp ---------------------------------------- *- 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#include "BuiltinDumper.h"
11#include "LinePrinter.h"
12#include "llvm-pdbdump.h"
13
14#include "llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h"
15
16using namespace llvm;
17
18BuiltinDumper::BuiltinDumper(LinePrinter &P)
19    : PDBSymDumper(false), Printer(P) {}
20
21void BuiltinDumper::start(const PDBSymbolTypeBuiltin &Symbol) {
22  WithColor(Printer, PDB_ColorItem::Type).get() << getTypeName(Symbol);
23}
24
25StringRef BuiltinDumper::getTypeName(const PDBSymbolTypeBuiltin &Symbol) {
26  PDB_BuiltinType Type = Symbol.getBuiltinType();
27  switch (Type) {
28  case PDB_BuiltinType::Float:
29    if (Symbol.getLength() == 4)
30      return "float";
31    return "double";
32  case PDB_BuiltinType::UInt:
33    if (Symbol.getLength() == 8)
34      return "unsigned __int64";
35    return "unsigned";
36  case PDB_BuiltinType::Int:
37    if (Symbol.getLength() == 4)
38      return "int";
39    return "__int64";
40  case PDB_BuiltinType::Char:
41    return "char";
42  case PDB_BuiltinType::WCharT:
43    return "wchar_t";
44  case PDB_BuiltinType::Void:
45    return "void";
46  case PDB_BuiltinType::Long:
47    return "long";
48  case PDB_BuiltinType::ULong:
49    return "unsigned long";
50  case PDB_BuiltinType::Bool:
51    return "bool";
52  case PDB_BuiltinType::Currency:
53    return "CURRENCY";
54  case PDB_BuiltinType::Date:
55    return "DATE";
56  case PDB_BuiltinType::Variant:
57    return "VARIANT";
58  case PDB_BuiltinType::Complex:
59    return "complex";
60  case PDB_BuiltinType::Bitfield:
61    return "bitfield";
62  case PDB_BuiltinType::BSTR:
63    return "BSTR";
64  case PDB_BuiltinType::HResult:
65    return "HRESULT";
66  case PDB_BuiltinType::BCD:
67    return "HRESULT";
68  default:
69    return "void";
70  }
71}
72