1//==- DIAEnumSymbols.h - DIA Symbol Enumerator impl --------------*- C++ -*-==//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#ifndef LLVM_DEBUGINFO_PDB_DIA_DIAENUMSYMBOLS_H
11#define LLVM_DEBUGINFO_PDB_DIA_DIAENUMSYMBOLS_H
12
13#include "DIASupport.h"
14#include "llvm/DebugInfo/PDB/IPDBEnumChildren.h"
15#include "llvm/DebugInfo/PDB/PDBSymbol.h"
16
17namespace llvm {
18namespace pdb {
19class DIASession;
20
21class DIAEnumSymbols : public IPDBEnumChildren<PDBSymbol> {
22public:
23  explicit DIAEnumSymbols(const DIASession &Session,
24                          CComPtr<IDiaEnumSymbols> DiaEnumerator);
25
26  uint32_t getChildCount() const override;
27  std::unique_ptr<PDBSymbol> getChildAtIndex(uint32_t Index) const override;
28  std::unique_ptr<PDBSymbol> getNext() override;
29  void reset() override;
30  DIAEnumSymbols *clone() const override;
31
32private:
33  const DIASession &Session;
34  CComPtr<IDiaEnumSymbols> Enumerator;
35};
36}
37}
38
39#endif
40