LLVM  10.0.0svn
DIAEnumTables.cpp
Go to the documentation of this file.
1 //===- DIAEnumTables.cpp - DIA Table Enumerator Impl ------------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
11 
12 using namespace llvm;
13 using namespace llvm::pdb;
14 
15 DIAEnumTables::DIAEnumTables(CComPtr<IDiaEnumTables> DiaEnumerator)
16  : Enumerator(DiaEnumerator) {}
17 
19  LONG Count = 0;
20  return (S_OK == Enumerator->get_Count(&Count)) ? Count : 0;
21 }
22 
23 std::unique_ptr<IPDBTable>
25  CComPtr<IDiaTable> Item;
26  VARIANT Var;
27  Var.vt = VT_UINT;
28  Var.uintVal = Index;
29  if (S_OK != Enumerator->Item(Var, &Item))
30  return nullptr;
31 
32  return std::unique_ptr<IPDBTable>(new DIATable(Item));
33 }
34 
35 std::unique_ptr<IPDBTable> DIAEnumTables::getNext() {
36  CComPtr<IDiaTable> Item;
37  ULONG CeltFetched = 0;
38  if (S_OK != Enumerator->Next(1, &Item, &CeltFetched))
39  return nullptr;
40 
41  return std::unique_ptr<IPDBTable>(new DIATable(Item));
42 }
43 
44 void DIAEnumTables::reset() { Enumerator->Reset(); }
std::unique_ptr< IPDBTable > getNext() override
This class represents lattice values for constants.
Definition: AllocatorList.h:23
uint32_t getChildCount() const override
std::unique_ptr< IPDBTable > getChildAtIndex(uint32_t Index) const override
DIAEnumTables(CComPtr< IDiaEnumTables > DiaEnumerator)