otsdaq  3.06.00
DataStructs.h
1 #ifndef _ots_DataStructs_h
2 #define _ots_DataStructs_h
3 
4 #include "otsdaq/Macros/CoutMacros.h"
5 
6 #include <map>
7 #include <set>
8 
9 namespace ots
10 {
11 template<typename N, typename V>
12 class Parameter
13 {
14  public:
15  Parameter(N name, V value)
16  : name_(name)
17  , value_(value) { ; }
18  virtual ~Parameter(void) { ; }
20  const N& getName(void) const { return name_; }
21  const V& getValue(void) const { return value_; }
22  const std::pair<N, V> getParameterPair(void)
23  {
24  return std::pair<N, V>(name_, value_);
25  }
26 
28  void setName(const N name) { name_ = name; }
29  void setValue(const V value) { value_ = value; }
30  void set(const N name, const V& value)
31  {
32  name_ = name;
33  value_ = value;
34  }
35  void set(std::pair<N, V> parameter)
36  {
37  name_ = parameter.first;
38  value_ = parameter.second;
39  }
40 
41  protected:
42  N name_;
43  V value_;
44 };
45 
46 template<typename N, typename V>
48 {
49  public:
50  typedef std::map<N, V> ParameterMap;
51  typedef typename ParameterMap::iterator iterator;
52  typedef typename ParameterMap::const_iterator const_iterator;
53 
54  Parameters(void) { ; }
55  Parameters(N name, V value) { addParameter(name, value); }
56  Parameters(Parameter<N, V> parameter) { addParameter(parameter); }
57  virtual ~Parameters(void) { ; }
59  std::set<N> getNames(void) const
60  {
61  std::set<N> names;
62  for(const_iterator it = theParameters_.begin(); it != theParameters_.end(); it++)
63  names.insert(it->first);
64  return names;
65  }
66  const V& getValue(const N name) const
67  {
68  auto it = theParameters_.find(name);
69  if(it == theParameters_.end())
70  {
71  __SS__ << "Parameter '" << name << "' not found!" << __E__;
72  __SS_ONLY_THROW__;
73  }
74  return it->second;
75  }
76  Parameter<N, V> getParameter(const N name)
77  {
78  return Parameter<N, V>(name, getValue(name));
79  }
80 
82  void addParameter(const N name, const V value) { theParameters_[name] = value; }
83  void addParameter(const Parameter<N, V> parameter)
84  {
85  theParameters_[parameter.getName()] = parameter.getValue();
86  }
87  void addParameter(const std::pair<N, V> parameterPair)
88  {
89  theParameters_[parameterPair.first] = parameterPair.second;
90  }
91 
93  iterator begin(void) { return theParameters_.begin(); }
94  iterator end(void) { return theParameters_.end(); }
95  const_iterator begin(void) const { return theParameters_.begin(); }
96  const_iterator end(void) const { return theParameters_.end(); }
97  iterator find(N name) { return theParameters_.find(name); }
98  const_iterator find(N name) const { return theParameters_.find(name); }
99 
101  unsigned int size(void) const { return theParameters_.size(); }
102  void clear(void) { theParameters_.clear(); }
103 
104  protected:
105  ParameterMap theParameters_;
106 };
107 
108 } // namespace ots
109 #endif
const N & getName(void) const
Getters.
Definition: DataStructs.h:20
void setName(const N name)
Setters.
Definition: DataStructs.h:28
unsigned int size(void) const
Methods.
Definition: DataStructs.h:101
iterator begin(void)
Iterators.
Definition: DataStructs.h:93
void addParameter(const N name, const V value)
Setters.
Definition: DataStructs.h:82
std::set< N > getNames(void) const
Getters.
Definition: DataStructs.h:59
defines used also by OtsConfigurationWizardSupervisor