47 lines · cpp
1//==- DIAEnumSectionContribs.cpp ---------------------------------*- 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-exception6//7//===----------------------------------------------------------------------===//8 9#include "llvm/DebugInfo/PDB/DIA/DIAEnumSectionContribs.h"10#include "llvm/DebugInfo/PDB/DIA/DIASectionContrib.h"11#include "llvm/DebugInfo/PDB/DIA/DIASession.h"12 13using namespace llvm;14using namespace llvm::pdb;15 16DIAEnumSectionContribs::DIAEnumSectionContribs(17 const DIASession &PDBSession,18 CComPtr<IDiaEnumSectionContribs> DiaEnumerator)19 : Session(PDBSession), Enumerator(DiaEnumerator) {}20 21uint32_t DIAEnumSectionContribs::getChildCount() const {22 LONG Count = 0;23 return (S_OK == Enumerator->get_Count(&Count)) ? Count : 0;24}25 26std::unique_ptr<IPDBSectionContrib>27DIAEnumSectionContribs::getChildAtIndex(uint32_t Index) const {28 CComPtr<IDiaSectionContrib> Item;29 if (S_OK != Enumerator->Item(Index, &Item))30 return nullptr;31 32 return std::unique_ptr<IPDBSectionContrib>(33 new DIASectionContrib(Session, Item));34}35 36std::unique_ptr<IPDBSectionContrib> DIAEnumSectionContribs::getNext() {37 CComPtr<IDiaSectionContrib> Item;38 ULONG NumFetched = 0;39 if (S_OK != Enumerator->Next(1, &Item, &NumFetched))40 return nullptr;41 42 return std::unique_ptr<IPDBSectionContrib>(43 new DIASectionContrib(Session, Item));44}45 46void DIAEnumSectionContribs::reset() { Enumerator->Reset(); }47