tdaq-develop-2025-02-12
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) : name_(name), value_(value) { ; }
16  virtual ~Parameter(void) { ; }
18  const N& getName(void) const { return name_; }
19  const V& getValue(void) const { return value_; }
20  const std::pair<N, V> getParameterPair(void)
21  {
22  return std::pair<N, V>(name_, value_);
23  }
24 
26  void setName(const N name) { name_ = name; }
27  void setValue(const V value) { value_ = value; }
28  void set(const N name, const V& value)
29  {
30  name_ = name;
31  value_ = value;
32  }
33  void set(std::pair<N, V> parameter)
34  {
35  name_ = parameter.first;
36  value_ = parameter.second;
37  }
38 
39  protected:
40  N name_;
41  V value_;
42 };
43 
44 template<typename N, typename V>
46 {
47  public:
48  typedef std::map<N, V> ParameterMap;
49  typedef typename ParameterMap::iterator iterator;
50  typedef typename ParameterMap::const_iterator const_iterator;
51 
52  Parameters(void) { ; }
53  Parameters(N name, V value) { addParameter(name, value); }
54  Parameters(Parameter<N, V> parameter) { addParameter(parameter); }
55  virtual ~Parameters(void) { ; }
57  std::set<N> getNames(void) const
58  {
59  std::set<N> names;
60  for(const_iterator it = theParameters_.begin(); it != theParameters_.end(); it++)
61  names.insert(it->first);
62  return names;
63  }
64  const V& getValue(const N name) const
65  {
66  auto it = theParameters_.find(name);
67  if(it == theParameters_.end())
68  {
69  __SS__ << "Parameter '" << name << "' not found!" << __E__;
70  __SS_ONLY_THROW__;
71  }
72  return it->second;
73  }
74  Parameter<N, V> getParameter(const N name)
75  {
76  return Parameter<N, V>(name, getValue(name));
77  }
78 
80  void addParameter(const N name, const V value) { theParameters_[name] = value; }
81  void addParameter(const Parameter<N, V> parameter)
82  {
83  theParameters_[parameter.getName()] = parameter.getValue();
84  }
85  void addParameter(const std::pair<N, V> parameterPair)
86  {
87  theParameters_[parameterPair.first] = parameterPair.second;
88  }
89 
91  iterator begin(void) { return theParameters_.begin(); }
92  iterator end(void) { return theParameters_.end(); }
93  const_iterator begin(void) const { return theParameters_.begin(); }
94  const_iterator end(void) const { return theParameters_.end(); }
95  iterator find(N name) { return theParameters_.find(name); }
96  const_iterator find(N name) const { return theParameters_.find(name); }
97 
99  unsigned int size(void) const { return theParameters_.size(); }
100  void clear(void) { theParameters_.clear(); }
101 
102  protected:
103  ParameterMap theParameters_;
104 };
105 
106 } // namespace ots
107 #endif
const N & getName(void) const
Getters.
Definition: DataStructs.h:18
void setName(const N name)
Setters.
Definition: DataStructs.h:26
unsigned int size(void) const
Methods.
Definition: DataStructs.h:99
iterator begin(void)
Iterators.
Definition: DataStructs.h:91
void addParameter(const N name, const V value)
Setters.
Definition: DataStructs.h:80
std::set< N > getNames(void) const
Getters.
Definition: DataStructs.h:57