Bridge++  Ver. 1.3.x
parameters.h
Go to the documentation of this file.
1 
14 #ifndef PARAMETERS_INCLUDED
15 #define PARAMETERS_INCLUDED
16 
17 #include <string>
18 using std::string;
19 
20 #include <map>
21 
22 #include "communicator.h"
23 #include "checker.h"
24 
25 #include "bridgeIO.h"
26 using Bridge::vout;
27 
29 
39 {
40  public:
41  static const std::string class_name;
42 
43  private:
44  template<typename T>
45  struct Item
46  {
47  Item(const T& value)
48  : m_value(value), m_flag_set(EXIT_FAILURE) {}
49 
52 
53  const T& value() const { return m_value; }
54  int is_set() const { return m_flag_set; }
55 
56  template<typename U>
57  void put(const std::vector<U>& value)
58  {
59  m_value.resize(value.size());
60  m_value = value;
61  m_flag_set = EXIT_SUCCESS;
62  }
63 
64  template<typename U>
65  void put(const U& value)
66  {
67  m_value = value;
68  m_flag_set = EXIT_SUCCESS;
69  }
70  };
71 
72  std::map<string, Item<double> > m_map_double;
73  std::map<string, Item<int> > m_map_int;
74  std::map<string, Item<std::vector<double> > > m_map_double_vector;
75  std::map<string, Item<std::vector<int> > > m_map_int_vector;
76  std::map<string, Item<string> > m_map_string;
77  std::map<string, Item<Parameters *> > m_map_Parameters;
79 
80  public:
81 
82  Parameters();
83 
84  virtual ~Parameters() {}
85 
86  public:
87  void set_double(const string& key, const double value);
88  void set_int(const string& key, const int value);
89  void set_double_vector(const string& key, const std::vector<double>& value);
90  void set_int_vector(const string& key, const std::vector<int>& value);
91  void set_string(const string& key, const string& value);
92  void set_Parameters(const string& key, Parameters *const value);
94 
95  double get_double(const string& key) const;
96  int get_int(const string& key) const;
97 
98  std::vector<double> get_double_vector(const string& key) const;
99 
100  std::vector<int> get_int_vector(const string& key) const;
101  string get_string(const string& key) const;
102  Parameters *get_Parameters(const string& key) const;
104 
105  int fetch_double(const string& key, double& val) const;
106  int fetch_int(const string& key, int& val) const;
107  int fetch_double_vector(const string& key, std::vector<double>& val) const;
108  int fetch_int_vector(const string& key, std::vector<int>& val) const;
109  int fetch_string(const string& key, string& val) const;
111 
112  void Register_double(const string&, const double);
113  void Register_int(const string&, const int);
114  void Register_double_vector(const string&, const std::vector<double>&);
115  void Register_int_vector(const string&, const std::vector<int>&);
116  void Register_string(const string&, const string&);
117  void Register_Parameters(const string&, Parameters *const);
118  void Register_Parameters(const string&, const unique_ptr<Parameters>&);
119 
120  bool find_double(const string&) const;
121  bool find_int(const string&) const;
122  bool find_double_vector(const string&) const;
123  bool find_int_vector(const string&) const;
124  bool find_string(const string&) const;
125  bool find_Parameters(const string&) const;
126 
127  bool is_set(const string&) const;
128 
129 #ifdef DEBUG
130  void dump(const string& indent = "") const;
131 #endif
132 };
133 #endif
void Register_int_vector(const string &, const std::vector< int > &)
Definition: parameters.cpp:344
bool find_int(const string &) const
Definition: parameters.cpp:220
const T & value() const
Definition: parameters.h:53
int fetch_VerboseLevel(Bridge::VerboseLevel &val) const
Definition: parameters.cpp:211
BridgeIO vout
Definition: bridgeIO.cpp:278
Item(const T &value)
Definition: parameters.h:47
void Register_string(const string &, const string &)
Definition: parameters.cpp:351
void Register_int(const string &, const int)
Definition: parameters.cpp:330
void set_int(const string &key, const int value)
Definition: parameters.cpp:262
static const std::string class_name
Definition: parameters.h:41
void set_double_vector(const string &key, const std::vector< double > &value)
Definition: parameters.cpp:289
bool find_double(const string &) const
Definition: parameters.cpp:227
bool find_Parameters(const string &) const
Definition: parameters.cpp:255
int get_int(const string &key) const
Definition: parameters.cpp:42
Class for parameters.
Definition: parameters.h:38
void put(const std::vector< U > &value)
Definition: parameters.h:57
std::map< string, Item< std::vector< int > > > m_map_int_vector
Definition: parameters.h:75
void set_VerboseLevel(Bridge::VerboseLevel value)
Definition: parameters.cpp:316
Parameters * get_Parameters(const string &key) const
Definition: parameters.cpp:102
std::vector< double > get_double_vector(const string &key) const
Definition: parameters.cpp:57
std::map< string, Item< Parameters * > > m_map_Parameters
Definition: parameters.h:77
std::vector< int > get_int_vector(const string &key) const
Definition: parameters.cpp:72
void set_string(const string &key, const string &value)
Definition: parameters.cpp:298
bool find_string(const string &) const
Definition: parameters.cpp:248
std::map< string, Item< int > > m_map_int
Definition: parameters.h:73
bool is_set(const string &) const
Definition: parameters.cpp:372
std::map< string, Item< double > > m_map_double
Definition: parameters.h:72
double get_double(const string &key) const
Definition: parameters.cpp:27
int is_set() const
Definition: parameters.h:54
int fetch_string(const string &key, string &val) const
Definition: parameters.cpp:194
bool find_double_vector(const string &) const
Definition: parameters.cpp:241
Bridge::VerboseLevel get_VerboseLevel() const
Definition: parameters.cpp:117
std::map< string, Item< string > > m_map_string
Definition: parameters.h:76
void Register_Parameters(const string &, Parameters *const)
Definition: parameters.cpp:358
virtual ~Parameters()
Definition: parameters.h:84
void set_double(const string &key, const double value)
Definition: parameters.cpp:271
void set_Parameters(const string &key, Parameters *const value)
Definition: parameters.cpp:307
VerboseLevel
Definition: bridgeIO.h:39
void put(const U &value)
Definition: parameters.h:65
void Register_double_vector(const string &, const std::vector< double > &)
Definition: parameters.cpp:337
int fetch_double_vector(const string &key, std::vector< double > &val) const
Definition: parameters.cpp:158
void Register_double(const string &, const double)
Definition: parameters.cpp:323
void set_int_vector(const string &key, const std::vector< int > &value)
Definition: parameters.cpp:280
int fetch_double(const string &key, double &val) const
Definition: parameters.cpp:124
string get_string(const string &key) const
Definition: parameters.cpp:87
std::map< string, Item< std::vector< double > > > m_map_double_vector
Definition: parameters.h:74
bool find_int_vector(const string &) const
Definition: parameters.cpp:234
int fetch_int(const string &key, int &val) const
Definition: parameters.cpp:141
Item< Bridge::VerboseLevel > m_vlevel
Definition: parameters.h:78
int fetch_int_vector(const string &key, std::vector< int > &val) const
Definition: parameters.cpp:176