12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- //===- PrettyBuiltinDumper.cpp ---------------------------------- *- C++ *-===//
- //
- // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
- // See https://llvm.org/LICENSE.txt for license information.
- // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- //
- //===----------------------------------------------------------------------===//
- #include "PrettyBuiltinDumper.h"
- #include "LinePrinter.h"
- #include "llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h"
- using namespace llvm;
- using namespace llvm::pdb;
- BuiltinDumper::BuiltinDumper(LinePrinter &P)
- : PDBSymDumper(false), Printer(P) {}
- void BuiltinDumper::start(const PDBSymbolTypeBuiltin &Symbol) {
- if (Symbol.isConstType())
- WithColor(Printer, PDB_ColorItem::Keyword).get() << "const ";
- if (Symbol.isVolatileType())
- WithColor(Printer, PDB_ColorItem::Keyword).get() << "volatile ";
- WithColor(Printer, PDB_ColorItem::Type).get() << getTypeName(Symbol);
- }
- StringRef BuiltinDumper::getTypeName(const PDBSymbolTypeBuiltin &Symbol) {
- PDB_BuiltinType Type = Symbol.getBuiltinType();
- switch (Type) {
- case PDB_BuiltinType::Float:
- if (Symbol.getLength() == 4)
- return "float";
- return "double";
- case PDB_BuiltinType::UInt:
- switch (Symbol.getLength()) {
- case 8:
- return "unsigned __int64";
- case 4:
- return "unsigned int";
- case 2:
- return "unsigned short";
- case 1:
- return "unsigned char";
- default:
- return "unsigned";
- }
- case PDB_BuiltinType::Int:
- switch (Symbol.getLength()) {
- case 8:
- return "__int64";
- case 4:
- return "int";
- case 2:
- return "short";
- case 1:
- return "char";
- default:
- return "int";
- }
- case PDB_BuiltinType::Char:
- return "char";
- case PDB_BuiltinType::WCharT:
- return "wchar_t";
- case PDB_BuiltinType::Void:
- return "void";
- case PDB_BuiltinType::Long:
- return "long";
- case PDB_BuiltinType::ULong:
- return "unsigned long";
- case PDB_BuiltinType::Bool:
- return "bool";
- case PDB_BuiltinType::Currency:
- return "CURRENCY";
- case PDB_BuiltinType::Date:
- return "DATE";
- case PDB_BuiltinType::Variant:
- return "VARIANT";
- case PDB_BuiltinType::Complex:
- return "complex";
- case PDB_BuiltinType::Bitfield:
- return "bitfield";
- case PDB_BuiltinType::BSTR:
- return "BSTR";
- case PDB_BuiltinType::HResult:
- return "HRESULT";
- case PDB_BuiltinType::BCD:
- return "HRESULT";
- case PDB_BuiltinType::Char16:
- return "char16_t";
- case PDB_BuiltinType::Char32:
- return "char32_t";
- case PDB_BuiltinType::None:
- return "...";
- }
- llvm_unreachable("Unknown PDB_BuiltinType");
- }
|