Chi-Tech
basic_options.h
Go to the documentation of this file.
1#ifndef CHI_BASIC_OPTIONS_H
2#define CHI_BASIC_OPTIONS_H
3
5
6namespace chi_physics
7{
8//###################################################################
9/**Class for option.*/
11{
12private:
13 std::string name_;
15
16public:
17 BasicOption(const std::string& name, const std::string& string_value) :
18 name_(name), value_(string_value) {}
19
20 BasicOption(const std::string& name, const bool& bool_value) :
21 name_(name), value_(bool_value) {}
22
23 BasicOption(const std::string& name, const int64_t& integer_value) :
24 name_(name), value_(integer_value) {}
25
26 BasicOption(const std::string& name, const double& float_value) :
27 name_(name), value_(float_value) {}
28
30
31 std::string Name() const {return name_;}
32 std::string StringValue() const {return value_.StringValue();}
33 bool BoolValue() const {return value_.BoolValue();}
34 int64_t IntegerValue() const {return value_.IntegerValue();}
35 double FloatValue() const {return value_.FloatValue();}
36
37 void SetStringValue(const std::string& in_string_value) { value_ = in_string_value;}
38 void SetBoolValue(const bool& in_bool_value) { value_ = in_bool_value;}
39 void SetIntegerValue(const int64_t& in_integer_value) { value_ = in_integer_value;}
40 void SetFloatValue(const double& in_float_value) { value_ = in_float_value;}
41
42};
43
44//###################################################################
45/**Class for basic options*/
47{
48private:
49 std::vector<BasicOption> options_;
50
51public:
52 BasicOptions() = default;
53
54 /**Constructor with initializer list.*/
55 BasicOptions(std::initializer_list<BasicOption> in_options) :
56 options_(in_options)
57 { }
58
59 //Operators
60 /**Returns a constant reference to an option that matches the
61 * requested name. If no name-match is found the method will throw
62 * a std::out_of_range exception.*/
63 const BasicOption& operator()(const std::string& option_name) const;
64
65 /**Returns a constant reference to an option at the given
66 * index. If the index is out of range then a std::out_of_range
67 * exception is thrown. This method can potentially be faster than
68 * the string comparison equivalent.*/
69 const BasicOption& operator()(size_t index) const;
70
71 /**Returns a non-constant reference to an option that matches the
72 * requested name. If no name-match is found the method will throw
73 * a std::out_of_range exception.*/
74 BasicOption& operator[](const std::string& option_name);
75
76 /**Returns a non-constant reference to an option at the given
77 * index. If the index is out of range then a std::out_of_range
78 * exception is thrown. This method can potentially be faster than
79 * the string comparison equivalent.*/
80 BasicOption& operator[](size_t index);
81
82 //AddOption
83 template<typename T>
84 void AddOption(const std::string& option_name, const T& value);
85
86 //Utilities
87 /**Attempts to find an option that matches the requested name.
88 * If one is found then its corresponding index is
89 * returned. If it is not found then a std::out_of_range
90 * exception is thrown.*/
91 size_t GetOptionIndexFromName(const std::string& option_name) const;
92
93};
94
95}//namespace chi_physics
96#endif
VaryingDataType Type() const
Definition: varying.h:494
double FloatValue() const
Definition: varying.cc:272
std::string StringValue() const
Definition: varying.cc:248
int64_t IntegerValue() const
Definition: varying.cc:264
bool BoolValue() const
Definition: varying.cc:256
int64_t IntegerValue() const
Definition: basic_options.h:34
void SetStringValue(const std::string &in_string_value)
Definition: basic_options.h:37
std::string StringValue() const
Definition: basic_options.h:32
chi_data_types::Varying value_
Definition: basic_options.h:14
BasicOption(const std::string &name, const bool &bool_value)
Definition: basic_options.h:20
double FloatValue() const
Definition: basic_options.h:35
std::string Name() const
Definition: basic_options.h:31
BasicOption(const std::string &name, const std::string &string_value)
Definition: basic_options.h:17
void SetIntegerValue(const int64_t &in_integer_value)
Definition: basic_options.h:39
BasicOption(const std::string &name, const double &float_value)
Definition: basic_options.h:26
chi_data_types::VaryingDataType Type() const
Definition: basic_options.h:29
void SetFloatValue(const double &in_float_value)
Definition: basic_options.h:40
void SetBoolValue(const bool &in_bool_value)
Definition: basic_options.h:38
BasicOption(const std::string &name, const int64_t &integer_value)
Definition: basic_options.h:23
BasicOption & operator[](const std::string &option_name)
void AddOption(const std::string &option_name, const T &value)
std::vector< BasicOption > options_
Definition: basic_options.h:49
BasicOptions(std::initializer_list< BasicOption > in_options)
Definition: basic_options.h:55
size_t GetOptionIndexFromName(const std::string &option_name) const
const BasicOption & operator()(const std::string &option_name) const
Definition: basic_options.cc:7