DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
relationship.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/relationship.h to include/oks/relationship.hpp).
5
14
15#ifndef OKS_RELATIONSHIP_H
16#define OKS_RELATIONSHIP_H
17
18#include "oks/defs.hpp"
19
20#include <string>
21
22namespace dunedaq {
23namespace oks {
24
25class OksClass;
28
30
98
100{
101 friend class OksKernel;
102 friend class OksClass;
103 friend struct OksData;
104 friend class OksObject;
105
106public:
110
117
129
130 OksRelationship(const std::string& name, OksClass* p = nullptr);
131
150
151 OksRelationship(const std::string& name,
152 const std::string& type,
154 CardinalityConstraint high_cc,
155 bool composite,
156 bool exclusive,
157 bool dependent,
158 const std::string& description,
159 OksClass* p = nullptr);
160
161 bool operator==(const class OksRelationship&) const;
162
163 friend std::ostream& operator<<(std::ostream&, const OksRelationship&);
164
168
169 const std::string& get_name() const noexcept { return p_name; }
170
180
181 void set_name(const std::string&);
182
184
185 OksClass* get_class_type() const noexcept { return p_class_type; }
186
188
189 const std::string& get_type() const noexcept { return p_rclass; }
190
202
203 void set_type(const std::string& type);
204
206
207 const std::string& get_description() const noexcept { return p_description; }
208
216
217 void set_description(const std::string& description);
218
226
228
240
242
250
252
264
266
268
269 bool get_is_composite() const noexcept { return p_composite; }
270
294
295 void set_is_composite(bool composite);
296
298
299 bool get_is_exclusive() const noexcept { return p_exclusive; }
300
311
312 void set_is_exclusive(bool exclusive);
313
315
316 bool get_is_dependent() const noexcept { return p_dependent; }
317
329
330 void set_is_dependent(bool dependent);
331
333
334 static CardinalityConstraint str2card(const char*) noexcept;
335
337
338 static const char* card2str(CardinalityConstraint) noexcept;
339
340private:
341 std::string p_name;
342 std::string p_rclass;
348 std::string p_description;
352
356
358 void save(OksXmlOutputStream&) const;
359
363
364 static const char relationship_xml_tag[];
365 static const char name_xml_attr[];
366 static const char description_xml_attr[];
367 static const char class_type_xml_attr[];
368 static const char low_cc_xml_attr[];
369 static const char high_cc_xml_attr[];
370 static const char is_composite_xml_attr[];
371 static const char is_exclusive_xml_attr[];
372 static const char is_dependent_xml_attr[];
373 static const char mv_implement_xml_attr[];
374 static const char ordered_xml_attr[];
375};
376
377} // namespace oks
378} // namespace dunedaq
379#endif
The OKS class.
Definition class.hpp:223
void set_type(const std::string &type)
Set relationship type.
static const char class_type_xml_attr[]
void set_is_exclusive(bool exclusive)
Set the composite relationship exclusive property.
bool get_is_exclusive() const noexcept
static const char ordered_xml_attr[]
static const char low_cc_xml_attr[]
static const char relationship_xml_tag[]
private method to save in XML stream
static const char mv_implement_xml_attr[]
bool get_is_composite() const noexcept
CardinalityConstraint p_high_cc
bool get_is_dependent() const noexcept
const std::string & get_name() const noexcept
static const char description_xml_attr[]
static const char is_composite_xml_attr[]
void set_is_dependent(bool dependent)
Set the composite relationship dependent property.
void set_is_composite(bool composite)
Set the composite relationship property.
CardinalityConstraint get_high_cardinality_constraint() const noexcept
Get relationship high cardinality constraint.
void set_high_cardinality_constraint(CardinalityConstraint)
Set relationship high cardinality constraint.
OksRelationship(const std::string &name, OksClass *p=nullptr)
OKS relationship simple constructor.
static const char is_exclusive_xml_attr[]
void save(OksXmlOutputStream &) const
private constructor from XML stream
void set_low_cardinality_constraint(CardinalityConstraint cc)
Set relationship low cardinality constraint.
static const char name_xml_attr[]
static const char * card2str(CardinalityConstraint) noexcept
const std::string & get_description() const noexcept
CardinalityConstraint get_low_cardinality_constraint() const noexcept
Get relationship low cardinality constraint.
void set_description(const std::string &description)
Set relationship description.
const std::string & get_type() const noexcept
static const char high_cc_xml_attr[]
CardinalityConstraint p_low_cc
OksClass * get_class_type() const noexcept
void set_name(const std::string &)
Set relationship name.
static const char is_dependent_xml_attr[]
static CardinalityConstraint str2card(const char *) noexcept
bool operator==(const OksString &s1, const OksString &s2)
Implementation of OksString logical equality operator.
Definition object.hpp:453
std::ostream & operator<<(std::ostream &s, const oks::exception &ex)
The DUNE-DAQ namespace.