1679aeaddSZachary Turner //==- DIAEnumSourceFiles.cpp - DIA Source File Enumerator impl ---*- C++ -*-==// 2679aeaddSZachary Turner // 3*2946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*2946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information. 5*2946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6679aeaddSZachary Turner // 7679aeaddSZachary Turner //===----------------------------------------------------------------------===// 8679aeaddSZachary Turner 9679aeaddSZachary Turner #include "llvm/DebugInfo/PDB/DIA/DIAEnumInjectedSources.h" 10679aeaddSZachary Turner #include "llvm/DebugInfo/PDB/DIA/DIAInjectedSource.h" 11679aeaddSZachary Turner #include "llvm/DebugInfo/PDB/PDBSymbol.h" 12679aeaddSZachary Turner 13679aeaddSZachary Turner using namespace llvm; 14679aeaddSZachary Turner using namespace llvm::pdb; 15679aeaddSZachary Turner DIAEnumInjectedSources(CComPtr<IDiaEnumInjectedSources> DiaEnumerator)16679aeaddSZachary TurnerDIAEnumInjectedSources::DIAEnumInjectedSources( 17679aeaddSZachary Turner CComPtr<IDiaEnumInjectedSources> DiaEnumerator) 18ba732f21SReid Kleckner : Enumerator(DiaEnumerator) {} 19679aeaddSZachary Turner getChildCount() const20679aeaddSZachary Turneruint32_t DIAEnumInjectedSources::getChildCount() const { 21679aeaddSZachary Turner LONG Count = 0; 22679aeaddSZachary Turner return (S_OK == Enumerator->get_Count(&Count)) ? Count : 0; 23679aeaddSZachary Turner } 24679aeaddSZachary Turner 25679aeaddSZachary Turner std::unique_ptr<IPDBInjectedSource> getChildAtIndex(uint32_t Index) const26679aeaddSZachary TurnerDIAEnumInjectedSources::getChildAtIndex(uint32_t Index) const { 27679aeaddSZachary Turner CComPtr<IDiaInjectedSource> Item; 28679aeaddSZachary Turner if (S_OK != Enumerator->Item(Index, &Item)) 29679aeaddSZachary Turner return nullptr; 30679aeaddSZachary Turner 318562c1a1SReid Kleckner return std::unique_ptr<IPDBInjectedSource>(new DIAInjectedSource(Item)); 32679aeaddSZachary Turner } 33679aeaddSZachary Turner getNext()34679aeaddSZachary Turnerstd::unique_ptr<IPDBInjectedSource> DIAEnumInjectedSources::getNext() { 35679aeaddSZachary Turner CComPtr<IDiaInjectedSource> Item; 36679aeaddSZachary Turner ULONG NumFetched = 0; 37679aeaddSZachary Turner if (S_OK != Enumerator->Next(1, &Item, &NumFetched)) 38679aeaddSZachary Turner return nullptr; 39679aeaddSZachary Turner 408562c1a1SReid Kleckner return std::unique_ptr<IPDBInjectedSource>(new DIAInjectedSource(Item)); 41679aeaddSZachary Turner } 42679aeaddSZachary Turner reset()43679aeaddSZachary Turnervoid DIAEnumInjectedSources::reset() { Enumerator->Reset(); } 44