29 FunctionArgEnumerator(
const IPDBSession &PDBSession,
31 : Session(PDBSession),
34 FunctionArgEnumerator(
const IPDBSession &PDBSession,
35 std::unique_ptr<ArgEnumeratorType> ArgEnumerator)
38 uint32_t getChildCount()
const override {
42 std::unique_ptr<PDBSymbol> getChildAtIndex(
uint32_t Index)
const override {
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());
64 std::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())) {