DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
method.hpp
Go to the documentation of this file.
1
10#ifndef OKS_METHOD_H
11#define OKS_METHOD_H
12
13#include <string>
14#include <list>
15
16#include "oks/defs.hpp"
17
18namespace dunedaq {
19namespace oks {
20
21class OksXmlOutputStream;
22class OksXmlInputStream;
23class OksClass;
24class OksMethod;
25
26
28
35{
36 friend class OksKernel;
37 friend class OksMethod;
38
39
40 public:
41
55 OksMethodImplementation(const std::string& language, const std::string& prototype, const std::string& body, OksMethod * p = nullptr);
56
57 bool operator==(const class OksMethodImplementation &) const;
58 friend std::ostream& operator<<(std::ostream&, const OksMethodImplementation&);
59
60
63 const std::string& get_language() const noexcept {return p_language;}
64
65
77 void set_language(const std::string& language);
78
79
82 const std::string& get_prototype() const noexcept {return p_prototype;}
83
84
94 void set_prototype(const std::string& prototype);
95
96
99 const std::string& get_body() const noexcept {return p_body;}
100
101
111 void set_body(const std::string& body);
112
113
114 private:
115
116 std::string p_language;
117 std::string p_prototype;
118 std::string p_body;
119
121
122
123 // to be used by OksMethod only
124
126 void save(OksXmlOutputStream &) const;
127
128
129 // valid xml tags and attributes
130
131 static const char method_impl_xml_tag[];
132 static const char language_xml_attr[];
133 static const char prototype_xml_attr[];
134 static const char body_xml_attr[];
135
136
137};
138
139
141
153{
154 friend class OksKernel;
155 friend class OksClass;
157
158
159 public:
160
170 OksMethod(const std::string& name, OksClass * p = nullptr);
171
172
185 OksMethod(const std::string& name, const std::string& description, OksClass * p = nullptr);
186
187
188 ~OksMethod();
189
190 bool operator==(const class OksMethod &) const;
191 friend std::ostream& operator<<(std::ostream&, const OksMethod&);
192
193
196 const std::string& get_name() const noexcept {return p_name;}
197
198
209 void set_name(const std::string& name);
210
211
214 const std::string& get_description() const noexcept {return p_description;}
215
216
225 void set_description(const std::string& description);
226
227
230 const std::list<OksMethodImplementation *> * implementations() const noexcept {return p_implementations;}
231
232
242 OksMethodImplementation * find_implementation(const std::string& language) const;
243
244
245
259 void add_implementation(const std::string& language, const std::string& prototype, const std::string& body);
260
261
272 void remove_implementation(const std::string& language);
273
274
275 private:
276
278 std::string p_name;
279 std::string p_description;
280 std::list<OksMethodImplementation *> * p_implementations;
281
282
283 // to be used by OksClass only
284
286 void save(OksXmlOutputStream &) const;
287
288
289 // valid xml tags and attributes
290
291 static const char method_xml_tag[];
292 static const char name_xml_attr[];
293 static const char description_xml_attr[];
294
295};
296
297} // namespace oks
298} // namespace dunedaq
299
300#endif
The OKS class.
Definition class.hpp:200
Provides interface to the OKS kernel.
Definition kernel.hpp:577
OKS method implementation class.
Definition method.hpp:35
const std::string & get_body() const noexcept
Definition method.hpp:99
OksMethodImplementation(const std::string &language, const std::string &prototype, const std::string &body, OksMethod *p=nullptr)
OKS method implementation constructor.
Definition method.cpp:24
friend std::ostream & operator<<(std::ostream &, const OksMethodImplementation &)
Definition method.cpp:44
const std::string & get_language() const noexcept
Definition method.hpp:63
void set_prototype(const std::string &prototype)
Set method implementation prototype.
Definition method.cpp:454
const std::string & get_prototype() const noexcept
Definition method.hpp:82
void set_language(const std::string &language)
Set method implementation language.
Definition method.cpp:424
bool operator==(const class OksMethodImplementation &) const
Definition method.cpp:35
static const char prototype_xml_attr[]
Definition method.hpp:133
void save(OksXmlOutputStream &) const
Definition method.cpp:56
static const char language_xml_attr[]
Definition method.hpp:132
void set_body(const std::string &body)
Set method implementation body.
Definition method.cpp:475
static const char body_xml_attr[]
Definition method.hpp:134
static const char method_impl_xml_tag[]
Definition method.hpp:131
OKS method class.
Definition method.hpp:153
void set_name(const std::string &name)
Set method name.
Definition method.cpp:298
const std::string & get_description() const noexcept
Definition method.hpp:214
static const char name_xml_attr[]
Definition method.hpp:292
static const char description_xml_attr[]
Definition method.hpp:293
static const char method_xml_tag[]
Definition method.hpp:291
const std::list< OksMethodImplementation * > * implementations() const noexcept
Definition method.hpp:230
void set_description(const std::string &description)
Set method description.
Definition method.cpp:412
friend std::ostream & operator<<(std::ostream &, const OksMethod &)
Definition method.cpp:185
void add_implementation(const std::string &language, const std::string &prototype, const std::string &body)
Add method implementation.
Definition method.cpp:365
void remove_implementation(const std::string &language)
Remove method implementation.
Definition method.cpp:388
bool operator==(const class OksMethod &) const
Definition method.cpp:145
OksMethodImplementation * find_implementation(const std::string &language) const
Find method implementation.
Definition method.cpp:354
std::list< OksMethodImplementation * > * p_implementations
Definition method.hpp:280
void save(OksXmlOutputStream &) const
Definition method.cpp:204
const std::string & get_name() const noexcept
Definition method.hpp:196
std::string p_description
Definition method.hpp:279
OksMethod(const std::string &name, OksClass *p=nullptr)
OKS method constructor.
Definition method.cpp:108
Including Qt Headers.
Definition __init__.py:1