Bridge++  Version 1.4.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
parameters.h
Go to the documentation of this file.
1 
14 #ifndef PARAMETERS_INCLUDED
15 #define PARAMETERS_INCLUDED
16 
17 #include <string>
18 #include <map>
19 #include <vector>
20 #include <sstream>
21 
23 #include "checker.h"
24 
25 #include "IO/bridgeIO.h"
26 using Bridge::vout;
27 
28 using std::string;
29 using std::map;
30 using std::vector;
31 
33 
47 {
48  public:
49  static const std::string class_name;
50 
51  public:
52  Parameters();
53  virtual ~Parameters() {}
54 
55  void set_double(const string& key, const double value);
56  void set_int(const string& key, const int value);
57  void set_string(const string& key, const string& value);
58  void set_double_vector(const string& key, const vector<double>& value);
59  void set_int_vector(const string& key, const vector<int>& value);
60  void set_string_vector(const string& key, const vector<string>& value);
61  void set_Parameters(const string& key, const Parameters& value);
62  void set_VerboseLevel(const Bridge::VerboseLevel value);
63 
64  double get_double(const string& key) const;
65  int get_int(const string& key) const;
66  unsigned long get_unsigned_long(const string& key) const;
67  string get_string(const string& key) const;
68 
69  vector<double> get_double_vector(const string& key) const;
70 
71  vector<int> get_int_vector(const string& key) const;
72 
73  vector<string> get_string_vector(const string& key) const;
74  Parameters get_Parameters(const string& key) const;
75  Parameters& get_Parameters(const string& key);
77 
78  Parameters lookup(const string& key) const { return get_Parameters(key); }
79  Parameters& lookup(const string& key) { return get_Parameters(key); }
80 
81  int fetch_double(const string& key, double& value) const;
82  int fetch_int(const string& key, int& value) const;
83  int fetch_unsigned_long(const string& key, unsigned long& value) const;
84  int fetch_string(const string& key, string& value) const;
85  int fetch_double_vector(const string& key, vector<double>& value) const;
86  int fetch_int_vector(const string& key, vector<int>& value) const;
87  int fetch_string_vector(const string& key, vector<string>& value) const;
88  int fetch_VerboseLevel(Bridge::VerboseLevel& value) const;
89 
90  bool find_double(const string& key) const;
91  bool find_int(const string& key) const;
92  bool find_unsigned_long(const string& key) const;
93  bool find_string(const string& key) const;
94  bool find_double_vector(const string& key) const;
95  bool find_int_vector(const string& key) const;
96  bool find_string_vector(const string& key) const;
97  bool find_Parameters(const string& key) const;
98 
99  bool is_set(const string& key) const;
100 
101  // obsolete. just for compatibility.
102  void Register_double(const string& key, const double defvalue);
103  void Register_int(const string& key, const int defvalue);
104  void Register_string(const string& key, const string& defvalue);
105  void Register_double_vector(const string& key, const vector<double>& defvalue);
106  void Register_int_vector(const string& key, const vector<int>& defvalue);
107  void Register_string_vector(const string& key, const vector<string>& defvalue);
108  void Register_Parameters(const string& key, const Parameters& defvalue);
109  void Register_Parameters(const string& key, Parameters *const defvalue);
110  void Register_Parameters(const string& key, const unique_ptr<Parameters>& defvalue);
111 
112  private:
113  // scalar
114  map<string, double> m_map_double;
115  map<string, int> m_map_int;
116  map<string, string> m_map_string;
117  // array
118  map<string, vector<double> > m_map_double_vector;
119  map<string, vector<int> > m_map_int_vector;
120  map<string, vector<string> > m_map_string_vector;
121  // map
122  map<string, Parameters> m_map_parameters;
123  // verbose level
125 
126  // utility
127  double convert_to_double(const string&) const;
128 
129  vector<double> convert_to_double(const vector<string>&) const;
130 
131  public:
132  void dump(const string& indent = "") const;
133 
134  // utility
135  template<typename T>
136  static
137  string to_string(const vector<T>& v)
138  {
139  std::stringstream ss;
140 
141  ss << "[";
142  for (size_t i = 0, n = v.size(); i < n; ++i) {
143  if (i > 0) ss << ", ";
144  ss << v[i];
145  }
146  ss << "]";
147 
148  return ss.str();
149  }
150 };
151 #endif
map< string, vector< string > > m_map_string_vector
Definition: parameters.h:120
void set_Parameters(const string &key, const Parameters &value)
Definition: parameters.cpp:46
BridgeIO vout
Definition: bridgeIO.cpp:495
Parameters get_Parameters(const string &key) const
Definition: parameters.cpp:180
int fetch_double_vector(const string &key, vector< double > &value) const
Definition: parameters.cpp:275
void set_int_vector(const string &key, const vector< int > &value)
Definition: parameters.cpp:40
void set_int(const string &key, const int value)
Definition: parameters.cpp:31
static const std::string class_name
Definition: parameters.h:49
int fetch_double(const string &key, double &value) const
Definition: parameters.cpp:211
bool find_unsigned_long(const string &key) const
Definition: parameters.cpp:374
void Register_int(const string &key, const int defvalue)
Definition: parameters.cpp:343
bool find_int_vector(const string &key) const
Definition: parameters.cpp:387
int get_int(const string &key) const
Definition: parameters.cpp:87
double convert_to_double(const string &) const
Definition: parameters.cpp:53
void Register_double_vector(const string &key, const vector< double > &defvalue)
Definition: parameters.cpp:349
Class for parameters.
Definition: parameters.h:46
int fetch_string(const string &key, string &value) const
Definition: parameters.cpp:262
void dump(const string &indent="") const
Definition: parameters.cpp:410
void Register_Parameters(const string &key, const Parameters &defvalue)
Definition: parameters.cpp:358
Parameters lookup(const string &key) const
Definition: parameters.h:78
void set_string(const string &key, const string &value)
Definition: parameters.cpp:34
Bridge::VerboseLevel m_vlevel
Definition: parameters.h:124
unsigned long get_unsigned_long(const string &key) const
Definition: parameters.cpp:104
double get_double(const string &key) const
Definition: parameters.cpp:70
Parameters & lookup(const string &key)
Definition: parameters.h:79
int fetch_int(const string &key, int &value) const
Definition: parameters.cpp:230
void set_VerboseLevel(const Bridge::VerboseLevel value)
Definition: parameters.cpp:49
bool find_Parameters(const string &key) const
Definition: parameters.cpp:393
Bridge::VerboseLevel get_VerboseLevel() const
Definition: parameters.cpp:204
void Register_double(const string &key, const double defvalue)
Definition: parameters.cpp:340
void Register_int_vector(const string &key, const vector< int > &defvalue)
Definition: parameters.cpp:352
map< string, Parameters > m_map_parameters
Definition: parameters.h:122
bool is_set(const string &key) const
Definition: parameters.cpp:396
bool find_double(const string &key) const
Definition: parameters.cpp:368
bool find_int(const string &key) const
Definition: parameters.cpp:371
void set_double_vector(const string &key, const vector< double > &value)
Definition: parameters.cpp:37
void Register_string(const string &key, const string &defvalue)
Definition: parameters.cpp:346
map< string, double > m_map_double
Definition: parameters.h:114
virtual ~Parameters()
Definition: parameters.h:53
map< string, string > m_map_string
Definition: parameters.h:116
void set_double(const string &key, const double value)
Definition: parameters.cpp:28
void Register_string_vector(const string &key, const vector< string > &defvalue)
Definition: parameters.cpp:355
int fetch_string_vector(const string &key, vector< string > &value) const
Definition: parameters.cpp:319
VerboseLevel
Definition: bridgeIO.h:42
map< string, vector< double > > m_map_double_vector
Definition: parameters.h:118
vector< double > get_double_vector(const string &key) const
Definition: parameters.cpp:128
vector< string > get_string_vector(const string &key) const
Definition: parameters.cpp:168
bool find_string(const string &key) const
Definition: parameters.cpp:381
map< string, int > m_map_int
Definition: parameters.h:115
map< string, vector< int > > m_map_int_vector
Definition: parameters.h:119
int fetch_unsigned_long(const string &key, unsigned long &value) const
Definition: parameters.cpp:249
string get_string(const string &key) const
Definition: parameters.cpp:116
int fetch_int_vector(const string &key, vector< int > &value) const
Definition: parameters.cpp:294
vector< int > get_int_vector(const string &key) const
Definition: parameters.cpp:145
bool find_double_vector(const string &key) const
Definition: parameters.cpp:384
bool find_string_vector(const string &key) const
Definition: parameters.cpp:390
int fetch_VerboseLevel(Bridge::VerboseLevel &value) const
Definition: parameters.cpp:332
void set_string_vector(const string &key, const vector< string > &value)
Definition: parameters.cpp:43
static string to_string(const vector< T > &v)
Definition: parameters.h:137