xref: /openbsd-src/gnu/llvm/llvm/include/llvm/DebugInfo/PDB/Native/NativeEnumGlobals.h (revision d415bd752c734aee168c4ee86ff32e8cc249eb16)
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