#define LLVM_DEBUGINFO_PDB_IPDBSYMBOL_H
#include <memory>
+#include <unordered_map>
#include "llvm/ADT/StringRef.h"
#include "llvm/Support/Casting.h"
#include "IPDBRawSymbol.h"
+#include "PDBExtras.h"
#include "PDBTypes.h"
#define FORWARD_SYMBOL_METHOD(MethodName) \
/// call dump() on the underlying RawSymbol, which allows us to discover
/// unknown properties, but individual implementations of PDBSymbol may
/// override the behavior to only dump known fields.
- virtual void dump(llvm::raw_ostream &OS) const;
+ virtual void dump(raw_ostream &OS, int Indent, PDB_DumpLevel Level) const = 0;
+ void defaultDump(raw_ostream &OS, int Indent, PDB_DumpLevel Level) const;
PDB_SymType getSymTag() const;
+ std::unique_ptr<IPDBEnumSymbols> findChildren(PDB_SymType Type) const;
std::unique_ptr<IPDBEnumSymbols>
findChildren(PDB_SymType Type, StringRef Name,
PDB_NameSearchFlags Flags) const;
uint32_t RVA) const;
std::unique_ptr<IPDBEnumSymbols> findInlineFramesByRVA(uint32_t RVA) const;
+ const IPDBRawSymbol &getRawSymbol() const { return *RawSymbol; }
+ IPDBRawSymbol &getRawSymbol() { return *RawSymbol; }
+
protected:
+ std::unique_ptr<IPDBEnumSymbols> getChildStats(TagStats &Stats) const;
+
const IPDBSession &Session;
const std::unique_ptr<IPDBRawSymbol> RawSymbol;
};