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