DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
method.hpp
Go to the documentation of this file.
1// DUNE DAQ modification notice:
2// This file has been modified from the original ATLAS oks source for the DUNE DAQ project.
3// Fork baseline commit: oks-08-03-04 (2022-04-14).
4// Renamed since fork: yes (from oks/method.h to include/oks/method.hpp).
5
14
15#ifndef OKS_METHOD_H
16#define OKS_METHOD_H
17
18#include <string>
19#include <list>
20
21#include "oks/defs.hpp"
22
23namespace dunedaq {
24namespace oks {
25
28class OksClass;
29class OksMethod;
30
31
33
38
40{
41 friend class OksKernel;
42 friend class OksMethod;
43
44
45 public:
46
59
60 OksMethodImplementation(const std::string& language, const std::string& prototype, const std::string& body, OksMethod * p = nullptr);
61
62 bool operator==(const class OksMethodImplementation &) const;
63 friend std::ostream& operator<<(std::ostream&, const OksMethodImplementation&);
64
65
67
68 const std::string& get_language() const noexcept {return p_language;}
69
70
81
82 void set_language(const std::string& language);
83
84
86
87 const std::string& get_prototype() const noexcept {return p_prototype;}
88
89
98
99 void set_prototype(const std::string& prototype);
100
101
103
104 const std::string& get_body() const noexcept {return p_body;}
105
106
115
116 void set_body(const std::string& body);
117
118
119 private:
120
121 std::string p_language;
122 std::string p_prototype;
123 std::string p_body;
124
126
127
128 // to be used by OksMethod only
129
131 void save(OksXmlOutputStream &) const;
132
133
134 // valid xml tags and attributes
135
136 static const char method_impl_xml_tag[];
137 static const char language_xml_attr[];
138 static const char prototype_xml_attr[];
139 static const char body_xml_attr[];
140
141
142};
143
144
146
156
158{
159 friend class OksKernel;
160 friend class OksClass;
162
163
164 public:
165
174
175 OksMethod(const std::string& name, OksClass * p = nullptr);
176
177
189
190 OksMethod(const std::string& name, const std::string& description, OksClass * p = nullptr);
191
192
193 ~OksMethod();
194
195 bool operator==(const class OksMethod &) const;
196 friend std::ostream& operator<<(std::ostream&, const OksMethod&);
197
198
200
201 const std::string& get_name() const noexcept {return p_name;}
202
203
213
214 void set_name(const std::string& name);
215
216
218
219 const std::string& get_description() const noexcept {return p_description;}
220
221
229
230 void set_description(const std::string& description);
231
232
234
235 const std::list<OksMethodImplementation *> * implementations() const noexcept {return p_implementations;}
236
237
246
247 OksMethodImplementation * find_implementation(const std::string& language) const;
248
249
250
263
264 void add_implementation(const std::string& language, const std::string& prototype, const std::string& body);
265
266
276
277 void remove_implementation(const std::string& language);
278
279
280 private:
281
283 std::string p_name;
284 std::string p_description;
285 std::list<OksMethodImplementation *> * p_implementations;
286
287
288 // to be used by OksClass only
289
291 void save(OksXmlOutputStream &) const;
292
293
294 // valid xml tags and attributes
295
296 static const char method_xml_tag[];
297 static const char name_xml_attr[];
298 static const char description_xml_attr[];
299
300};
301
302} // namespace oks
303} // namespace dunedaq
304
305#endif
The OKS class.
Definition class.hpp:205
OKS method implementation class.
Definition method.hpp:40
const std::string & get_body() const noexcept
Definition method.hpp:104
OksMethodImplementation(const std::string &language, const std::string &prototype, const std::string &body, OksMethod *p=nullptr)
OKS method implementation constructor.
Definition method.cpp:29
friend std::ostream & operator<<(std::ostream &, const OksMethodImplementation &)
Definition method.cpp:49
const std::string & get_language() const noexcept
Definition method.hpp:68
void set_prototype(const std::string &prototype)
Set method implementation prototype.
Definition method.cpp:459
const std::string & get_prototype() const noexcept
Definition method.hpp:87
void set_language(const std::string &language)
Set method implementation language.
Definition method.cpp:429
bool operator==(const class OksMethodImplementation &) const
Definition method.cpp:40
static const char prototype_xml_attr[]
Definition method.hpp:138
void save(OksXmlOutputStream &) const
Definition method.cpp:61
static const char language_xml_attr[]
Definition method.hpp:137
void set_body(const std::string &body)
Set method implementation body.
Definition method.cpp:480
static const char body_xml_attr[]
Definition method.hpp:139
static const char method_impl_xml_tag[]
Definition method.hpp:136
OKS method class.
Definition method.hpp:158
friend class OksClass
Definition method.hpp:160
void set_name(const std::string &name)
Set method name.
Definition method.cpp:303
const std::string & get_description() const noexcept
Definition method.hpp:219
static const char name_xml_attr[]
Definition method.hpp:297
static const char description_xml_attr[]
Definition method.hpp:298
static const char method_xml_tag[]
Definition method.hpp:296
const std::list< OksMethodImplementation * > * implementations() const noexcept
Definition method.hpp:235
void set_description(const std::string &description)
Set method description.
Definition method.cpp:417
friend std::ostream & operator<<(std::ostream &, const OksMethod &)
Definition method.cpp:190
friend class OksKernel
Definition method.hpp:159
void add_implementation(const std::string &language, const std::string &prototype, const std::string &body)
Add method implementation.
Definition method.cpp:370
void remove_implementation(const std::string &language)
Remove method implementation.
Definition method.cpp:393
bool operator==(const class OksMethod &) const
Definition method.cpp:150
friend class OksMethodImplementation
Definition method.hpp:161
OksMethodImplementation * find_implementation(const std::string &language) const
Find method implementation.
Definition method.cpp:359
std::list< OksMethodImplementation * > * p_implementations
Definition method.hpp:285
void save(OksXmlOutputStream &) const
Definition method.cpp:209
const std::string & get_name() const noexcept
Definition method.hpp:201
std::string p_description
Definition method.hpp:284
OksMethod(const std::string &name, OksClass *p=nullptr)
OKS method constructor.
Definition method.cpp:113
Including Qt Headers.
Definition module.cpp:16