DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
dunedaq::oks::OksRelationship Class Reference

#include <relationship.hpp>

Collaboration diagram for dunedaq::oks::OksRelationship:
[legend]

Public Types

enum  CardinalityConstraint { Zero , One , Many }
 

Public Member Functions

 OksRelationship (const std::string &name, OksClass *p=nullptr)
 OKS relationship simple constructor.
 
 OksRelationship (const std::string &name, const std::string &type, CardinalityConstraint low_cc, CardinalityConstraint high_cc, bool composite, bool exclusive, bool dependent, const std::string &description, OksClass *p=nullptr)
 OKS relationship complete constructor.
 
bool operator== (const class OksRelationship &) const
 
const std::string & get_name () const noexcept
 
void set_name (const std::string &)
 Set relationship name.
 
OksClassget_class_type () const noexcept
 
const std::string & get_type () const noexcept
 
void set_type (const std::string &type)
 Set relationship type.
 
const std::string & get_description () const noexcept
 
void set_description (const std::string &description)
 Set relationship description.
 
CardinalityConstraint get_low_cardinality_constraint () const noexcept
 Get relationship low cardinality constraint.
 
void set_low_cardinality_constraint (CardinalityConstraint cc)
 Set relationship low cardinality constraint.
 
CardinalityConstraint get_high_cardinality_constraint () const noexcept
 Get relationship high cardinality constraint.
 
void set_high_cardinality_constraint (CardinalityConstraint)
 Set relationship high cardinality constraint.
 
bool get_is_composite () const noexcept
 
void set_is_composite (bool composite)
 Set the composite relationship property.
 
bool get_is_exclusive () const noexcept
 
void set_is_exclusive (bool exclusive)
 Set the composite relationship exclusive property.
 
bool get_is_dependent () const noexcept
 
void set_is_dependent (bool dependent)
 Set the composite relationship dependent property.
 

Static Public Member Functions

static CardinalityConstraint str2card (const char *) noexcept
 
static const char * card2str (CardinalityConstraint) noexcept
 

Private Member Functions

 OksRelationship (OksXmlInputStream &, OksClass *)
 
void save (OksXmlOutputStream &) const
 private constructor from XML stream
 

Private Attributes

std::string p_name
 
std::string p_rclass
 
CardinalityConstraint p_low_cc
 
CardinalityConstraint p_high_cc
 
bool p_composite
 
bool p_exclusive
 
bool p_dependent
 
std::string p_description
 
OksClassp_class
 
OksClassp_class_type
 
bool p_ordered
 

Static Private Attributes

static const char relationship_xml_tag [] = "relationship"
 private method to save in XML stream
 
static const char name_xml_attr [] = "name"
 
static const char description_xml_attr [] = "description"
 
static const char class_type_xml_attr [] = "class-type"
 
static const char low_cc_xml_attr [] = "low-cc"
 
static const char high_cc_xml_attr [] = "high-cc"
 
static const char is_composite_xml_attr [] = "is-composite"
 
static const char is_exclusive_xml_attr [] = "is-exclusive"
 
static const char is_dependent_xml_attr [] = "is-dependent"
 
static const char mv_implement_xml_attr []
 
static const char ordered_xml_attr [] = "ordered"
 

Friends

class OksKernel
 
class OksClass
 
struct OksData
 
class OksObject
 
std::ostream & operator<< (std::ostream &s, const OksRelationship &r)
 

Detailed Description

   @ingroup oks

   \brief OKS relationship class.

   The class implements OKS relationship that is a part of an OKS class.

   A relationship has name, class type and description.
   A relationship is [zero|one]-to-one or [zero|one]-to-many.

   There are two basic types of OKS relationships:
   - \b weak or \b general reference (relationship): default reference between two objects, it carries no special semantic;
   - \b strong or \b composite reference (relationship): the objects connected by composite references are considered as a whole object.

   A composite reference may be exclusive or shared
   (an exclusive object is component of only one object,
   a shared object may be referenced by more than one object).

   As well a composite reference can be dependent or independent.
   The existence of object, referenced thought dependent composite reference,
   is dependent from existence of their composite parents.
   The deleting of all composite parents results the deleting of
   their composite dependent child objects (i.e. reference count is zero).

   \paragraph ex Example
   The following code:
int main()
{
try
{
"consists of", // name
"Element", // class type
OksRelationship::Zero, // low cc in Zero
OksRelationship::Many, // high cc is Many
true, // is composite
true, // is exclusive
true, // is dependent
"A structure consists of zero or many elements" // description
);
std::cout << r;
}
catch (const std::exception& ex)
{
std::cerr << "Caught exception:\n" << ex.what() << std::endl;
}
return 0;
}
int main(int argc, char **argv)

produces:

Relationship name: "consists of"
class type: "Element"
low cardinality constraint is zero
high cardinality constraint is many
is composite reference
is exclusive reference
is dependent reference
has description: "A structure consists of zero or many elements"
Found unresolved reference(s)
Definition kernel.cpp:135

Definition at line 93 of file relationship.hpp.

Member Enumeration Documentation

◆ CardinalityConstraint

Valid cardinality constraint types

Enumerator
Zero 
One 
Many 

Definition at line 107 of file relationship.hpp.

Constructor & Destructor Documentation

◆ OksRelationship() [1/3]

dunedaq::oks::OksRelationship::OksRelationship ( const std::string & name,
OksClass * p = nullptr )

OKS relationship simple constructor.

Create new OKS relationship providing name.

The parameter is:

Parameters
namename of the attribute
pcontaining parent class
Exceptions
oks::exceptionis thrown in case of problems.

Definition at line 46 of file relationship.cpp.

46 :
47 p_name (nm),
48 p_low_cc (Zero),
50 p_composite (false),
51 p_exclusive (false),
52 p_dependent (false),
53 p_class (p),
54 p_class_type (nullptr),
55 p_ordered (false)
56{
57 oks::validate_not_empty(p_name, "relationship name");
58}
CardinalityConstraint p_high_cc
CardinalityConstraint p_low_cc
void validate_not_empty(const std::string &value, const char *name)

◆ OksRelationship() [2/3]

dunedaq::oks::OksRelationship::OksRelationship ( const std::string & name,
const std::string & type,
CardinalityConstraint low_cc,
CardinalityConstraint high_cc,
bool composite,
bool exclusive,
bool dependent,
const std::string & description,
OksClass * p = nullptr )

OKS relationship complete constructor.

Create new OKS relationship providing all properties.

The parameters are:

Parameters
namename of the attribute (max 128 bytes, see #s_max_name_length variable)
typeclass type of relationship (i.e. name of existing OKS class)
low_cclowest possible number of objects linked via this relationship ("zero" or "one")
high_cchighest possible number of objects linked via this relationship ("one" or "many")
compositeif true, set strong dependency on children objects
exclusiveif true, guaranty unique reference on children objects via such relationship by any object
dependentif true, existence of children objects depends on existence of parent
descriptiondescription of the method (max 2000 bytes, see #s_max_description_length variable)
pcontaining parent class
Exceptions
oks::exceptionis thrown in case of problems.

Definition at line 60 of file relationship.cpp.

62 :
63 p_name (nm),
64 p_rclass (rc),
65 p_low_cc (l_cc),
66 p_high_cc (h_cc),
67 p_composite (cm),
68 p_exclusive (excl),
69 p_dependent (dp),
70 p_description (desc),
71 p_class (p),
72 p_class_type (nullptr),
73 p_ordered (false)
74{
75 oks::validate_not_empty(p_name, "relationship name");
76 oks::validate_not_empty(p_rclass, "relationship class");
77}

◆ OksRelationship() [3/3]

dunedaq::oks::OksRelationship::OksRelationship ( OksXmlInputStream & s,
OksClass * parent )
private

To be used by OksClass only

Definition at line 141 of file relationship.cpp.

141 :
142 p_low_cc (Zero),
143 p_high_cc (Many),
144 p_composite (false),
145 p_exclusive (false),
146 p_dependent (false),
147 p_class (parent),
148 p_class_type (nullptr),
149 p_ordered (false)
150{
151 try {
152 while(true) {
153 OksXmlAttribute attr(s);
154
155 // check for close of tag
156
157 if(oks::cmp_str1(attr.name(), "/")) { break; }
158
159
160 // check for known oks-relationship' attributes
161
162 else if(oks::cmp_str4(attr.name(), name_xml_attr)) p_name.assign(attr.value(), attr.value_len());
163 else if(oks::cmp_str11(attr.name(), description_xml_attr)) p_description.assign(attr.value(), attr.value_len());
164 else if(oks::cmp_str10(attr.name(), class_type_xml_attr)) p_rclass.assign(attr.value(), attr.value_len());
165 else if(oks::cmp_str6(attr.name(), low_cc_xml_attr)) p_low_cc = str2card(attr.value());
166 else if(oks::cmp_str7(attr.name(), high_cc_xml_attr)) p_high_cc = str2card(attr.value());
167 else if(oks::cmp_str12(attr.name(), is_composite_xml_attr)) p_composite = oks::xml::str2bool(attr.value());
168 else if(oks::cmp_str12(attr.name(), is_exclusive_xml_attr)) p_exclusive = oks::xml::str2bool(attr.value());
169 else if(oks::cmp_str12(attr.name(), is_dependent_xml_attr)) p_dependent = oks::xml::str2bool(attr.value());
170 else if(oks::cmp_str7(attr.name(), ordered_xml_attr)) p_ordered = oks::xml::str2bool(attr.value());
171 else if(!strcmp(attr.name(), "multi-value-implementation")) {
172 s.error_msg("OksRelationship::OksRelationship(OksXmlInputStream&)")
173 << "Obsolete oks-relationship\'s attribute \'" << attr.name() << "\'\n";
174 }
175 else {
176 s.throw_unexpected_attribute(attr.name());
177 }
178 }
179 }
180 catch(oks::exception & e) {
181 throw oks::FailedRead("xml attribute", e);
182 }
183 catch (std::exception & e) {
184 throw oks::FailedRead("xml attribute", e.what());
185 }
186
187
188 // check validity of read values
189
190 try {
191 oks::validate_not_empty(p_name, "relationship name");
192 oks::validate_not_empty(p_rclass, "relationship class");
193 }
194 catch(std::exception& ex) {
195 throw oks::FailedRead("oks relationship", oks::BadFileData(ex.what(), s.get_line_no(), s.get_line_pos()));
196 }
197}
static const char class_type_xml_attr[]
static const char ordered_xml_attr[]
static const char low_cc_xml_attr[]
static const char description_xml_attr[]
static const char is_composite_xml_attr[]
static const char is_exclusive_xml_attr[]
static const char name_xml_attr[]
static const char high_cc_xml_attr[]
static const char is_dependent_xml_attr[]
static CardinalityConstraint str2card(const char *) noexcept
bool str2bool(const char *s) noexcept
Definition xml.hpp:26
bool cmp_str1(const char *s1, const char s2[2])
Definition cstring.hpp:9
bool cmp_str4(const char *s1, const char s2[5])
Definition cstring.hpp:29
bool cmp_str6(const char *s1, const char s2[7])
Definition cstring.hpp:45
bool cmp_str10(const char *s1, const char s2[11])
Definition cstring.hpp:73
bool cmp_str11(const char *s1, const char s2[12])
Definition cstring.hpp:77
bool cmp_str12(const char *s1, const char s2[13])
Definition cstring.hpp:81
bool cmp_str7(const char *s1, const char s2[8])
Definition cstring.hpp:53

Member Function Documentation

◆ card2str()

const char * dunedaq::oks::OksRelationship::card2str ( CardinalityConstraint cc)
staticnoexcept

Helper method to convert cardinality constraint to string

Definition at line 37 of file relationship.cpp.

38{
39 return (
40 cc == Zero ? "zero" :
41 cc == One ? "one" :
42 "many"
43 );
44}

◆ get_class_type()

OksClass * dunedaq::oks::OksRelationship::get_class_type ( ) const
inlinenoexcept

Get relationship type (pointer on OKS class).

Definition at line 185 of file relationship.hpp.

185{return p_class_type;}

◆ get_description()

const std::string & dunedaq::oks::OksRelationship::get_description ( ) const
inlinenoexcept

Return description of relationship

Definition at line 210 of file relationship.hpp.

210{return p_description;}

◆ get_high_cardinality_constraint()

CardinalityConstraint dunedaq::oks::OksRelationship::get_high_cardinality_constraint ( ) const
inlinenoexcept

Get relationship high cardinality constraint.

See set_high_cardinality_constraint() for more information.

Returns
the relationship high cardinality constraint

Definition at line 258 of file relationship.hpp.

258{return p_high_cc;}

◆ get_is_composite()

bool dunedaq::oks::OksRelationship::get_is_composite ( ) const
inlinenoexcept

Returns the true, if relationship is composite and false, if not.

Definition at line 278 of file relationship.hpp.

278{return p_composite;}

◆ get_is_dependent()

bool dunedaq::oks::OksRelationship::get_is_dependent ( ) const
inlinenoexcept

Returns the true, if relationship is dependent and false, if not.

Definition at line 329 of file relationship.hpp.

329{return p_dependent;}

◆ get_is_exclusive()

bool dunedaq::oks::OksRelationship::get_is_exclusive ( ) const
inlinenoexcept

Returns the true, if relationship is exclusive and false, if not.

Definition at line 310 of file relationship.hpp.

310{return p_exclusive;}

◆ get_low_cardinality_constraint()

CardinalityConstraint dunedaq::oks::OksRelationship::get_low_cardinality_constraint ( ) const
inlinenoexcept

Get relationship low cardinality constraint.

See set_low_cardinality_constraint() for more information.

Returns
the relationship low cardinality constraint

Definition at line 232 of file relationship.hpp.

232{return p_low_cc;}

◆ get_name()

const std::string & dunedaq::oks::OksRelationship::get_name ( ) const
inlinenoexcept

Methods to access relationship properties.

Definition at line 167 of file relationship.hpp.

167{return p_name;}

◆ get_type()

const std::string & dunedaq::oks::OksRelationship::get_type ( ) const
inlinenoexcept

Get relationship type (string).

Definition at line 190 of file relationship.hpp.

190{return p_rclass;}

◆ operator==()

bool dunedaq::oks::OksRelationship::operator== ( const class OksRelationship & r) const

Definition at line 80 of file relationship.cpp.

81{
82 return (
83 ( this == &r ) ||
84 (
85 ( p_name == r.p_name ) &&
86 ( p_rclass == r.p_rclass ) &&
87 ( p_low_cc == r.p_low_cc ) &&
88 ( p_high_cc == r.p_high_cc ) &&
89 ( p_composite == r.p_composite ) &&
90 ( p_exclusive == r.p_exclusive ) &&
91 ( p_dependent == r.p_dependent ) &&
92 ( p_description == r.p_description ) &&
93 ( p_ordered == r.p_ordered )
94 )
95 );
96}

◆ save()

void dunedaq::oks::OksRelationship::save ( OksXmlOutputStream & s) const
private

private constructor from XML stream

Definition at line 116 of file relationship.cpp.

117{
118 s.put(" ");
119
120 s.put_start_tag(relationship_xml_tag, sizeof(relationship_xml_tag) - 1);
121
122 s.put_attribute(name_xml_attr, sizeof(name_xml_attr) - 1, p_name.c_str());
123
124 if (!p_description.empty())
125 s.put_attribute(description_xml_attr, sizeof(description_xml_attr) - 1, p_description.c_str());
126
127 s.put_attribute(class_type_xml_attr, sizeof(class_type_xml_attr) - 1, p_rclass.c_str());
128 s.put_attribute(low_cc_xml_attr, sizeof(low_cc_xml_attr) - 1, card2str(p_low_cc));
129 s.put_attribute(high_cc_xml_attr, sizeof(high_cc_xml_attr) - 1, card2str(p_high_cc));
133
134 if (p_ordered)
135 s.put_attribute(ordered_xml_attr, sizeof(ordered_xml_attr) - 1, oks::xml::bool2str(p_ordered));
136
137 s.put_end_tag();
138}
static const char relationship_xml_tag[]
private method to save in XML stream
static const char * card2str(CardinalityConstraint) noexcept
const char * bool2str(bool b) noexcept
Definition xml.hpp:23

◆ set_description()

void dunedaq::oks::OksRelationship::set_description ( const std::string & description)

Set relationship description.

Parameters
descriptionnew description of relationship (max 2000 bytes, see #s_max_description_length variable)

In case of problems the oks::exception is thrown.

Definition at line 279 of file relationship.cpp.

280{
281 if(p_description != desc) {
282 if(p_class) p_class->lock_file("OksRelationship::set_description");
283
284 p_description = desc;
285
287 }
288}
void registrate_class_change(ChangeType, const void *, bool=true)
Definition class.cpp:2035
void lock_file(const char *)
Definition class.cpp:766

◆ set_high_cardinality_constraint()

void dunedaq::oks::OksRelationship::set_high_cardinality_constraint ( CardinalityConstraint h_cc)

Set relationship high cardinality constraint.

The high cardinality constraint defiles highest possible number of objects linked via this relationship. It must be OksRelationship::One or OksRelationship::Many.

Parameters
ccthe high cardinality constraint

In case of problems the oks::exception is thrown.

Definition at line 309 of file relationship.cpp.

310{
311 if(p_high_cc != h_cc) {
312 if(p_class) p_class->lock_file("OksRelationship::set_high_cardinality_constraint");
313
315
316 p_high_cc = h_cc;
317
318 if(p_class) {
320
321 if(p_high_cc == Many || old_cc == Many) p_class->registrate_relationship_change(this);
322 }
323 }
324}
void registrate_relationship_change(OksRelationship *)
Definition class.cpp:1866

◆ set_is_composite()

void dunedaq::oks::OksRelationship::set_is_composite ( bool composite)

Set the composite relationship property.

If relationship is composite, the parent object sets strong references on children objects and it is considered as composite or compound object.

The composite relationships are presented in a special way (as a diamond) by the OKS data editor graphical views, e.g. document is compound of sections:

============ 1..N ===========
| Document |<>-------| Section |
============ has ===========

Also, the oksdalgen package generates print() method of data access library in a different way depending on the composite relationship state:

  • objects referenced via non-composite relationship are printed as references from parent object
  • objects referenced via composite relationship are printed with details as part of parent object
Parameters
compositepass true to make relationship composite

In case of problems the oks::exception is thrown.

Definition at line 327 of file relationship.cpp.

328{
329 if(p_composite != cm) {
330 if(p_class) p_class->lock_file("OksRelationship::set_is_composite");
331
332 p_composite = cm;
333
335 }
336}

◆ set_is_dependent()

void dunedaq::oks::OksRelationship::set_is_dependent ( bool dependent)

Set the composite relationship dependent property.

If relationship is dependent, the child object will be removed when its parent object is removed and the child is not referenced by another parents via dependent composite relationships.

Parameters
dependentpass true to make relationship dependent

In case of problems the oks::exception is thrown.

Definition at line 351 of file relationship.cpp.

352{
353 if(p_dependent != dp) {
354 if(p_class) p_class->lock_file("OksRelationship::set_is_dependent");
355
356 p_dependent = dp;
357
359 }
360}

◆ set_is_exclusive()

void dunedaq::oks::OksRelationship::set_is_exclusive ( bool exclusive)

Set the composite relationship exclusive property.

If relationship is exclusive, the child object can only be referenced by single parent via given relationship.

Parameters
exclusivepass true to make relationship exclusive

In case of problems the oks::exception is thrown.

Definition at line 339 of file relationship.cpp.

340{
341 if(p_exclusive != ex) {
342 if(p_class) p_class->lock_file("OksRelationship::set_is_exclusive");
343
344 p_exclusive = ex;
345
347 }
348}

◆ set_low_cardinality_constraint()

void dunedaq::oks::OksRelationship::set_low_cardinality_constraint ( CardinalityConstraint cc)

Set relationship low cardinality constraint.

The low cardinality constraint defiles lowest possible number of objects linked via this relationship. It must be OksRelationship::Zero or OksRelationship::One.

Parameters
ccthe low cardinality constraint

In case of problems the oks::exception is thrown.

Definition at line 291 of file relationship.cpp.

292{
293 if(p_low_cc != l_cc) {
294 if(p_class) p_class->lock_file("OksRelationship::set_low_cardinality_constraint");
295
297
298 p_low_cc = l_cc;
299
300 if(p_class) {
302
303 if(p_low_cc == Many || old_cc == Many) p_class->registrate_relationship_change(this);
304 }
305 }
306}

◆ set_name()

void dunedaq::oks::OksRelationship::set_name ( const std::string & new_name)

Set relationship name.

Relationships linked with the same class shall have different names.

Parameters
namenew name of relationship (max 128 bytes, see #s_max_name_length variable)

In case of problems the oks::exception is thrown.

Definition at line 201 of file relationship.cpp.

202{
203 // ignore when name is the same
204
205 if(p_name == new_name) return;
206
207
208 // additional checks are required,
209 // if the relationship already belongs to some class
210
211 if(p_class) {
212
213 // check maximum allowed length for relationship name
214
215 try {
216 oks::validate_not_empty(new_name, "name");
217 }
218 catch(std::exception& ex) {
219 throw oks::SetOperationFailed("OksRelationship::set_name", ex.what());
220 }
221
222
223 // having a direct relationship with the same name is an error
224
225 if(p_class->find_direct_relationship(new_name) != 0) {
226 std::ostringstream text;
227 text << "Class \"" << p_class->get_name() << "\" already has direct relationship \"" << new_name << '\"';
228 throw oks::SetOperationFailed("OksRelationship::set_name", text.str());
229 }
230
231
232 // check possibility to lock the file
233
234 p_class->lock_file("OksRelationship::set_name");
235
236
237 // probably a non-direct relationship already exists
238
240
241
242 // change the name
243
244 p_name = new_name;
245
246
247 // registrate the change
248
250 }
251 else {
252 p_name = new_name;
253 }
254}
OksRelationship * find_direct_relationship(const std::string &name) const noexcept
Find direct relationship.
Definition class.cpp:1173
OksRelationship * find_relationship(const std::string &name) const noexcept
Find relationship (search in this and base classes).
Definition class.cpp:1184
const std::string & get_name() const noexcept
Definition class.hpp:363
OksRelationship(const std::string &name, OksClass *p=nullptr)
OKS relationship simple constructor.

◆ set_type()

void dunedaq::oks::OksRelationship::set_type ( const std::string & type)

Set relationship type.

The type is a name of existing OKS class. The value of relationship can point on objects of that class or any objects of classes derived from this one.

Parameters
typenew type of relationship

In case of problems the oks::exception is thrown.

Definition at line 257 of file relationship.cpp.

258{
259 if(p_rclass == cn) return;
260
261 if(!p_class || !p_class->p_kernel || (p_class_type = p_class->p_kernel->find_class(cn)) != 0) {
262 if(p_class) p_class->lock_file("OksRelationship::set_type");
263
264 p_rclass = cn;
265
266 if(p_class) {
269 }
270 }
271 else {
272 std::ostringstream text;
273 text << "cannot find class \"" << cn << '\"';
274 throw oks::SetOperationFailed("OksRelationship::set_type", text.str());
275 }
276}
OksKernel * p_kernel
Definition class.hpp:953
OksClass * find_class(const std::string &class_name) const
Find class by name (C++ string).
Definition kernel.hpp:1814

◆ str2card()

OksRelationship::CardinalityConstraint dunedaq::oks::OksRelationship::str2card ( const char * s)
staticnoexcept

Helper method to convert valid string to cardinality constraint

Definition at line 27 of file relationship.cpp.

28{
29 return (
30 oks::cmp_str3(s, "one") ? One :
31 oks::cmp_str4(s, "zero") ? Zero :
32 Many
33 );
34}
bool cmp_str3(const char *s1, const char s2[4])
Definition cstring.hpp:21

Friends And Related Symbol Documentation

◆ OksClass

friend class OksClass
friend

Definition at line 96 of file relationship.hpp.

◆ OksData

friend struct OksData
friend

Definition at line 97 of file relationship.hpp.

◆ OksKernel

friend class OksKernel
friend

Definition at line 95 of file relationship.hpp.

◆ OksObject

friend class OksObject
friend

Definition at line 98 of file relationship.hpp.

◆ operator<<

std::ostream & operator<< ( std::ostream & s,
const OksRelationship & r )
friend

Definition at line 98 of file relationship.cpp.

100{
101 s << "Relationship name: \"" << r.p_name << "\"\n"
102 " class type: \"" << r.p_rclass << "\"\n"
103 " low cardinality constraint is " << OksRelationship::card2str(r.p_low_cc) << "\n"
104 " high cardinality constraint is " << OksRelationship::card2str(r.p_high_cc) << "\n"
105 " is" << (r.p_composite == true ? "" : " not") << " composite reference\n"
106 " is" << (r.p_exclusive == true ? "" : " not") << " exclusive reference\n"
107 " is " << (r.p_dependent == true ? "dependent" : "shared") << " reference\n"
108 " has description: \"" << r.p_description << "\"\n"
109 " is " << (r.p_ordered == true ? "ordered" : "unordered") << std::endl;
110
111 return s;
112}

Member Data Documentation

◆ class_type_xml_attr

const char dunedaq::oks::OksRelationship::class_type_xml_attr = "class-type"
staticprivate

Definition at line 388 of file relationship.hpp.

◆ description_xml_attr

const char dunedaq::oks::OksRelationship::description_xml_attr = "description"
staticprivate

Definition at line 387 of file relationship.hpp.

◆ high_cc_xml_attr

const char dunedaq::oks::OksRelationship::high_cc_xml_attr = "high-cc"
staticprivate

Definition at line 390 of file relationship.hpp.

◆ is_composite_xml_attr

const char dunedaq::oks::OksRelationship::is_composite_xml_attr = "is-composite"
staticprivate

Definition at line 391 of file relationship.hpp.

◆ is_dependent_xml_attr

const char dunedaq::oks::OksRelationship::is_dependent_xml_attr = "is-dependent"
staticprivate

Definition at line 393 of file relationship.hpp.

◆ is_exclusive_xml_attr

const char dunedaq::oks::OksRelationship::is_exclusive_xml_attr = "is-exclusive"
staticprivate

Definition at line 392 of file relationship.hpp.

◆ low_cc_xml_attr

const char dunedaq::oks::OksRelationship::low_cc_xml_attr = "low-cc"
staticprivate

Definition at line 389 of file relationship.hpp.

◆ mv_implement_xml_attr

const char dunedaq::oks::OksRelationship::mv_implement_xml_attr[]
staticprivate

Definition at line 394 of file relationship.hpp.

◆ name_xml_attr

const char dunedaq::oks::OksRelationship::name_xml_attr = "name"
staticprivate

Definition at line 386 of file relationship.hpp.

◆ ordered_xml_attr

const char dunedaq::oks::OksRelationship::ordered_xml_attr = "ordered"
staticprivate

Definition at line 395 of file relationship.hpp.

◆ p_class

OksClass* dunedaq::oks::OksRelationship::p_class
private

Definition at line 367 of file relationship.hpp.

◆ p_class_type

OksClass* dunedaq::oks::OksRelationship::p_class_type
private

Definition at line 368 of file relationship.hpp.

◆ p_composite

bool dunedaq::oks::OksRelationship::p_composite
private

Definition at line 363 of file relationship.hpp.

◆ p_dependent

bool dunedaq::oks::OksRelationship::p_dependent
private

Definition at line 365 of file relationship.hpp.

◆ p_description

std::string dunedaq::oks::OksRelationship::p_description
private

Definition at line 366 of file relationship.hpp.

◆ p_exclusive

bool dunedaq::oks::OksRelationship::p_exclusive
private

Definition at line 364 of file relationship.hpp.

◆ p_high_cc

CardinalityConstraint dunedaq::oks::OksRelationship::p_high_cc
private

Definition at line 362 of file relationship.hpp.

◆ p_low_cc

CardinalityConstraint dunedaq::oks::OksRelationship::p_low_cc
private

Definition at line 361 of file relationship.hpp.

◆ p_name

std::string dunedaq::oks::OksRelationship::p_name
private

Definition at line 359 of file relationship.hpp.

◆ p_ordered

bool dunedaq::oks::OksRelationship::p_ordered
private

Definition at line 369 of file relationship.hpp.

◆ p_rclass

std::string dunedaq::oks::OksRelationship::p_rclass
private

Definition at line 360 of file relationship.hpp.

◆ relationship_xml_tag

const char dunedaq::oks::OksRelationship::relationship_xml_tag = "relationship"
staticprivate

private method to save in XML stream

Valid xml tags and attributes

Definition at line 385 of file relationship.hpp.


The documentation for this class was generated from the following files: