1bc980340SAmy Huang //==- NativeEnumSymbols.cpp - Native Symbol Enumerator impl ------*- C++ -*-==// 2bc980340SAmy Huang // 3bc980340SAmy Huang // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4bc980340SAmy Huang // See https://llvm.org/LICENSE.txt for license information. 5bc980340SAmy Huang // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6bc980340SAmy Huang // 7bc980340SAmy Huang //===----------------------------------------------------------------------===// 8bc980340SAmy Huang 9bc980340SAmy Huang #include "llvm/DebugInfo/PDB/Native/NativeEnumSymbols.h" 10bc980340SAmy Huang 11bc980340SAmy Huang #include "llvm/DebugInfo/PDB/Native/NativeSession.h" 12*eb4c8608Sserge-sans-paille #include "llvm/DebugInfo/PDB/Native/SymbolCache.h" 13bc980340SAmy Huang #include "llvm/DebugInfo/PDB/PDBSymbol.h" 14bc980340SAmy Huang 15bc980340SAmy Huang using namespace llvm; 16bc980340SAmy Huang using namespace llvm::codeview; 17bc980340SAmy Huang using namespace llvm::pdb; 18bc980340SAmy Huang 19bc980340SAmy Huang NativeEnumSymbols::NativeEnumSymbols(NativeSession &PDBSession, 20bc980340SAmy Huang std::vector<SymIndexId> Symbols) 21bc980340SAmy Huang : Symbols(std::move(Symbols)), Index(0), Session(PDBSession) {} 22bc980340SAmy Huang 23bc980340SAmy Huang uint32_t NativeEnumSymbols::getChildCount() const { 24bc980340SAmy Huang return static_cast<uint32_t>(Symbols.size()); 25bc980340SAmy Huang } 26bc980340SAmy Huang 27bc980340SAmy Huang std::unique_ptr<PDBSymbol> 28bc980340SAmy Huang NativeEnumSymbols::getChildAtIndex(uint32_t N) const { 29bc980340SAmy Huang if (N < Symbols.size()) { 30bc980340SAmy Huang return Session.getSymbolCache().getSymbolById(Symbols[N]); 31bc980340SAmy Huang } 32bc980340SAmy Huang return nullptr; 33bc980340SAmy Huang } 34bc980340SAmy Huang 35bc980340SAmy Huang std::unique_ptr<PDBSymbol> NativeEnumSymbols::getNext() { 36bc980340SAmy Huang return getChildAtIndex(Index++); 37bc980340SAmy Huang } 38bc980340SAmy Huang 39bc980340SAmy Huang void NativeEnumSymbols::reset() { Index = 0; } 40