Belle II Software  release-05-01-25
NSMVHandler.h
1 #ifndef _Belle2_NSMVHandler_h
2 #define _Belle2_NSMVHandler_h
3 
4 #include <daq/slc/nsm/NSMVar.h>
5 
6 #include <vector>
7 #include <map>
8 
9 namespace Belle2 {
15  class NSMVHandler {
16 
17  friend class Callback;
18  friend class AbstractNSMCallback;
19  friend class NSMCallback;
20 
21  public:
22  static NSMVHandler* create(const NSMVar& var);
23 
24  public:
25  NSMVHandler(const std::string& node, const std::string& name,
26  bool useget, bool useset)
27  : m_id(0), m_timestamp(0), m_node(node), m_name(name),
28  m_useget(useget), m_useset(useset), m_var(name) {}
29  virtual ~NSMVHandler() {}
30 
31  public:
32  virtual bool handleGet(NSMVar& var)
33  {
34  var = m_var;
35  return true;
36  }
37  virtual bool handleSet(const NSMVar& var)
38  {
39  m_var = var;
40  return true;
41  }
42 
43  public:
44  const std::string& getNode() const { return m_node; }
45  const std::string& getName() const { return m_name; }
46  bool useGet() const { return m_useget; }
47  bool useSet() const { return m_useset; }
48  void setUseGet(bool use) { m_useget = use; }
49  void setUseSet(bool use) { m_useset = use; }
50  int getTimeStamp() const { return m_timestamp; }
51  int getId() const { return m_id; }
52  void setNode(const std::string& node) { m_node = node; }
53  void setId(int id) { m_id = id; }
54  void set(const NSMVar& var) { m_var = var; }
55  void set(int val) { m_var = val; }
56  void set(float val) { m_var = val; }
57  void set(const std::string& val) { m_var = val; }
58  void set(const std::vector<int>& val) { m_var = val; }
59  void set(const std::vector<float>& val) { m_var = val; }
60  const NSMVar& get() const { return m_var; }
61  NSMVar& get() { return m_var; }
62  NSMVar::Type getType() const { return m_var.getType(); }
63  const char* getTypeLabel() const { return m_var.getTypeLabel(); }
64  bool isDumped() const { return m_isdump; }
65  void setDumped(bool isdump) { m_isdump = isdump; }
66 
67  protected:
68  int m_id;
69  int m_timestamp;
70  std::string m_node;
71  std::string m_name;
72  bool m_useget;
73  bool m_useset;
74  NSMVar m_var;
75  bool m_isdump;
76 
77  };
78 
79  typedef std::map<std::string, NSMVHandler*> NSMVHandlerList;
80 
81  class NSMVHandlerInt : public NSMVHandler {
82 
83  public:
84  NSMVHandlerInt(const std::string& name,
85  bool useget, bool useset, int val = 0)
86  : NSMVHandler("", name, useget, useset)
87  {
88  m_var = val;
89  }
90  NSMVHandlerInt(const std::string& node, const std::string& name,
91  bool useget, bool useset, int val = 0)
92  : NSMVHandler(node, name, useget, useset)
93  {
94  m_var = val;
95  }
96  virtual ~NSMVHandlerInt() {}
97 
98  public:
99  virtual bool handleGet(NSMVar& var);
100  virtual bool handleSet(const NSMVar& var);
101 
102  public:
103  virtual bool handleGetInt(int& val)
104  {
105  val = m_var.getInt();
106  return true;
107  }
108  virtual bool handleSetInt(int val)
109  {
110  m_var = val;
111  return true;
112  }
113 
114  };
115 
116  class NSMVHandlerFloat : public NSMVHandler {
117 
118  public:
119  NSMVHandlerFloat(const std::string& name,
120  bool useget, bool useset, float val = 0)
121  : NSMVHandler("", name, useget, useset)
122  {
123  m_var = val;
124  }
125  NSMVHandlerFloat(const std::string& node, const std::string& name,
126  bool useget, bool useset, float val = 0)
127  : NSMVHandler(node, name, useget, useset)
128  {
129  m_var = val;
130  }
131  virtual ~NSMVHandlerFloat() {}
132 
133  private:
134  virtual bool handleGet(NSMVar& var);
135  virtual bool handleSet(const NSMVar& var);
136 
137  public:
138  virtual bool handleGetFloat(float& val)
139  {
140  val = m_var.getFloat();
141  return true;
142  }
143  virtual bool handleSetFloat(float val)
144  {
145  m_var = val;
146  return true;
147  }
148 
149  };
150 
151  class NSMVHandlerText : public NSMVHandler {
152 
153  public:
154  NSMVHandlerText(const std::string& name,
155  bool useget, bool useset, const std::string& val = "")
156  : NSMVHandler("", name, useget, useset)
157  {
158  m_var = val;
159  }
160  NSMVHandlerText(const std::string& node, const std::string& name,
161  bool useget, bool useset, const std::string& val = "")
162  : NSMVHandler(node, name, useget, useset)
163  {
164  m_var = val;
165  }
166  virtual ~NSMVHandlerText() {}
167 
168  private:
169  virtual bool handleGet(NSMVar& var);
170  virtual bool handleSet(const NSMVar& var);
171 
172  public:
173  virtual bool handleGetText(std::string& val)
174  {
175  val = m_var.getText();
176  return true;
177  }
178  virtual bool handleSetText(const std::string& val)
179  {
180  m_var = val;
181  return true;
182  }
183 
184  };
185 
187 
188  public:
189  NSMVHandlerIntArray(const std::string& name,
190  bool useget, bool useset,
191  const std::vector<int>& val = std::vector<int>())
192  : NSMVHandler("", name, useget, useset)
193  {
194  m_var = val;
195  }
196  NSMVHandlerIntArray(const std::string& node, const std::string& name,
197  bool useget, bool useset,
198  const std::vector<int>& val = std::vector<int>())
199  : NSMVHandler(node, name, useget, useset)
200  {
201  m_var = val;
202  }
203  virtual ~NSMVHandlerIntArray() {}
204 
205  public:
206  virtual bool handleGet(NSMVar& var);
207  virtual bool handleSet(const NSMVar& var);
208 
209  public:
210  virtual bool handleGetIntArray(std::vector<int>& val);
211  virtual bool handleSetIntArray(const std::vector<int>& val)
212  {
213  m_var = val;
214  return true;
215  }
216 
217  };
218 
220 
221  public:
222  NSMVHandlerFloatArray(const std::string& name,
223  bool useget, bool useset,
224  const std::vector<float>& val = std::vector<float>())
225  : NSMVHandler("", name, useset, useget)
226  {
227  m_var = val;
228  }
229  NSMVHandlerFloatArray(const std::string& node, const std::string& name,
230  bool useget, bool useset,
231  const std::vector<float>& val = std::vector<float>())
232  : NSMVHandler(node, name, useset, useget)
233  {
234  m_var = val;
235  }
236  virtual ~NSMVHandlerFloatArray() {}
237 
238  public:
239  virtual bool handleGet(NSMVar& var);
240  virtual bool handleSet(const NSMVar& var);
241 
242  public:
243  virtual bool handleGetFloatArray(std::vector<float>& val);
244  virtual bool handleSetFloatArray(const std::vector<float>& val)
245  {
246  m_var = val;
247  return true;
248  }
249 
250  };
251 
252  class NSMCallback;
253 
254  class NSMVHandlerRef : public NSMVHandler {
255 
256  public:
257  NSMVHandlerRef(NSMCallback& callback,
258  const std::string& name,
259  const std::string& refname)
260  : NSMVHandler("", name, true, true),
261  m_callback(callback), m_refname(refname) {}
262  virtual ~NSMVHandlerRef() {}
263 
264  public:
265  virtual bool handleGet(NSMVar& var);
266  virtual bool handleSet(const NSMVar& var);
267 
268  private:
269  NSMCallback& m_callback;
270  std::string m_refname;
271 
272  };
273 
275 };
276 
277 #endif
Belle2::NSMVHandler
Definition: NSMVHandler.h:15
Belle2::Callback
Definition: Callback.h:17
Belle2::NSMVHandlerInt
Definition: NSMVHandler.h:81
Belle2::NSMVHandlerFloatArray
Definition: NSMVHandler.h:219
Belle2::AbstractNSMCallback
Definition: AbstractNSMCallback.h:22
Belle2::NSMVHandlerIntArray
Definition: NSMVHandler.h:186
Belle2::NSMVHandlerRef
Definition: NSMVHandler.h:254
Belle2::NSMVHandlerFloat
Definition: NSMVHandler.h:116
Belle2::NSMCallback
Definition: NSMCallback.h:24
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::NSMVHandlerText
Definition: NSMVHandler.h:151
Belle2::NSMVar
Definition: NSMVar.h:16