109467b48Spatrick //==- NativeEnumGlobals.h - Native Global Enumerator impl --------*- C++ -*-==// 209467b48Spatrick // 309467b48Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 409467b48Spatrick // See https://llvm.org/LICENSE.txt for license information. 509467b48Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 609467b48Spatrick // 709467b48Spatrick //===----------------------------------------------------------------------===// 809467b48Spatrick 909467b48Spatrick #ifndef LLVM_DEBUGINFO_PDB_NATIVE_NATIVEENUMGLOBALS_H 1009467b48Spatrick #define LLVM_DEBUGINFO_PDB_NATIVE_NATIVEENUMGLOBALS_H 1109467b48Spatrick 12*d415bd75Srobert #include "llvm/DebugInfo/CodeView/CodeView.h" 1309467b48Spatrick #include "llvm/DebugInfo/PDB/IPDBEnumChildren.h" 1409467b48Spatrick #include "llvm/DebugInfo/PDB/PDBSymbol.h" 1509467b48Spatrick 1609467b48Spatrick #include <vector> 1709467b48Spatrick 1809467b48Spatrick namespace llvm { 1909467b48Spatrick namespace pdb { 2009467b48Spatrick 2109467b48Spatrick class NativeSession; 2209467b48Spatrick 2309467b48Spatrick class NativeEnumGlobals : public IPDBEnumChildren<PDBSymbol> { 2409467b48Spatrick public: 2509467b48Spatrick NativeEnumGlobals(NativeSession &Session, 2609467b48Spatrick std::vector<codeview::SymbolKind> Kinds); 2709467b48Spatrick 2809467b48Spatrick uint32_t getChildCount() const override; 2909467b48Spatrick std::unique_ptr<PDBSymbol> getChildAtIndex(uint32_t Index) const override; 3009467b48Spatrick std::unique_ptr<PDBSymbol> getNext() override; 3109467b48Spatrick void reset() override; 3209467b48Spatrick 3309467b48Spatrick private: 3409467b48Spatrick std::vector<uint32_t> MatchOffsets; 3509467b48Spatrick uint32_t Index; 3609467b48Spatrick NativeSession &Session; 3709467b48Spatrick }; 3809467b48Spatrick 3909467b48Spatrick } // namespace pdb 4009467b48Spatrick } // namespace llvm 4109467b48Spatrick 4209467b48Spatrick #endif 43