30 FunctionArgEnumerator(
const IPDBSession &PDBSession,
32 : Session(PDBSession),
35 FunctionArgEnumerator(
const IPDBSession &PDBSession,
36 std::unique_ptr<ArgEnumeratorType> ArgEnumerator)
37 : Session(PDBSession),
Enumerator(
std::move(ArgEnumerator)) {}
39 uint32_t getChildCount()
const override {
43 std::unique_ptr<PDBSymbol> getChildAtIndex(
uint32_t Index)
const override {
44 auto FunctionArgSymbol =
Enumerator->getChildAtIndex(Index);
45 if (!FunctionArgSymbol)
47 return Session.getSymbolById(FunctionArgSymbol->getTypeId());
50 std::unique_ptr<PDBSymbol> getNext()
override {
51 auto FunctionArgSymbol =
Enumerator->getNext();
52 if (!FunctionArgSymbol)
54 return Session.getSymbolById(FunctionArgSymbol->getTypeId());
65 std::unique_ptr<IPDBEnumSymbols>
67 return llvm::make_unique<FunctionArgEnumerator>(Session, *
this);
79 auto SigArguments = getArguments();
82 uint32_t NumArgs = SigArguments->getChildCount();
85 auto Last = SigArguments->getChildAtIndex(NumArgs - 1);
86 if (
auto Builtin = llvm::dyn_cast_or_null<PDBSymbolTypeBuiltin>(Last.get())) {
IPDBSession defines an interface used to provide a context for querying debug information from a debu...
This class represents lattice values for constants.
void dumpRight(PDBSymDumper &Dumper) const override
For certain PDBSymbolTypes, dumps additional information for the type that normally goes on the right...
std::unique_ptr< IPDBEnumSymbols > getArguments() const
void dump(PDBSymDumper &Dumper) const override
Dumps the contents of a symbol a raw_ostream.
virtual void dumpRight(const PDBSymbolTypeArray &Symbol)
virtual void dump(const PDBSymbolAnnotation &Symbol)