Exemple #1
0
void TypeDumper::dump(const PDBSymbolTypeEnum &Symbol) {
  if (Symbol.getUnmodifiedTypeId() != 0)
    return;
  if (Printer.IsTypeExcluded(Symbol.getName()))
    return;
  // Dump member enums when dumping their class definition.
  if (nullptr != Symbol.getClassParent())
    return;

  Printer.NewLine();
  EnumDumper Dumper(Printer);
  Dumper.start(Symbol);
}
void EnumDumper::start(const PDBSymbolTypeEnum &Symbol) {
  if (Symbol.getUnmodifiedTypeId() != 0) {
    if (Symbol.isConstType())
      WithColor(Printer, PDB_ColorItem::Keyword).get() << "const ";
    if (Symbol.isVolatileType())
      WithColor(Printer, PDB_ColorItem::Keyword).get() << "volatile ";
    if (Symbol.isUnalignedType())
      WithColor(Printer, PDB_ColorItem::Keyword).get() << "unaligned ";
    WithColor(Printer, PDB_ColorItem::Keyword).get() << "enum ";
    WithColor(Printer, PDB_ColorItem::Type).get() << Symbol.getName();
    return;
  }

  WithColor(Printer, PDB_ColorItem::Keyword).get() << "enum ";
  WithColor(Printer, PDB_ColorItem::Type).get() << Symbol.getName();
  if (!opts::pretty::NoEnumDefs) {
    auto UnderlyingType = Symbol.getUnderlyingType();
    if (!UnderlyingType)
      return;
    if (UnderlyingType->getBuiltinType() != PDB_BuiltinType::Int ||
        UnderlyingType->getLength() != 4) {
      Printer << " : ";
      BuiltinDumper Dumper(Printer);
      Dumper.start(*UnderlyingType);
    }
    auto EnumValues = Symbol.findAllChildren<PDBSymbolData>();
    Printer << " {";
    Printer.Indent();
    if (EnumValues && EnumValues->getChildCount() > 0) {
      while (auto EnumValue = EnumValues->getNext()) {
        if (EnumValue->getDataKind() != PDB_DataKind::Constant)
          continue;
        Printer.NewLine();
        WithColor(Printer, PDB_ColorItem::Identifier).get()
            << EnumValue->getName();
        Printer << " = ";
        WithColor(Printer, PDB_ColorItem::LiteralValue).get()
            << EnumValue->getValue();
      }
    }
    Printer.Unindent();
    Printer.NewLine();
    Printer << "}";
  }
}
void TypedefDumper::dump(const PDBSymbolTypeEnum &Symbol) {
  WithColor(Printer, PDB_ColorItem::Keyword).get() << "enum ";
  WithColor(Printer, PDB_ColorItem::Type).get() << " " << Symbol.getName();
}
void FunctionDumper::dump(const PDBSymbolTypeEnum &Symbol) {
  dumpClassParentWithScopeOperator(Symbol, Printer, *this);
  WithColor(Printer, PDB_ColorItem::Type).get() << Symbol.getName();
}
Exemple #5
0
void VariableDumper::dump(const PDBSymbolTypeEnum &Symbol) {
  WithColor(Printer, PDB_ColorItem::Type).get() << Symbol.getName();
}