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;
}
OksRelationship(const std::string &name, OksClass *p=nullptr)
OKS relationship simple constructor.
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:140

Definition at line 98 of file relationship.hpp.

Member Enumeration Documentation

◆ CardinalityConstraint

Valid cardinality constraint types

Enumerator
Zero 
One 
Many 

Definition at line 112 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 51 of file relationship.cpp.

51 :
52 p_name (nm),
53 p_low_cc (Zero),
55 p_composite (false),
56 p_exclusive (false),
57 p_dependent (false),
58 p_class (p),
59 p_class_type (nullptr),
60 p_ordered (false)
61{
62 oks::validate_not_empty(p_name, "relationship name");
63}
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 65 of file relationship.cpp.

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

◆ OksRelationship() [3/3]

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

To be used by OksClass only

Definition at line 146 of file relationship.cpp.

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

Member Function Documentation

◆ card2str()

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

Helper method to convert cardinality constraint to string

Definition at line 42 of file relationship.cpp.

43{
44 return (
45 cc == Zero ? "zero" :
46 cc == One ? "one" :
47 "many"
48 );
49}

◆ get_class_type()

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

Get relationship type (pointer on OKS class).

Definition at line 190 of file relationship.hpp.

190{return p_class_type;}

◆ get_description()

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

Return description of relationship

Definition at line 215 of file relationship.hpp.

215{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 263 of file relationship.hpp.

263{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 283 of file relationship.hpp.

283{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 334 of file relationship.hpp.

334{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 315 of file relationship.hpp.

315{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 237 of file relationship.hpp.

237{return p_low_cc;}

◆ get_name()

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

Methods to access relationship properties.

Definition at line 172 of file relationship.hpp.

172{return p_name;}

◆ get_type()

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

Get relationship type (string).

Definition at line 195 of file relationship.hpp.

195{return p_rclass;}

◆ operator==()

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

Definition at line 85 of file relationship.cpp.

86{
87 return (
88 ( this == &r ) ||
89 (
90 ( p_name == r.p_name ) &&
91 ( p_rclass == r.p_rclass ) &&
92 ( p_low_cc == r.p_low_cc ) &&
93 ( p_high_cc == r.p_high_cc ) &&
94 ( p_composite == r.p_composite ) &&
95 ( p_exclusive == r.p_exclusive ) &&
96 ( p_dependent == r.p_dependent ) &&
97 ( p_description == r.p_description ) &&
98 ( p_ordered == r.p_ordered )
99 )
100 );
101}

◆ save()

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

private constructor from XML stream

Definition at line 121 of file relationship.cpp.

122{
123 s.put(" ");
124
125 s.put_start_tag(relationship_xml_tag, sizeof(relationship_xml_tag) - 1);
126
127 s.put_attribute(name_xml_attr, sizeof(name_xml_attr) - 1, p_name.c_str());
128
129 if (!p_description.empty())
130 s.put_attribute(description_xml_attr, sizeof(description_xml_attr) - 1, p_description.c_str());
131
132 s.put_attribute(class_type_xml_attr, sizeof(class_type_xml_attr) - 1, p_rclass.c_str());
133 s.put_attribute(low_cc_xml_attr, sizeof(low_cc_xml_attr) - 1, card2str(p_low_cc));
134 s.put_attribute(high_cc_xml_attr, sizeof(high_cc_xml_attr) - 1, card2str(p_high_cc));
138
139 if (p_ordered)
140 s.put_attribute(ordered_xml_attr, sizeof(ordered_xml_attr) - 1, oks::xml::bool2str(p_ordered));
141
142 s.put_end_tag();
143}
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:28

◆ 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 284 of file relationship.cpp.

285{
286 if(p_description != desc) {
287 if(p_class) p_class->lock_file("OksRelationship::set_description");
288
289 p_description = desc;
290
291 if(p_class) p_class->registrate_class_change(OksClass::ChangeRelationshipDescription, (const void *)this);
292 }
293}

◆ 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 314 of file relationship.cpp.

315{
316 if(p_high_cc != h_cc) {
317 if(p_class) p_class->lock_file("OksRelationship::set_high_cardinality_constraint");
318
320
321 p_high_cc = h_cc;
322
323 if(p_class) {
324 p_class->registrate_class_change(OksClass::ChangeRelationshipHighCC, (const void *)this);
325
326 if(p_high_cc == Many || old_cc == Many) p_class->registrate_relationship_change(this);
327 }
328 }
329}

◆ 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 332 of file relationship.cpp.

333{
334 if(p_composite != cm) {
335 if(p_class) p_class->lock_file("OksRelationship::set_is_composite");
336
337 p_composite = cm;
338
339 if(p_class) p_class->registrate_class_change(OksClass::ChangeRelationshipComposite, (const void *)this);
340 }
341}

◆ 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 356 of file relationship.cpp.

357{
358 if(p_dependent != dp) {
359 if(p_class) p_class->lock_file("OksRelationship::set_is_dependent");
360
361 p_dependent = dp;
362
363 if(p_class) p_class->registrate_class_change(OksClass::ChangeRelationshipDependent, (const void *)this);
364 }
365}

◆ 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 344 of file relationship.cpp.

345{
346 if(p_exclusive != ex) {
347 if(p_class) p_class->lock_file("OksRelationship::set_is_exclusive");
348
349 p_exclusive = ex;
350
351 if(p_class) p_class->registrate_class_change(OksClass::ChangeRelationshipExclusive, (const void *)this);
352 }
353}

◆ 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 296 of file relationship.cpp.

297{
298 if(p_low_cc != l_cc) {
299 if(p_class) p_class->lock_file("OksRelationship::set_low_cardinality_constraint");
300
302
303 p_low_cc = l_cc;
304
305 if(p_class) {
306 p_class->registrate_class_change(OksClass::ChangeRelationshipLowCC, (const void *)this);
307
308 if(p_low_cc == Many || old_cc == Many) p_class->registrate_relationship_change(this);
309 }
310 }
311}

◆ 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 206 of file relationship.cpp.

207{
208 // ignore when name is the same
209
210 if(p_name == new_name) return;
211
212
213 // additional checks are required,
214 // if the relationship already belongs to some class
215
216 if(p_class) {
217
218 // check maximum allowed length for relationship name
219
220 try {
221 oks::validate_not_empty(new_name, "name");
222 }
223 catch(std::exception& ex) {
224 throw oks::SetOperationFailed("OksRelationship::set_name", ex.what());
225 }
226
227
228 // having a direct relationship with the same name is an error
229
230 if(p_class->find_direct_relationship(new_name) != 0) {
231 std::ostringstream text;
232 text << "Class \"" << p_class->get_name() << "\" already has direct relationship \"" << new_name << '\"';
233 throw oks::SetOperationFailed("OksRelationship::set_name", text.str());
234 }
235
236
237 // check possibility to lock the file
238
239 p_class->lock_file("OksRelationship::set_name");
240
241
242 // probably a non-direct relationship already exists
243
244 OksRelationship * r = p_class->find_relationship(new_name);
245
246
247 // change the name
248
249 p_name = new_name;
250
251
252 // registrate the change
253
254 p_class->registrate_class_change(OksClass::ChangeRelationshipsList, (const void *)r);
255 }
256 else {
257 p_name = new_name;
258 }
259}

◆ 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 262 of file relationship.cpp.

263{
264 if(p_rclass == cn) return;
265
266 if(!p_class || !p_class->p_kernel || (p_class_type = p_class->p_kernel->find_class(cn)) != 0) {
267 if(p_class) p_class->lock_file("OksRelationship::set_type");
268
269 p_rclass = cn;
270
271 if(p_class) {
272 p_class->registrate_class_change(OksClass::ChangeRelationshipClassType, (const void *)this);
273 p_class->registrate_relationship_change(this);
274 }
275 }
276 else {
277 std::ostringstream text;
278 text << "cannot find class \"" << cn << '\"';
279 throw oks::SetOperationFailed("OksRelationship::set_type", text.str());
280 }
281}

◆ str2card()

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

Helper method to convert valid string to cardinality constraint

Definition at line 32 of file relationship.cpp.

33{
34 return (
35 oks::cmp_str3(s, "one") ? One :
36 oks::cmp_str4(s, "zero") ? Zero :
37 Many
38 );
39}
bool cmp_str3(const char *s1, const char s2[4])
Definition cstring.hpp:26

◆ OksClass

friend class OksClass
friend

Definition at line 101 of file relationship.hpp.

◆ OksData

friend struct OksData
friend

Definition at line 102 of file relationship.hpp.

◆ OksKernel

friend class OksKernel
friend

Definition at line 100 of file relationship.hpp.

◆ OksObject

friend class OksObject
friend

Definition at line 103 of file relationship.hpp.

◆ operator<<

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

Definition at line 103 of file relationship.cpp.

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

Member Data Documentation

◆ class_type_xml_attr

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

Definition at line 393 of file relationship.hpp.

◆ description_xml_attr

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

Definition at line 392 of file relationship.hpp.

◆ high_cc_xml_attr

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

Definition at line 395 of file relationship.hpp.

◆ is_composite_xml_attr

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

Definition at line 396 of file relationship.hpp.

◆ is_dependent_xml_attr

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

Definition at line 398 of file relationship.hpp.

◆ is_exclusive_xml_attr

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

Definition at line 397 of file relationship.hpp.

◆ low_cc_xml_attr

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

Definition at line 394 of file relationship.hpp.

◆ mv_implement_xml_attr

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

Definition at line 399 of file relationship.hpp.

◆ name_xml_attr

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

Definition at line 391 of file relationship.hpp.

◆ ordered_xml_attr

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

Definition at line 400 of file relationship.hpp.

◆ p_class

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

Definition at line 372 of file relationship.hpp.

◆ p_class_type

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

Definition at line 373 of file relationship.hpp.

◆ p_composite

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

Definition at line 368 of file relationship.hpp.

◆ p_dependent

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

Definition at line 370 of file relationship.hpp.

◆ p_description

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

Definition at line 371 of file relationship.hpp.

◆ p_exclusive

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

Definition at line 369 of file relationship.hpp.

◆ p_high_cc

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

Definition at line 367 of file relationship.hpp.

◆ p_low_cc

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

Definition at line 366 of file relationship.hpp.

◆ p_name

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

Definition at line 364 of file relationship.hpp.

◆ p_ordered

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

Definition at line 374 of file relationship.hpp.

◆ p_rclass

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

Definition at line 365 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 390 of file relationship.hpp.


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