blob: d80829841f3a21393fe99555e1656c091fdf5321 [file] [log] [blame]
Zachary Turneraa57c0a2015-02-26 23:51:49 +00001//===- 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"
Zachary Turner2d11c202015-02-27 09:15:59 +000011#include "LinePrinter.h"
Zachary Turneraa57c0a2015-02-26 23:51:49 +000012#include "llvm-pdbdump.h"
13
14#include "llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h"
15
16using namespace llvm;
17
Zachary Turner2d11c202015-02-27 09:15:59 +000018BuiltinDumper::BuiltinDumper(LinePrinter &P)
19 : PDBSymDumper(false), Printer(P) {}
Zachary Turneraa57c0a2015-02-26 23:51:49 +000020
Zachary Turnerb52d08d2015-03-01 06:51:29 +000021void BuiltinDumper::start(const PDBSymbolTypeBuiltin &Symbol) {
Zachary Turneraa57c0a2015-02-26 23:51:49 +000022 PDB_BuiltinType Type = Symbol.getBuiltinType();
23 switch (Type) {
24 case PDB_BuiltinType::Float:
Zachary Turner2d11c202015-02-27 09:15:59 +000025 if (Symbol.getLength() == 4)
26 WithColor(Printer, PDB_ColorItem::Type).get() << "float";
27 else
28 WithColor(Printer, PDB_ColorItem::Type).get() << "double";
Zachary Turneraa57c0a2015-02-26 23:51:49 +000029 break;
30 case PDB_BuiltinType::UInt:
Zachary Turner2d11c202015-02-27 09:15:59 +000031 WithColor(Printer, PDB_ColorItem::Type).get() << "unsigned";
Zachary Turneraa57c0a2015-02-26 23:51:49 +000032 if (Symbol.getLength() == 8)
Zachary Turner2d11c202015-02-27 09:15:59 +000033 WithColor(Printer, PDB_ColorItem::Type).get() << " __int64";
Zachary Turneraa57c0a2015-02-26 23:51:49 +000034 break;
35 case PDB_BuiltinType::Int:
Zachary Turner2d11c202015-02-27 09:15:59 +000036 if (Symbol.getLength() == 4)
37 WithColor(Printer, PDB_ColorItem::Type).get() << "int";
38 else
39 WithColor(Printer, PDB_ColorItem::Type).get() << "__int64";
Zachary Turneraa57c0a2015-02-26 23:51:49 +000040 break;
41 case PDB_BuiltinType::Char:
Zachary Turner2d11c202015-02-27 09:15:59 +000042 WithColor(Printer, PDB_ColorItem::Type).get() << "char";
Zachary Turneraa57c0a2015-02-26 23:51:49 +000043 break;
44 case PDB_BuiltinType::WCharT:
Zachary Turner2d11c202015-02-27 09:15:59 +000045 WithColor(Printer, PDB_ColorItem::Type).get() << "wchar_t";
Zachary Turneraa57c0a2015-02-26 23:51:49 +000046 break;
47 case PDB_BuiltinType::Void:
Zachary Turner2d11c202015-02-27 09:15:59 +000048 WithColor(Printer, PDB_ColorItem::Type).get() << "void";
Zachary Turneraa57c0a2015-02-26 23:51:49 +000049 break;
50 case PDB_BuiltinType::Long:
Zachary Turner2d11c202015-02-27 09:15:59 +000051 WithColor(Printer, PDB_ColorItem::Type).get() << "long";
Zachary Turneraa57c0a2015-02-26 23:51:49 +000052 break;
53 case PDB_BuiltinType::ULong:
Zachary Turner2d11c202015-02-27 09:15:59 +000054 WithColor(Printer, PDB_ColorItem::Type).get() << "unsigned long";
Zachary Turneraa57c0a2015-02-26 23:51:49 +000055 break;
56 case PDB_BuiltinType::Bool:
Zachary Turner2d11c202015-02-27 09:15:59 +000057 WithColor(Printer, PDB_ColorItem::Type).get() << "bool";
Zachary Turneraa57c0a2015-02-26 23:51:49 +000058 break;
59 case PDB_BuiltinType::Currency:
Zachary Turner2d11c202015-02-27 09:15:59 +000060 WithColor(Printer, PDB_ColorItem::Type).get() << "CURRENCY";
Zachary Turneraa57c0a2015-02-26 23:51:49 +000061 break;
62 case PDB_BuiltinType::Date:
Zachary Turner2d11c202015-02-27 09:15:59 +000063 WithColor(Printer, PDB_ColorItem::Type).get() << "DATE";
Zachary Turneraa57c0a2015-02-26 23:51:49 +000064 break;
65 case PDB_BuiltinType::Variant:
Zachary Turner2d11c202015-02-27 09:15:59 +000066 WithColor(Printer, PDB_ColorItem::Type).get() << "VARIANT";
Zachary Turneraa57c0a2015-02-26 23:51:49 +000067 break;
68 case PDB_BuiltinType::Complex:
Zachary Turner2d11c202015-02-27 09:15:59 +000069 WithColor(Printer, PDB_ColorItem::Type).get() << "complex";
Zachary Turneraa57c0a2015-02-26 23:51:49 +000070 break;
71 case PDB_BuiltinType::Bitfield:
Zachary Turner2d11c202015-02-27 09:15:59 +000072 WithColor(Printer, PDB_ColorItem::Type).get() << "bitfield";
Zachary Turneraa57c0a2015-02-26 23:51:49 +000073 break;
74 case PDB_BuiltinType::BSTR:
Zachary Turner2d11c202015-02-27 09:15:59 +000075 WithColor(Printer, PDB_ColorItem::Type).get() << "BSTR";
Zachary Turneraa57c0a2015-02-26 23:51:49 +000076 break;
77 case PDB_BuiltinType::HResult:
Zachary Turner2d11c202015-02-27 09:15:59 +000078 WithColor(Printer, PDB_ColorItem::Type).get() << "HRESULT";
Zachary Turneraa57c0a2015-02-26 23:51:49 +000079 break;
80 case PDB_BuiltinType::BCD:
Zachary Turner2d11c202015-02-27 09:15:59 +000081 WithColor(Printer, PDB_ColorItem::Type).get() << "HRESULT";
Zachary Turneraa57c0a2015-02-26 23:51:49 +000082 break;
83 default:
Zachary Turner7797c722015-03-02 04:39:56 +000084 WithColor(Printer, PDB_ColorItem::Type).get() << "void";
Zachary Turneraa57c0a2015-02-26 23:51:49 +000085 break;
86 }
87}