otsdaq  v1_01_02
 All Classes Namespaces Functions
DataStructs.h
1 #ifndef _ots_DataStructs_h
2 #define _ots_DataStructs_h
3 
4 #include <set>
5 #include <map>
6 
7 namespace ots
8 {
9 
10 template<typename N, typename V>
11 class Parameter
12 {
13 public:
14  Parameter(N name, V value) : name_(name), value_(value){;}
15  virtual ~Parameter(void){;}
16  //Getters
17  const N& getName (void) const {return name_;}
18  const V& getValue(void) const {return value_;}
19  const std::pair<N, V> getParameterPair(void){return std::pair<N,V>(name_,value_);}
20 
21  //Setters
22  void setName (const N name ) {name_ = name;}
23  void setValue(const V value) {value_ = value;}
24  void set(const N name, const V& value) {name_ = name; value_ = value;}
25  void set(std::pair<N, V> parameter) {name_ = parameter.first; value_ = parameter.second;}
26 protected:
27  N name_;
28  V value_;
29 };
30 
31 template<typename N, typename V>
33 {
34 public:
35  typedef std::map<N,V> ParameterMap;
36  typedef typename ParameterMap::iterator iterator;
37  typedef typename ParameterMap::const_iterator const_iterator;
38 
39  Parameters(void){;}
40  Parameters(N name, V value){addParameter(name, value);}
41  Parameters(Parameter<N,V> parameter){addParameter(parameter);}
42  virtual ~Parameters(void){;}
43  //Getters
44  std::set<N> getNames (void) const
45  {
46  std::set<N> names;
47  for(const_iterator it=theParameters_.begin(); it!=theParameters_.end(); it++)
48  names.insert(it->first);
49  return names;
50  }
51  const V& getValue (const N name) const {return theParameters_.find(name)->second;}
52  Parameter<N,V> getParameter (const N name){return Parameter<N,V>(name,getValue(name));}
53 
54  //Setters
55  void addParameter(const N name, const V value) {theParameters_[name] = value;}
56  void addParameter(const Parameter<N,V> parameter) {theParameters_[parameter.getName()] = parameter.getValue();}
57  void addParameter(const std::pair<N,V> parameterPair){theParameters_[parameterPair.first] = parameterPair.second;}
58 
59  //Iterators
60  iterator begin(void) {return theParameters_.begin();}
61  iterator end (void) {return theParameters_.end();}
62  const_iterator begin(void) const {return theParameters_.begin();}
63  const_iterator end (void) const {return theParameters_.end();}
64  iterator find (N name) {return theParameters_.find(name);}
65  const_iterator find (N name) const {return theParameters_.find(name);}
66 
67  //Methods
68  unsigned int size (void) const {return theParameters_.size();}
69  void clear(void) {theParameters_.clear();}
70 
71 protected:
72  ParameterMap theParameters_;
73 };
74 
75 }
76 #endif