29 FunctionArgEnumerator(
const IPDBSession &PDBSession,
31 : Session(PDBSession),
34 FunctionArgEnumerator(
const IPDBSession &PDBSession,
35 std::unique_ptr<ArgEnumeratorType> ArgEnumerator)
43 auto FunctionArgSymbol =
Enumerator->getChildAtIndex(Index);
44 if (!FunctionArgSymbol)
46 return Session.getSymbolById(FunctionArgSymbol->getTypeId());
49 std::unique_ptr<PDBSymbol>
getNext()
override {
50 auto FunctionArgSymbol =
Enumerator->getNext();
51 if (!FunctionArgSymbol)
53 return Session.getSymbolById(FunctionArgSymbol->getTypeId());
64std::unique_ptr<IPDBEnumSymbols>
66 return std::make_unique<FunctionArgEnumerator>(
Session, *
this);
81 uint32_t NumArgs = SigArguments->getChildCount();
84 auto Last = SigArguments->getChildAtIndex(NumArgs - 1);
85 if (
auto Builtin = llvm::dyn_cast_or_null<PDBSymbolTypeBuiltin>(
Last.get())) {
virtual uint32_t getChildCount() const=0
virtual ChildTypePtr getNext()=0
virtual ChildTypePtr getChildAtIndex(uint32_t Index) const=0
IPDBSession defines an interface used to provide a context for querying debug information from a debu...
virtual void dump(const PDBSymbolAnnotation &Symbol)
virtual void dumpRight(const PDBSymbolTypeArray &Symbol)
void dump(PDBSymDumper &Dumper) const override
Dumps the contents of a symbol a raw_ostream.
std::unique_ptr< IPDBEnumSymbols > getArguments() const
void dumpRight(PDBSymDumper &Dumper) const override
For certain PDBSymbolTypes, dumps additional information for the type that normally goes on the right...
const IPDBSession & Session
This is an optimization pass for GlobalISel generic memory operations.
OutputIt move(R &&Range, OutputIt Out)
Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.
Implement std::hash so that hash_code can be used in STL containers.