//==- NativeEnumLineNumbers.cpp - Native Type Enumerator impl ----*- C++ -*-==//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#include "llvm/DebugInfo/PDB/Native/NativeEnumLineNumbers.h"

#include "llvm/ADT/STLExtras.h"
#include "llvm/DebugInfo/CodeView/DebugLinesSubsection.h"
#include "llvm/DebugInfo/CodeView/DebugSubsectionRecord.h"
#include "llvm/DebugInfo/PDB/IPDBEnumChildren.h"
#include "llvm/DebugInfo/PDB/Native/NativeLineNumber.h"
#include "llvm/DebugInfo/PDB/Native/NativeSession.h"
#include "llvm/DebugInfo/PDB/Native/NativeSourceFile.h"

using namespace llvm;
using namespace llvm::codeview;
using namespace llvm::pdb;

NativeEnumLineNumbers::NativeEnumLineNumbers(
    std::vector<NativeLineNumber> LineNums)
    : Lines(std::move(LineNums)), Index(0) {}

uint32_t NativeEnumLineNumbers::getChildCount() const {
  return static_cast<uint32_t>(Lines.size());
}

std::unique_ptr<IPDBLineNumber>
NativeEnumLineNumbers::getChildAtIndex(uint32_t N) const {
  if (N >= getChildCount())
    return nullptr;
  return std::make_unique<NativeLineNumber>(Lines[N]);
}

std::unique_ptr<IPDBLineNumber> NativeEnumLineNumbers::getNext() {
  return getChildAtIndex(Index++);
}

void NativeEnumLineNumbers::reset() { Index = 0; }
