xref: /llvm-project/llvm/lib/DebugInfo/PDB/Native/NativeEnumModules.cpp (revision eb4c8608115c1c9af0fc8cb5b1e9f2bc960014ef)
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 Turner NativeEnumModules::NativeEnumModules(NativeSession &PDBSession, uint32_t Index)
207999b4faSZachary Turner     : Session(PDBSession), Index(Index) {}
2165d26888SAdrian McCarthy 
getChildCount() const2265d26888SAdrian McCarthy uint32_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 Turner NativeEnumModules::getChildAtIndex(uint32_t N) const {
288ab7dd60SZachary Turner   return Session.getSymbolCache().getOrCreateCompiland(N);
2965d26888SAdrian McCarthy }
3065d26888SAdrian McCarthy 
getNext()3165d26888SAdrian McCarthy std::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 McCarthy void NativeEnumModules::reset() { Index = 0; }
3865d26888SAdrian McCarthy 
3965d26888SAdrian McCarthy }
4065d26888SAdrian McCarthy }
41