NativeEnumGlobals.h revision 343171
1343171Sdim//==- NativeEnumGlobals.h - Native Global Enumerator impl --------*- C++ -*-==//
2343171Sdim//
3343171Sdim//                     The LLVM Compiler Infrastructure
4343171Sdim//
5343171Sdim// This file is distributed under the University of Illinois Open Source
6343171Sdim// License. See LICENSE.TXT for details.
7343171Sdim//
8343171Sdim//===----------------------------------------------------------------------===//
9343171Sdim
10343171Sdim#ifndef LLVM_DEBUGINFO_PDB_NATIVE_NATIVEENUMGLOBALS_H
11343171Sdim#define LLVM_DEBUGINFO_PDB_NATIVE_NATIVEENUMGLOBALS_H
12343171Sdim
13343171Sdim#include "llvm/DebugInfo/CodeView/SymbolRecord.h"
14343171Sdim#include "llvm/DebugInfo/PDB/IPDBEnumChildren.h"
15343171Sdim#include "llvm/DebugInfo/PDB/PDBSymbol.h"
16343171Sdim
17343171Sdim#include <vector>
18343171Sdim
19343171Sdimnamespace llvm {
20343171Sdimnamespace pdb {
21343171Sdim
22343171Sdimclass NativeSession;
23343171Sdim
24343171Sdimclass NativeEnumGlobals : public IPDBEnumChildren<PDBSymbol> {
25343171Sdimpublic:
26343171Sdim  NativeEnumGlobals(NativeSession &Session,
27343171Sdim                    std::vector<codeview::SymbolKind> Kinds);
28343171Sdim
29343171Sdim  uint32_t getChildCount() const override;
30343171Sdim  std::unique_ptr<PDBSymbol> getChildAtIndex(uint32_t Index) const override;
31343171Sdim  std::unique_ptr<PDBSymbol> getNext() override;
32343171Sdim  void reset() override;
33343171Sdim
34343171Sdimprivate:
35343171Sdim  std::vector<uint32_t> MatchOffsets;
36343171Sdim  uint32_t Index;
37343171Sdim  NativeSession &Session;
38343171Sdim};
39343171Sdim
40343171Sdim} // namespace pdb
41343171Sdim} // namespace llvm
42343171Sdim
43343171Sdim#endif
44