PlasCom2  1.0
XPACC Multi-physics simluation application
Parameters.H
Go to the documentation of this file.
1 #ifndef _PARAMETERS_H_
7 #define _PARAMETERS_H_
8 
9 #include "primitive_utilities.H"
10 
11 namespace ix {
12 
13  namespace util {
14 
16  std::ostream &operator<<(std::ostream &Ostr,
17  const util::ParamType &param);
18 
19  class Parameters : public std::vector<util::ParamType>
20 
21  {
22  friend std::ostream &operator<<(std::ostream &oSt,
23  const util::Parameters &pv);
24  friend std::istream &operator>>(std::istream &iSt,
25  util::Parameters &pv);
26  public:
28  Parameters() : std::vector<util::ParamType>() {};
29  Parameters(const Parameters &inParams) : std::vector<util::ParamType>(inParams) {};
30  std::string GetValue(const std::string &key) const;
31  std::vector<std::string> GetValueVector(const std::string &key) const;
32 
33  util::ParamType *ParamPtr(const std::string &key);
34 
35  bool GetFlagValue(const std::string &key) const
36  {
37  bool retVal = false;
38  std::string value(this->Param(key));
39  if(!value.empty()){
40  if(value=="on" || value=="yes" ||
41  value=="ON" || value=="YES" ||
42  value=="Yes" || value=="True" ||
43  value=="1" || value=="true" ||
44  value=="TRUE" || value==".true." ||
45  value==".TRUE.")
46  retVal = true;
47  }
48  return(retVal);
49  };
50 
51  template<typename T>
52  T GetValue(const std::string &key) const
53  {
54  T retval;
55  std::string value(this->Param(key));
56  if(!value.empty()){
57  std::istringstream Istr(value);
58  Istr >> retval;
59  }
60  return(retval);
61  };
62 
63  template<typename T>
64  std::vector<T> GetValueVector(const std::string &key) const
65  {
66  std::vector<T> retval;
67  std::string value(this->Param(key));
68  if(!value.empty()){
69  std::istringstream Istr(value);
70  T tmpval;
71  while(Istr >> tmpval)
72  retval.push_back(tmpval);
73  }
74  return(retval);
75  };
76 
77  virtual void SetParameter(const std::string &key,const std::string &value)
78  {
79  if(ParamPtr(key)){
80  ParamPtr(key)->Value(value);
81  } else {
82  ParamType param(key,value);
83  this->push_back(param);
84  }
85  };
86 
87  template<typename T>
88  void SetParameter(const std::string &key,const T &value)
89  {
90  std::ostringstream Ostr;
91  Ostr << value;
92  if(ParamPtr(key)){
93  ParamPtr(key)->Value(Ostr.str());
94  } else {
95  ParamType param(key,Ostr.str());
96  this->push_back(param);
97  }
98  };
99 
100  virtual int SetValue(const std::string &key,const std::string &value){
101  if(ParamPtr(key)){
102  ParamPtr(key)->Value(value);
103  return(0);
104  }
105  return(1);
106  };
107 
108  template<typename T>
109  int SetValue(const std::string &key,const T &value){
110  std::ostringstream Ostr;
111  Ostr << value;
112  if(ParamPtr(key)){
113  ParamPtr(key)->Value(Ostr.str());
114  } else {
115  ParamType param;
116  param.Key(key);
117  param.Value(Ostr.str());
118  this->push_back(param);
119  }
120  return(0);
121  };
122 
123  int ResetKey(const std::string &origKey,const std::string &newKey)
124  {
125  if(ParamPtr(origKey)){
126  ParamPtr(origKey)->Key(newKey);
127  return(0);
128  }
129  return(1);
130  };
131 
132  virtual std::istream &ReadFromStream(std::istream &Is);
133  virtual std::ostream &WriteToStream(std::ostream &Os) const;
134  std::string Param(const std::string &Key) const;
135  bool IsSet(const std::string &Key) const;
136  virtual ~Parameters(){};
137  };
138  std::ostream &operator<<(std::ostream &oSt,const util::Parameters &pv);
139  std::istream &operator>>(std::istream &iSt,util::Parameters &pv);
140  };
141 };
142 
143 
144 #endif
util::ParamType * ParamPtr(const std::string &key)
Definition: Parameters.C:12
primitive::KeyValuePairObj< std::string, std::string > ParamType
Definition: Parameters.H:15
Basic utility header.
friend std::ostream & operator<<(std::ostream &oSt, const util::Parameters &pv)
Definition: Parameters.C:132
virtual void SetParameter(const std::string &key, const std::string &value)
Definition: Parameters.H:77
STL namespace.
Defines MPI-specific parallel global and program classes.
T GetValue(const std::string &key) const
Definition: Parameters.H:52
std::ostream & operator<<(std::ostream &Ostr, const util::ConfigurationObject &cob)
Stream output operator for util::ConfigurationObject.
std::string Param(const std::string &Key) const
Definition: Parameters.C:91
std::vector< T > GetValueVector(const std::string &key) const
Definition: Parameters.H:64
void SetParameter(const std::string &key, const T &value)
Definition: Parameters.H:88
Parameters(const Parameters &inParams)
Definition: Parameters.H:29
virtual int SetValue(const std::string &key, const std::string &value)
Definition: Parameters.H:100
bool GetFlagValue(const std::string &key) const
Definition: Parameters.H:35
std::string GetValue(const std::string &key) const
Definition: Parameters.C:24
std::vector< std::string > GetValueVector(const std::string &key) const
Definition: Parameters.C:36
int ResetKey(const std::string &origKey, const std::string &newKey)
Definition: Parameters.H:123
int SetValue(const std::string &key, const T &value)
Definition: Parameters.H:109
friend std::istream & operator>>(std::istream &iSt, util::Parameters &pv)
Definition: Parameters.C:138
util::ParamType ParamType
Definition: Parameters.H:27
virtual ~Parameters()
Definition: Parameters.H:136
virtual std::ostream & WriteToStream(std::ostream &Os) const
Definition: Parameters.C:121
Simple key-value pair.
bool IsSet(const std::string &Key) const
Definition: Parameters.C:115
virtual std::istream & ReadFromStream(std::istream &Is)
Definition: Parameters.C:49