165d26888SAdrian McCarthy //==- NativeEnumModules.cpp - Native Symbol Enumerator impl ------*- C++ -*-==// 265d26888SAdrian McCarthy // 32946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 42946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information. 52946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 665d26888SAdrian McCarthy // 765d26888SAdrian McCarthy //===----------------------------------------------------------------------===// 865d26888SAdrian McCarthy 965d26888SAdrian McCarthy #include "llvm/DebugInfo/PDB/Native/NativeEnumModules.h" 1065d26888SAdrian McCarthy 1165d26888SAdrian McCarthy #include "llvm/DebugInfo/PDB/Native/NativeSession.h" 12*eb4c8608Sserge-sans-paille #include "llvm/DebugInfo/PDB/Native/SymbolCache.h" 1365d26888SAdrian McCarthy #include "llvm/DebugInfo/PDB/PDBSymbol.h" 1465d26888SAdrian McCarthy #include "llvm/DebugInfo/PDB/PDBSymbolCompiland.h" 1565d26888SAdrian McCarthy 1665d26888SAdrian McCarthy namespace llvm { 1765d26888SAdrian McCarthy namespace pdb { 1865d26888SAdrian McCarthy NativeEnumModules(NativeSession & PDBSession,uint32_t Index)197999b4faSZachary TurnerNativeEnumModules::NativeEnumModules(NativeSession &PDBSession, uint32_t Index) 207999b4faSZachary Turner : Session(PDBSession), Index(Index) {} 2165d26888SAdrian McCarthy getChildCount() const2265d26888SAdrian McCarthyuint32_t NativeEnumModules::getChildCount() const { 238ab7dd60SZachary Turner return Session.getSymbolCache().getNumCompilands(); 2465d26888SAdrian McCarthy } 2565d26888SAdrian McCarthy 2665d26888SAdrian McCarthy std::unique_ptr<PDBSymbol> getChildAtIndex(uint32_t N) const277999b4faSZachary TurnerNativeEnumModules::getChildAtIndex(uint32_t N) const { 288ab7dd60SZachary Turner return Session.getSymbolCache().getOrCreateCompiland(N); 2965d26888SAdrian McCarthy } 3065d26888SAdrian McCarthy getNext()3165d26888SAdrian McCarthystd::unique_ptr<PDBSymbol> NativeEnumModules::getNext() { 327999b4faSZachary Turner if (Index >= getChildCount()) 3365d26888SAdrian McCarthy return nullptr; 3465d26888SAdrian McCarthy return getChildAtIndex(Index++); 3565d26888SAdrian McCarthy } 3665d26888SAdrian McCarthy reset()3765d26888SAdrian McCarthyvoid NativeEnumModules::reset() { Index = 0; } 3865d26888SAdrian McCarthy 3965d26888SAdrian McCarthy } 4065d26888SAdrian McCarthy } 41