1234287Sdim//===- BuiltinDumper.cpp ---------------------------------------- *- C++ *-===// 2234287Sdim// 3234287Sdim// The LLVM Compiler Infrastructure 4234287Sdim// 5234287Sdim// This file is distributed under the University of Illinois Open Source 6234287Sdim// License. See LICENSE.TXT for details. 7234287Sdim// 8234287Sdim//===----------------------------------------------------------------------===// 9234287Sdim 10234287Sdim#include "BuiltinDumper.h" 11234287Sdim#include "LinePrinter.h" 12234287Sdim#include "llvm-pdbdump.h" 13234287Sdim 14234287Sdim#include "llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h" 15234287Sdim 16234287Sdimusing namespace llvm; 17234287Sdim 18234287SdimBuiltinDumper::BuiltinDumper(LinePrinter &P) 19234287Sdim : PDBSymDumper(false), Printer(P) {} 20234287Sdim 21234287Sdimvoid BuiltinDumper::start(const PDBSymbolTypeBuiltin &Symbol) { 22234287Sdim WithColor(Printer, PDB_ColorItem::Type).get() << getTypeName(Symbol); 23234287Sdim} 24234287Sdim 25234287SdimStringRef BuiltinDumper::getTypeName(const PDBSymbolTypeBuiltin &Symbol) { 26234287Sdim PDB_BuiltinType Type = Symbol.getBuiltinType(); 27288943Sdim switch (Type) { 28296417Sdim case PDB_BuiltinType::Float: 29288943Sdim if (Symbol.getLength() == 4) 30288943Sdim return "float"; 31234287Sdim return "double"; 32234287Sdim case PDB_BuiltinType::UInt: 33234287Sdim if (Symbol.getLength() == 8) 34234287Sdim return "unsigned __int64"; 35234287Sdim return "unsigned"; 36296417Sdim case PDB_BuiltinType::Int: 37296417Sdim if (Symbol.getLength() == 4) 38296417Sdim return "int"; 39296417Sdim return "__int64"; 40296417Sdim case PDB_BuiltinType::Char: 41296417Sdim return "char"; 42234287Sdim case PDB_BuiltinType::WCharT: 43288943Sdim return "wchar_t"; 44234287Sdim case PDB_BuiltinType::Void: 45234287Sdim return "void"; 46234287Sdim case PDB_BuiltinType::Long: 47234287Sdim return "long"; 48296417Sdim case PDB_BuiltinType::ULong: 49296417Sdim return "unsigned long"; 50296417Sdim case PDB_BuiltinType::Bool: 51296417Sdim return "bool"; 52296417Sdim case PDB_BuiltinType::Currency: 53296417Sdim return "CURRENCY"; 54234287Sdim case PDB_BuiltinType::Date: 55234287Sdim return "DATE"; 56288943Sdim case PDB_BuiltinType::Variant: 57288943Sdim return "VARIANT"; 58234287Sdim 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