1139823Simp//==- DIAEnumSourceFiles.cpp - DIA Source File Enumerator impl ---*- C++ -*-==//
21541Srgrimes//
31541Srgrimes// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
41541Srgrimes// See https://llvm.org/LICENSE.txt for license information.
51541Srgrimes// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
61541Srgrimes//
71541Srgrimes//===----------------------------------------------------------------------===//
81541Srgrimes
91541Srgrimes#include "llvm/DebugInfo/PDB/DIA/DIAEnumInjectedSources.h"
101541Srgrimes#include "llvm/DebugInfo/PDB/DIA/DIAInjectedSource.h"
111541Srgrimes#include "llvm/DebugInfo/PDB/PDBSymbol.h"
121541Srgrimes
131541Srgrimesusing namespace llvm;
141541Srgrimesusing namespace llvm::pdb;
151541Srgrimes
161541SrgrimesDIAEnumInjectedSources::DIAEnumInjectedSources(
171541Srgrimes    CComPtr<IDiaEnumInjectedSources> DiaEnumerator)
181541Srgrimes    : Enumerator(DiaEnumerator) {}
191541Srgrimes
201541Srgrimesuint32_t DIAEnumInjectedSources::getChildCount() const {
211541Srgrimes  LONG Count = 0;
221541Srgrimes  return (S_OK == Enumerator->get_Count(&Count)) ? Count : 0;
231541Srgrimes}
241541Srgrimes
251541Srgrimesstd::unique_ptr<IPDBInjectedSource>
261541SrgrimesDIAEnumInjectedSources::getChildAtIndex(uint32_t Index) const {
271541Srgrimes  CComPtr<IDiaInjectedSource> Item;
281541Srgrimes  if (S_OK != Enumerator->Item(Index, &Item))
291541Srgrimes    return nullptr;
301541Srgrimes
311541Srgrimes  return std::unique_ptr<IPDBInjectedSource>(new DIAInjectedSource(Item));
32172467Ssilby}
33172467Ssilby
34172467Ssilbystd::unique_ptr<IPDBInjectedSource> DIAEnumInjectedSources::getNext() {
35262743Sglebius  CComPtr<IDiaInjectedSource> Item;
3637413Sjulian  ULONG NumFetched = 0;
3755009Sshin  if (S_OK != Enumerator->Next(1, &Item, &NumFetched))
38254889Smarkj    return nullptr;
39113384Ssilby
40178167Sqingli  return std::unique_ptr<IPDBInjectedSource>(new DIAInjectedSource(Item));
41254889Smarkj}
42188066Srrs
4330966Sjoergvoid DIAEnumInjectedSources::reset() { Enumerator->Reset(); }
441541Srgrimes