ROOT
ROOT project
Loading...
Searching...
No Matches
reader.hpp
Go to the documentation of this file.
1
14#ifndef READER_HPP
15#define READER_HPP
16
17#include <CLI/CLI.hpp>
18#include <memory>
19#include <string>
20#include <vector>
21
22#include "config.hpp"
23
31 private:
32 friend class ReaderBaseTester;
33 public:
34 std::string filename;
35 char sep;
36 char quote;
41 virtual ~ReaderBase() = default;
48 virtual std::unique_ptr<ConfigBase> read(CLI::App* app, bool verbose) = 0;
49
50 protected:
57 static std::string trim(const std::string& untrimmed_str);
65 static bool parseBool(const std::string& bool_str, bool& out);
73 static bool parseDouble(const std::string& double_str, double& out);
81 static bool parseInt(const std::string& int_str, int& out);
89 static bool parseMethod(const std::string& method_str, Method& out);
96 static std::unique_ptr<ConfigBase> make_config_from_map(
97 const std::unordered_map<std::string, std::string>& config_map);
98};
99
105class ReaderCSV : public ReaderBase {
106 public:
113 std::unique_ptr<ConfigBase> read(CLI::App* app, bool verbose) override;
114
115 private:
116 friend class ReaderCSVTester;
123 std::vector<std::string> splitCsvLine(const std::string& line) const;
124};
125
131class ReaderDAT : public ReaderBase {
132 public:
139 std::unique_ptr<ConfigBase> read(CLI::App* app, bool verbose) override;
140
141 private:
142 friend class ReaderDATTester;
143};
144
150class ReaderCLI : public ReaderBase {
151 public:
158 std::unique_ptr<ConfigBase> read(CLI::App* app, bool verbose) override;
159
160 private:
161 friend class ReaderCLITester;
162};
163
164#endif // READER_HPP
Test fixture class for ReaderBase unit tests.
Definition reader_base_tester.hpp:12
Base class for Reader classes.
Definition reader.hpp:30
static bool parseBool(const std::string &bool_str, bool &out)
Helper static method to parse a boolean value from a string.
Definition reader.cpp:26
static bool parseInt(const std::string &int_str, int &out)
Helper static method to parse an integer value from a string.
Definition reader.cpp:51
static std::string trim(const std::string &untrimmed_str)
Helper static method to trim leading and trailing whitespace from a string.
Definition reader.cpp:14
virtual ~ReaderBase()=default
Virtual destructor for ReaderBase.
char quote
Quote/delimiter character.
Definition reader.hpp:36
virtual std::unique_ptr< ConfigBase > read(CLI::App *app, bool verbose)=0
Read the configuration from the input.
static bool parseMethod(const std::string &method_str, Method &out)
Helper static method to parse a Method enum value from a string.
Definition reader.cpp:61
std::string filename
The input filename to read from.
Definition reader.hpp:34
static bool parseDouble(const std::string &double_str, double &out)
Helper static method to parse a double value from a string.
Definition reader.cpp:41
char sep
Field separator character.
Definition reader.hpp:35
static std::unique_ptr< ConfigBase > make_config_from_map(const std::unordered_map< std::string, std::string > &config_map)
Helper static method to create a ConfigBase object from a map of string key-value pairs.
Definition reader.cpp:85
Reader class for CLI input.
Definition reader.hpp:150
friend class ReaderCLITester
Friend test fixture class for unit testing.
Definition reader.hpp:161
std::unique_ptr< ConfigBase > read(CLI::App *app, bool verbose) override
Read the configuration from CLI input.
Definition reader.cpp:367
Test fixture class for ReaderBase unit tests.
Definition reader_csv_tester.hpp:12
Reader class for CSV files.
Definition reader.hpp:105
std::unique_ptr< ConfigBase > read(CLI::App *app, bool verbose) override
Method to read the configuration from the CSV file.
Definition reader.cpp:258
std::vector< std::string > splitCsvLine(const std::string &line) const
Helper method to split a CSV line into individual fields.
Definition reader.cpp:224
Reader class for DAT files.
Definition reader.hpp:131
friend class ReaderDATTester
Friend test fixture class for unit testing.
Definition reader.hpp:142
std::unique_ptr< ConfigBase > read(CLI::App *app, bool verbose) override
Method to read the configuration from the DAT file.
Definition reader.cpp:321
Configuration (root) classes for root-finding methods.
Method
Enumeration of available root-finding methods.
Definition method.hpp:8