Antares Xpansion
Investment simulations for Antares studies
Loading...
Searching...
No Matches
OptionsParser.h
1#ifndef ANTARES_XPANSION_SRC_CPP_HELPERS_OPTIONSPARSER_H
2#define ANTARES_XPANSION_SRC_CPP_HELPERS_OPTIONSPARSER_H
3
4#include <stdexcept>
5#include <string>
6
7#include <boost/program_options.hpp>
8
9#include "antares-xpansion/xpansion_interfaces/LogUtils.h"
10
12{
13private:
14 boost::program_options::options_description desc_ = boost::program_options::options_description(
15 "Allowed options");
16 std::string exe_name_ = "";
17
18protected:
19 explicit OptionsParser(const std::string& exe_name):
20 exe_name_(exe_name){};
21
22public:
23 OptionsParser() = default;
24 virtual ~OptionsParser() = default;
25
26 boost::program_options::options_description_easy_init AddOptions()
27 {
28 return desc_.add_options();
29 }
30
31 virtual void Parse(unsigned int argc, const char* const* argv);
32
33 class NullArgumentsValues: public LogUtils::XpansionError<std::runtime_error>
34 {
35 public:
36 explicit NullArgumentsValues(const std::string& exe_name, const std::string& log_location):
37 LogUtils::XpansionError<std::runtime_error>("Error while parsing " + exe_name
38 + " options: null Arguments values!",
39 log_location){};
40 };
41
42 class InvalidNumberOfArgumentsPassedToParser: public LogUtils::XpansionError<std::runtime_error>
43 {
44 public:
46 const std::string& exe_name,
47 const std::string& log_location):
48 LogUtils::XpansionError<std::runtime_error>("Error while parsing " + exe_name
49 + ": invalid number arguments: "
50 + std::to_string(argc),
51 log_location){};
52 };
53};
54#endif // ANTARES_XPANSION_SRC_CPP_HELPERS_OPTIONSPARSER_H
Definition OptionsParser.h:34
Definition OptionsParser.h:12