• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

MikkelSchubert / adapterremoval / #117

25 May 2025 03:01PM UTC coverage: 66.932% (-0.07%) from 67.006%
#117

push

travis-ci

web-flow
iwyu and reduce build-time inter-dependencies (#144)

26 of 145 new or added lines in 20 files covered. (17.93%)

89 existing lines in 5 files now uncovered.

9738 of 14549 relevant lines covered (66.93%)

3041.19 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/linereader_joined.hpp
1
// SPDX-License-Identifier: GPL-3.0-or-later
2
// SPDX-FileCopyrightText: 2017 Mikkel Schubert <mikkelsch@gmail.com>
3
#pragma once
4

5
#include "linereader.hpp" // for line_reader_base
6
#include <cstddef>        // for size_t
7
#include <memory>         // for unique_ptr
8
#include <string>         // for string
9
#include <vector>         // for vector
10

11
namespace adapterremoval {
12

13
/**
14
 * Multi-file line-reader
15
 *
16
 * Wrapper around line_reader that automatically reads through one or more
17
 * files, returning the content as a contiguous stream of lines. No assumptions
18
 * are made about the format of the individual files.
19
 */
20
class joined_line_readers : public line_reader_base
21
{
22
public:
23
  /** Creates line-reader over multiple files in the specified order. */
24
  explicit joined_line_readers(const std::vector<std::string>& filenames);
25

NEW
26
  ~joined_line_readers() override = default;
×
UNCOV
27

×
UNCOV
28
  /**
×
29
   * Reads a line from the currently open file; if EOF is encountered, the
30
   * currently open file is closed and the next file is opened. Returns true
31
   * if a line was successfully read, or false if no files remain.
32
   */
33
  bool getline(std::string& dst) override;
34

35
  /** Currently open file; empty if no file is open. */
36
  const std::string& filename() const { return m_filename; }
37

UNCOV
38
  /** Line number in the current file (1-based); 0 if no file is open. */
×
39
  size_t linenumber() const { return m_current_line; }
40

UNCOV
41
  joined_line_readers(const joined_line_readers&) = delete;
×
42
  joined_line_readers(joined_line_readers&&) = delete;
43
  joined_line_readers& operator=(const joined_line_readers&) = delete;
44
  joined_line_readers& operator=(joined_line_readers&&) = delete;
45

46
private:
47
  /**
48
   * Open the next file, removes it from the queue, and returns true; returns
49
   * false if no files remain to be processed.
50
   */
51
  bool open_next_file();
52

53
  //! Files left to read; stored in reverse order.
54
  std::vector<std::string> m_filenames{};
55
  //! Currently open file, if any.
56
  std::unique_ptr<line_reader> m_reader{};
57
  //! The currently open file
58
  std::string m_filename{};
59
  //! Current line across all files.
60
  size_t m_current_line = 0;
61
};
62

63
} // namespace adapterremoval
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc