xref: /llvm-project/llvm/lib/DebugInfo/PDB/DIA/DIAEnumInjectedSources.cpp (revision 2946cd701067404b99c39fb29dc9c74bd7193eb3)
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 Turner DIAEnumInjectedSources::DIAEnumInjectedSources(
17679aeaddSZachary Turner     CComPtr<IDiaEnumInjectedSources> DiaEnumerator)
18ba732f21SReid Kleckner     : Enumerator(DiaEnumerator) {}
19679aeaddSZachary Turner 
getChildCount() const20679aeaddSZachary Turner uint32_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 Turner DIAEnumInjectedSources::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 Turner std::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 Turner void DIAEnumInjectedSources::reset() { Enumerator->Reset(); }
44