28 FunctionArgEnumerator(
const IPDBSession &PDBSession,
30 : Session(PDBSession),
33 FunctionArgEnumerator(
const IPDBSession &PDBSession,
34 std::unique_ptr<ArgEnumeratorType> ArgEnumerator)
35 : Session(PDBSession),
Enumerator(std::move(ArgEnumerator)) {}
37 uint32_t getChildCount()
const override {
41 std::unique_ptr<PDBSymbol> getChildAtIndex(uint32_t Index)
const override {
42 auto FunctionArgSymbol =
Enumerator->getChildAtIndex(Index);
43 if (!FunctionArgSymbol)
45 return Session.getSymbolById(FunctionArgSymbol->getTypeId());
48 std::unique_ptr<PDBSymbol> getNext()
override {
49 auto FunctionArgSymbol =
Enumerator->getNext();
50 if (!FunctionArgSymbol)
52 return Session.getSymbolById(FunctionArgSymbol->getTypeId());
57 MyType *clone()
const override {
58 std::unique_ptr<ArgEnumeratorType> Clone(
Enumerator->clone());
59 return new FunctionArgEnumerator(Session, std::move(Clone));
70 :
PDBSymbol(PDBSession, std::move(Symbol)) {}
76 std::unique_ptr<IPDBEnumSymbols>
78 return llvm::make_unique<FunctionArgEnumerator>(
Session, *
this);
82 uint32_t ClassId = getClassParentId();
virtual std::unique_ptr< PDBSymbol > getSymbolById(uint32_t SymbolId) const =0
PDBSymbolTypeFunctionSig(const IPDBSession &PDBSession, std::unique_ptr< IPDBRawSymbol > Symbol)
virtual void dump(const PDBSymbolAnnotation &Symbol)
PDBSymbol defines the base of the inheritance hierarchy for concrete symbol types (e...
std::unique_ptr< PDBSymbol > getClassParent() const
std::unique_ptr< IPDBEnumSymbols > getArguments() const
const IPDBSession & Session
IPDBSession defines an interface used to provide a context for querying debug information from a debu...
std::unique_ptr< PDBSymbol > getReturnType() const
void dump(PDBSymDumper &Dumper) const override
Dumps the contents of a symbol a raw_ostream.