1343171Sdim//==- NativeEnumGlobals.h - Native Global Enumerator impl --------*- C++ -*-==//
2343171Sdim//
3353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4353358Sdim// See https://llvm.org/LICENSE.txt for license information.
5353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6343171Sdim//
7343171Sdim//===----------------------------------------------------------------------===//
8343171Sdim
9343171Sdim#ifndef LLVM_DEBUGINFO_PDB_NATIVE_NATIVEENUMGLOBALS_H
10343171Sdim#define LLVM_DEBUGINFO_PDB_NATIVE_NATIVEENUMGLOBALS_H
11343171Sdim
12343171Sdim#include "llvm/DebugInfo/CodeView/SymbolRecord.h"
13343171Sdim#include "llvm/DebugInfo/PDB/IPDBEnumChildren.h"
14343171Sdim#include "llvm/DebugInfo/PDB/PDBSymbol.h"
15343171Sdim
16343171Sdim#include <vector>
17343171Sdim
18343171Sdimnamespace llvm {
19343171Sdimnamespace pdb {
20343171Sdim
21343171Sdimclass NativeSession;
22343171Sdim
23343171Sdimclass NativeEnumGlobals : public IPDBEnumChildren<PDBSymbol> {
24343171Sdimpublic:
25343171Sdim  NativeEnumGlobals(NativeSession &Session,
26343171Sdim                    std::vector<codeview::SymbolKind> Kinds);
27343171Sdim
28343171Sdim  uint32_t getChildCount() const override;
29343171Sdim  std::unique_ptr<PDBSymbol> getChildAtIndex(uint32_t Index) const override;
30343171Sdim  std::unique_ptr<PDBSymbol> getNext() override;
31343171Sdim  void reset() override;
32343171Sdim
33343171Sdimprivate:
34343171Sdim  std::vector<uint32_t> MatchOffsets;
35343171Sdim  uint32_t Index;
36343171Sdim  NativeSession &Session;
37343171Sdim};
38343171Sdim
39343171Sdim} // namespace pdb
40343171Sdim} // namespace llvm
41343171Sdim
42343171Sdim#endif
43