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 <list>
19#include <string>
20
21#include "oks/defs.hpp"
22
23namespace dunedaq {
24namespace oks {
25
28class OksClass;
29class OksMethod;
30
32
37
39{
40 friend class OksKernel;
41 friend class OksMethod;
42
43public:
58
59 OksMethodImplementation(const std::string& language,
60 const std::string& prototype,
61 const std::string& body,
62 OksMethod* p = nullptr);
63
64 bool operator==(const class OksMethodImplementation&) const;
65 friend std::ostream& operator<<(std::ostream&, const OksMethodImplementation&);
66
68
69 const std::string& get_language() const noexcept { return p_language; }
70
81
82 void set_language(const std::string& language);
83
85
86 const std::string& get_prototype() const noexcept { return p_prototype; }
87
96
97 void set_prototype(const std::string& prototype);
98
100
101 const std::string& get_body() const noexcept { return p_body; }
102
111
112 void set_body(const std::string& body);
113
114private:
115 std::string p_language;
116 std::string p_prototype;
117 std::string p_body;
118
120
121 // to be used by OksMethod only
122
124 void save(OksXmlOutputStream&) const;
125
126 // valid xml tags and attributes
127
128 static const char method_impl_xml_tag[];
129 static const char language_xml_attr[];
130 static const char prototype_xml_attr[];
131 static const char body_xml_attr[];
132};
133
135
145
147{
148 friend class OksKernel;
149 friend class OksClass;
151
152public:
161
162 OksMethod(const std::string& name, OksClass* p = nullptr);
163
175
176 OksMethod(const std::string& name, const std::string& description, OksClass* p = nullptr);
177
178 ~OksMethod();
179
180 bool operator==(const class OksMethod&) const;
181 friend std::ostream& operator<<(std::ostream&, const OksMethod&);
182
184
185 const std::string& get_name() const noexcept { return p_name; }
186
196
197 void set_name(const std::string& name);
198
200
201 const std::string& get_description() const noexcept { return p_description; }
202
210
211 void set_description(const std::string& description);
212
214
215 const std::list<OksMethodImplementation*>* implementations() const noexcept { return p_implementations; }
216
225
226 OksMethodImplementation* find_implementation(const std::string& language) const;
227
240
241 void add_implementation(const std::string& language, const std::string& prototype, const std::string& body);
242
252
253 void remove_implementation(const std::string& language);
254
255private:
257 std::string p_name;
258 std::string p_description;
259 std::list<OksMethodImplementation*>* p_implementations;
260
261 // to be used by OksClass only
262
264 void save(OksXmlOutputStream&) const;
265
266 // valid xml tags and attributes
267
268 static const char method_xml_tag[];
269 static const char name_xml_attr[];
270 static const char description_xml_attr[];
271};
272
273} // namespace oks
274} // namespace dunedaq
275
276#endif
The OKS class.
Definition class.hpp:223
OKS method implementation class.
Definition method.hpp:39
const std::string & get_body() const noexcept
Definition method.hpp:101
OksMethodImplementation(const std::string &language, const std::string &prototype, const std::string &body, OksMethod *p=nullptr)
OKS method implementation constructor.
Definition method.cpp:28
friend std::ostream & operator<<(std::ostream &, const OksMethodImplementation &)
Definition method.cpp:48
const std::string & get_language() const noexcept
Definition method.hpp:69
void set_prototype(const std::string &prototype)
Set method implementation prototype.
Definition method.cpp:465
const std::string & get_prototype() const noexcept
Definition method.hpp:86
void set_language(const std::string &language)
Set method implementation language.
Definition method.cpp:434
bool operator==(const class OksMethodImplementation &) const
Definition method.cpp:42
static const char prototype_xml_attr[]
Definition method.hpp:130
void save(OksXmlOutputStream &) const
Definition method.cpp:64
static const char language_xml_attr[]
Definition method.hpp:129
void set_body(const std::string &body)
Set method implementation body.
Definition method.cpp:486
static const char body_xml_attr[]
Definition method.hpp:131
static const char method_impl_xml_tag[]
Definition method.hpp:128
OKS method class.
Definition method.hpp:147
friend class OksClass
Definition method.hpp:149
void set_name(const std::string &name)
Set method name.
Definition method.cpp:308
const std::string & get_description() const noexcept
Definition method.hpp:201
static const char name_xml_attr[]
Definition method.hpp:269
static const char description_xml_attr[]
Definition method.hpp:270
static const char method_xml_tag[]
Definition method.hpp:268
const std::list< OksMethodImplementation * > * implementations() const noexcept
Definition method.hpp:215
void set_description(const std::string &description)
Set method description.
Definition method.cpp:420
friend std::ostream & operator<<(std::ostream &, const OksMethod &)
Definition method.cpp:192
std::list< OksMethodImplementation * > * p_implementations
Definition method.hpp:259
friend class OksKernel
Definition method.hpp:148
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:395
bool operator==(const class OksMethod &) const
Definition method.cpp:151
friend class OksMethodImplementation
Definition method.hpp:150
OksMethodImplementation * find_implementation(const std::string &language) const
Find method implementation.
Definition method.cpp:357
void save(OksXmlOutputStream &) const
Definition method.cpp:213
const std::string & get_name() const noexcept
Definition method.hpp:185
std::string p_description
Definition method.hpp:258
OksMethod(const std::string &name, OksClass *p=nullptr)
OKS method constructor.
Definition method.cpp:116
The DUNE-DAQ namespace.