1f8170d87SAmy Huang //==- NativeEnumLineNumbers.cpp - Native Type Enumerator impl ----*- C++ -*-==//
2f8170d87SAmy Huang //
3f8170d87SAmy Huang // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4f8170d87SAmy Huang // See https://llvm.org/LICENSE.txt for license information.
5f8170d87SAmy Huang // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6f8170d87SAmy Huang //
7f8170d87SAmy Huang //===----------------------------------------------------------------------===//
8f8170d87SAmy Huang 
9f8170d87SAmy Huang #include "llvm/DebugInfo/PDB/Native/NativeEnumLineNumbers.h"
10f8170d87SAmy Huang 
11eb4c8608Sserge-sans-paille #include "llvm/DebugInfo/CodeView/CodeView.h"
12f8170d87SAmy Huang #include "llvm/DebugInfo/PDB/IPDBEnumChildren.h"
13f8170d87SAmy Huang #include "llvm/DebugInfo/PDB/Native/NativeLineNumber.h"
14f8170d87SAmy Huang 
15*ed98c1b3Sserge-sans-paille #include <vector>
16*ed98c1b3Sserge-sans-paille 
17f8170d87SAmy Huang using namespace llvm;
18f8170d87SAmy Huang using namespace llvm::codeview;
19f8170d87SAmy Huang using namespace llvm::pdb;
20f8170d87SAmy Huang 
NativeEnumLineNumbers(std::vector<NativeLineNumber> LineNums)21f8170d87SAmy Huang NativeEnumLineNumbers::NativeEnumLineNumbers(
22f8170d87SAmy Huang     std::vector<NativeLineNumber> LineNums)
23f8170d87SAmy Huang     : Lines(std::move(LineNums)), Index(0) {}
24f8170d87SAmy Huang 
getChildCount() const25f8170d87SAmy Huang uint32_t NativeEnumLineNumbers::getChildCount() const {
26f8170d87SAmy Huang   return static_cast<uint32_t>(Lines.size());
27f8170d87SAmy Huang }
28f8170d87SAmy Huang 
29f8170d87SAmy Huang std::unique_ptr<IPDBLineNumber>
getChildAtIndex(uint32_t N) const30f8170d87SAmy Huang NativeEnumLineNumbers::getChildAtIndex(uint32_t N) const {
31f8170d87SAmy Huang   if (N >= getChildCount())
32f8170d87SAmy Huang     return nullptr;
33f8170d87SAmy Huang   return std::make_unique<NativeLineNumber>(Lines[N]);
34f8170d87SAmy Huang }
35f8170d87SAmy Huang 
getNext()36f8170d87SAmy Huang std::unique_ptr<IPDBLineNumber> NativeEnumLineNumbers::getNext() {
37f8170d87SAmy Huang   return getChildAtIndex(Index++);
38f8170d87SAmy Huang }
39f8170d87SAmy Huang 
reset()40f8170d87SAmy Huang void NativeEnumLineNumbers::reset() { Index = 0; }
41