xref: /llvm-project/llvm/lib/DebugInfo/PDB/Native/NativeEnumLineNumbers.cpp (revision 0060c54e0da6d1429875da2d30895faa7562b706)
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 
11f8170d87SAmy Huang #include "llvm/DebugInfo/PDB/Native/NativeLineNumber.h"
12f8170d87SAmy Huang 
13*ed98c1b3Sserge-sans-paille #include <vector>
14*ed98c1b3Sserge-sans-paille 
15f8170d87SAmy Huang using namespace llvm;
16f8170d87SAmy Huang using namespace llvm::codeview;
17f8170d87SAmy Huang using namespace llvm::pdb;
18f8170d87SAmy Huang 
19f8170d87SAmy Huang NativeEnumLineNumbers::NativeEnumLineNumbers(
20f8170d87SAmy Huang     std::vector<NativeLineNumber> LineNums)
21f8170d87SAmy Huang     : Lines(std::move(LineNums)), Index(0) {}
22f8170d87SAmy Huang 
23f8170d87SAmy Huang uint32_t NativeEnumLineNumbers::getChildCount() const {
24f8170d87SAmy Huang   return static_cast<uint32_t>(Lines.size());
25f8170d87SAmy Huang }
26f8170d87SAmy Huang 
27f8170d87SAmy Huang std::unique_ptr<IPDBLineNumber>
28f8170d87SAmy Huang NativeEnumLineNumbers::getChildAtIndex(uint32_t N) const {
29f8170d87SAmy Huang   if (N >= getChildCount())
30f8170d87SAmy Huang     return nullptr;
31f8170d87SAmy Huang   return std::make_unique<NativeLineNumber>(Lines[N]);
32f8170d87SAmy Huang }
33f8170d87SAmy Huang 
34f8170d87SAmy Huang std::unique_ptr<IPDBLineNumber> NativeEnumLineNumbers::getNext() {
35f8170d87SAmy Huang   return getChildAtIndex(Index++);
36f8170d87SAmy Huang }
37f8170d87SAmy Huang 
38f8170d87SAmy Huang void NativeEnumLineNumbers::reset() { Index = 0; }
39