DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
object.hpp
Go to the documentation of this file.
1
10#ifndef OKS_OBJECT_H
11#define OKS_OBJECT_H
12
13#include "oks/defs.hpp"
14#include "oks/file.hpp"
15#include "oks/exceptions.hpp"
16
17#include <stdint.h>
18
19#include <string>
20#include <list>
21#include <set>
22#include <map>
23#include <functional>
24
25#include <boost/date_time/gregorian/greg_date.hpp>
26#include <boost/date_time/posix_time/ptime.hpp>
27#include <boost/pool/pool_alloc.hpp>
28
29#include <unordered_map>
30#include <unordered_set>
31
32
33namespace dunedaq {
34namespace oks {
35
36
38
39class OksKernel;
40class OksFile;
41struct OksData;
42class OksClass;
43class OksObject;
44class OksAttribute;
45class OksRelationship;
46class OksMethod;
47class OksQueryExpression;
48struct OksAliasTable;
49class OksXmlOutputStream;
50class OksXmlInputStream;
51struct OksXmlToken;
52struct OksXmlValue;
53struct OksXmlRelValue;
54
56
57 class QueryPathExpression;
58 class QueryPath;
59
60
64
65 public:
66
68 FailedCreateObject(const OksObject * o, const exception& reason) noexcept : exception (fill(o, reason.what()), reason.level() + 1) { }
69
71 FailedCreateObject(const OksObject * o, const std::string& reason) noexcept : exception (fill(o, reason), 0) { }
72
73 virtual ~FailedCreateObject() noexcept { }
74
75
76 private:
77
78 static std::string fill(const OksObject * o, const std::string& reason);
79 };
80
81
84 class FailedReadObject : public exception {
85
86 public:
87
89 FailedReadObject(const OksObject * o, const std::string& what, const exception& reason) noexcept : exception (fill(o, what, reason.what()), reason.level() + 1) { }
90
92 FailedReadObject(const OksObject * o, const std::string& what, const std::string& reason) noexcept : exception (fill(o, what, reason), 0) { }
93
94 virtual ~FailedReadObject() noexcept { }
95
96
97 private:
98
99 static std::string fill(const OksObject * o, const std::string& what, const std::string& reason);
100 };
101
102
106
107 public:
108
110 FailedSaveObject(const OksObject * o, const exception& reason) noexcept : exception (fill(o, reason.what()), reason.level() + 1) { }
111
113 FailedSaveObject(const OksObject * o, const std::string& reason) noexcept : exception (fill(o, reason), 0) { }
114
115 virtual ~FailedSaveObject() noexcept { }
116
117
118 private:
119
120 static std::string fill(const OksObject * o, const std::string& reason);
121
122 };
123
124
128
129 public:
130
132 FailedRenameObject(const OksObject * o, const exception& reason) noexcept : exception (fill(o, reason.what()), reason.level() + 1) { }
133
135 FailedRenameObject(const OksObject * o, const std::string& reason) noexcept : exception (fill(o, reason), 0) { }
136
137 virtual ~FailedRenameObject() noexcept { }
138
139
140 private:
141
142 static std::string fill(const OksObject * o, const std::string& reason);
143
144 };
145
146
150
151 public:
152
154 FailedDestoyObject(const OksObject * o, const exception& reason) noexcept : exception (fill(o, reason.what()), reason.level() + 1) { }
155
157 FailedDestoyObject(const OksObject * o, const std::string& reason) noexcept : exception (fill(o, reason), 0) { }
158
159 virtual ~FailedDestoyObject() noexcept { }
160
161
162 private:
163
164 static std::string fill(const OksObject * o, const std::string& reason);
165
166 };
167
168
172
173 public:
174
176 AttributeRangeError(const OksData * d, const std::string& range) noexcept : exception (fill(d, range), 0) { }
177
178 virtual ~AttributeRangeError() noexcept { }
179
180
181 private:
182
183 static std::string fill(const OksData * d, const std::string& range);
184
185 };
186
187
191
192 public:
193
195 AttributeReadError(const char * value, const char * type, const exception& reason) noexcept : exception (fill(value, type, reason.what()), reason.level() + 1) { }
196
198 AttributeReadError(const char * value, const char * type, const std::string& reason) noexcept : exception (fill(value, type, reason), 0) { }
199
201 AttributeReadError(const char * type, const exception& reason) noexcept : exception (fill(type, reason.what()), reason.level() + 1) { }
202
204 AttributeReadError(const char * type, const std::string& reason) noexcept : exception (fill(type, reason), 0) { }
205
206 virtual ~AttributeReadError() noexcept { }
207
208
209 private:
210
211 static std::string fill(const char * value, const char * type, const std::string& reason);
212 static std::string fill(const char * type, const std::string& reason);
213
214 };
215
216
219 class ObjectSetError : public exception {
220
221 public:
222
224 ObjectSetError(const OksObject * obj, bool is_rel, const std::string& name, const exception& reason) noexcept : exception (fill(obj, is_rel, name, reason.what()), reason.level() + 1) { }
225
227 ObjectSetError(const OksObject * obj, bool is_rel, const std::string& name, const std::string& reason) noexcept : exception (fill(obj, is_rel, name, reason), 0) { }
228
229 virtual ~ObjectSetError() noexcept { }
230
231
232 private:
233
234 static std::string fill(const OksObject * obj, bool is_rel, const std::string& name, const std::string& reason);
235
236 };
237
238
241 class ObjectGetError : public exception {
242
243 public:
244
246 ObjectGetError(const OksObject * obj, bool is_rel, const std::string& name, const exception& reason) noexcept : exception (fill(obj, is_rel, name, reason.what()), reason.level() + 1) { }
247
249 ObjectGetError(const OksObject * obj, bool is_rel, const std::string& name, const std::string& reason) noexcept : exception (fill(obj, is_rel, name, reason), 0) { }
250
251 virtual ~ObjectGetError() noexcept { }
252
253
254 private:
255
256 static std::string fill(const OksObject * obj, bool is_rel, const std::string& name, const std::string& reason);
257
258 };
259
260
263 class ObjectInitError : public exception {
264
265 public:
266
268 ObjectInitError(const OksObject * obj, const std::string& why, const exception& reason) noexcept : exception (fill(obj, why, reason.what()), reason.level() + 1) { }
269
271 ObjectInitError(const OksObject * obj, const std::string& why, const std::string& reason) noexcept : exception (fill(obj, why, reason), 0) { }
272
273 virtual ~ObjectInitError() noexcept { }
274
275
276 private:
277
278 static std::string fill(const OksObject * obj, const std::string& why, const std::string& reason);
279
280 };
281
282
283
286 class ObjectBindError : public exception {
287
288 public:
289
291 ObjectBindError(const OksObject * obj, const OksData * data, const OksRelationship * rel, bool is_error, const std::string& why, const exception& reason) noexcept :
292 exception (fill(obj, rel, why, reason.what()), reason.level() + 1),
293 p_data(data), p_is_error(is_error) { }
294
296 ObjectBindError(const OksObject * obj, const OksData * data, const OksRelationship * rel, bool is_error, const std::string& why, const std::string& reason) noexcept :
297 exception (fill(obj, rel, why, reason), 0),
298 p_data(data), p_is_error(is_error) { }
299
300 virtual ~ObjectBindError() noexcept { }
301
305
306 private:
307
308 std::string fill(const OksObject * obj, const OksRelationship * rel, const std::string& why, const std::string& reason);
309
310 };
311
312
313
316 class AddRcrError : public exception {
317
318 public:
319
321 AddRcrError(const OksObject * obj, const std::string& name, const OksObject * p1, const OksObject * p2) noexcept : exception (fill(obj, name, p1, p2), 0) { }
322
323 virtual ~AddRcrError() noexcept { }
324
325
326 private:
327
328 static std::string fill(const OksObject * obj, const std::string& name, const OksObject * p1, const OksObject * p2);
329
330 };
331
332
333
335
343
345
346 typedef std::map<std::string, OksDataInfo *> Map;
347
348
350
351 OksDataInfo(size_t o, const OksAttribute * a) : offset (o), attribute (a), relationship(nullptr) { ; }
352 OksDataInfo(size_t o, const OksRelationship * r) : offset (o), attribute (nullptr), relationship(r) { ; }
353
354 size_t offset; // offset of OKS data in the object
357};
358
359
361
369class OksString : public std::string {
370 friend class OksKernel;
371
372 public:
373
375 OksString (const std::string& s) : std::string(s) {;}
376 OksString (const char * s) : std::string(s) {;}
377 OksString (const char * s, size_t n) : std::string(s,n) {;}
378 OksString (const std::string&s, std::string::size_type n) : std::string(s,0,n) {;}
379
380 void * operator new(size_t) {return boost::fast_pool_allocator<OksString>::allocate();}
381 void operator delete(void *ptr) {boost::fast_pool_allocator<OksString>::deallocate(reinterpret_cast<OksString*>(ptr));}
382};
383
384
386
387inline bool
388operator==(const OksString& s1, const OksString& s2)
389{
390 return ( *(static_cast<const std::string *>(&s1)) == *(static_cast<const std::string *>(&s2)) );
391}
392
393
395
396inline bool
397operator==(const OksString& s1, const std::string& s2)
398{
399 return ( *(static_cast<const std::string *>(&s1)) == s2 );
400}
401
402
404
405inline bool
406operator==(const OksString& s1, const char *s2)
407{
408 return (*(static_cast<const std::string *>(&s1)) == s2);
409}
410
411
413
414inline bool
415operator<(const OksString& s1, const OksString& s2)
416{
417 return ( *(static_cast<const std::string *>(&s1)) < *(static_cast<const std::string *>(&s2)) );
418}
419
420
422
423inline std::ostream&
424operator<<(std::ostream& s, const OksString& str)
425{
426 s << *(static_cast<const std::string *>(&str));
427
428 return s;
429}
430
431
432 // forward declaration for private OKS structures declared in non-installing src/oks_utils.hpp
433
434 struct ReloadObjects;
435 struct ReadFileParams;
436
437
439
449struct OksData {
450 friend class OksObject;
451 friend class OksKernel;
452
453 public:
454
455 typedef std::list<OksData *, boost::fast_pool_allocator<OksData *> > List;
456
480
481 union Data {
482 int8_t S8_INT;
483 uint8_t U8_INT;
484 int16_t S16_INT;
485 uint16_t U16_INT;
486 int32_t S32_INT;
487 uint32_t U32_INT;
488 int64_t S64_INT;
489 uint64_t U64_INT;
490 float FLOAT;
491 double DOUBLE;
492 bool BOOL;
495 uint32_t DATE; // boost::gregorian::date => ugly, but member with constructor not allowed in union
496 uint64_t TIME; // boost::posix_time::ptime => ......................................................
499 struct {
503 struct {
507 const std::string * ENUMERATION;
509
511 OksData(int8_t c) {Clear2(); Set(c);}
512 OksData(uint8_t c) {Clear2(); Set(c);}
513 OksData(int16_t i) {Clear2(); Set(i);}
514 OksData(uint16_t i) {Clear2(); Set(i);}
515 OksData(int32_t i) {Clear2(); Set(i);}
516 OksData(uint32_t i) {Clear2(); Set(i);}
517 OksData(int64_t i) {Clear2(); Set(i);}
518 OksData(uint64_t i) {Clear2(); Set(i);}
519 OksData(const float& f) {Clear2(); Set(f);}
520 OksData(const double& d) {Clear2(); Set(d);}
521 OksData(bool b) {Clear2(); Set(b);}
522 OksData(boost::gregorian::date d) {Clear2(); Set(d);}
523 OksData(boost::posix_time::ptime t) {Clear2(); Set(t);}
525 OksData(const char *s) {Clear2(); Set(s);}
526 OksData(const std::string &s) {Clear2(); Set(s);}
527 OksData(const OksString &s) {Clear2(); Set(s);}
528 OksData(const char *s, size_t len, const OksAttribute *a) {Clear2(); SetE(s,len,a);}
529 OksData(const std::string &s, const OksAttribute *a){Clear2(); SetE(s,a);}
530 OksData(const OksString &s, const OksAttribute *a) {Clear2(); SetE(s,a);}
531 OksData(const OksClass * c) {Clear2(); Set(c);}
532 OksData(List *l) {Clear2(); Set(l);}
534 OksData(const OksClass *c, const char * o) {Clear(); Set(c, o);}
535 OksData(const OksClass *c, const OksString& o) {Clear(); Set(c, o);}
536 OksData(const std::string &c, const std::string &o) {Clear2(); Set(c, o);}
537
539
540 void Clear();
541 void Clear2() {type = unknown_type;}
542
543 void Set(int8_t c) {Clear(); type = s8_int_type; data.S8_INT = c;}
544 void Set(uint8_t c) {Clear(); type = u8_int_type; data.U8_INT = c;}
545 void Set(int16_t i) {Clear(); type = s16_int_type; data.S16_INT = i;}
546 void Set(uint16_t i) {Clear(); type = u16_int_type; data.U16_INT = i;}
547 void Set(int32_t i) {Clear(); type = s32_int_type; data.S32_INT = i;}
548 void Set(uint32_t i) {Clear(); type = u32_int_type; data.U32_INT = i;}
549 void Set(int64_t i) {Clear(); type = s64_int_type; data.S64_INT = i;}
550 void Set(uint64_t i) {Clear(); type = u64_int_type; data.U64_INT = i;}
551 void Set(const float& f) {Clear(); type = float_type; data.FLOAT = f;}
552 void Set(const double& d) {Clear(); type = double_type; data.DOUBLE = d;}
553 void Set(bool b) {Clear(); type = bool_type; data.BOOL = b;}
554 void SetFast(boost::gregorian::date d);
555 void SetFast(boost::posix_time::ptime t);
556 void Set(boost::gregorian::date d) {Clear(); type = date_type; SetFast(d);}
557 void Set(boost::posix_time::ptime t) {Clear(); type = time_type; SetFast(t);}
558 void Set(OksString *s) {Clear(); type = string_type; data.STRING = s;}
559 void Set(const char *s) {Clear(); type = string_type; data.STRING = new OksString(s);}
560 void Set(const std::string &s) {Clear(); type = string_type; data.STRING = new OksString(s);}
561 void Set(const OksString &s) {Clear(); type = string_type; data.STRING = new OksString(s);}
562 void Set(const OksClass * c) {Clear(); type = class_type; data.CLASS = c;}
563 inline void SetE(OksString *s, const OksAttribute *a);
564 inline void SetE(const char *s, size_t len, const OksAttribute *a);
565 inline void SetE(const std::string &s, const OksAttribute *a);
566 inline void SetE(const OksAttribute *a);
567 inline void SetE(const OksString &s, const OksAttribute *a);
568 void Set(List * l) {Clear(); type = list_type; data.LIST = l;}
569 void Set(OksObject *o) {Clear(); type = object_type; data.OBJECT = o;}
570 void Set(const OksClass *c, const OksString& s) {Clear(); type = uid_type; data.UID.class_id = c; data.UID.object_id = new OksString(s);}
571 void Set(const OksClass *c, OksString* s) {Clear(); type = uid_type; data.UID.class_id = c; data.UID.object_id = s;}
572 void Set(const OksString &c, const OksString &s) {Clear(); type = uid2_type; data.UID2.class_id = new OksString(c); data.UID2.object_id = new OksString(s);}
573 void Set(OksString *c, OksString *s) {Clear(); type = uid2_type; data.UID2.class_id = c; data.UID2.object_id = s;}
574
579 inline void ReadFrom(const char *, Type, const OksAttribute *);
580
585 inline void ReadFrom(const std::string&, const OksAttribute *);
586
591 void SetNullValue(const OksAttribute * a);
592
597 void SetValue(const char * s, const OksAttribute * a);
598
603 void SetValues(const char *, const OksAttribute * a);
604
608 void ReadFrom(const OksRelationship *) noexcept;
609
610 void WriteTo(OksXmlOutputStream&, bool) const;
611
613
614 void ConvertTo(OksData *, const OksRelationship *) const;
615
616 boost::gregorian::date date() const noexcept;
617 boost::posix_time::ptime time() const noexcept;
618
619
635 void cvt(OksData * to, const OksAttribute * attr) const;
636
637 std::string str(int base = 0) const;
638 std::string str(const OksKernel *) const;
639
640
653 void check_range(const OksAttribute * a) const;
654
655
670 void set_init_value(const OksAttribute * attr, bool skip_init);
671
672 OksData& operator=(const OksData& d)
673 {
674 if(&d != this) {
675 Clear();
676 copy(d);
677 }
678
679 return *this;
680 }
681
682 OksData(const OksData& d)
683 {
684 if(&d != this) {
685 copy(d);
686 }
687 }
688
689 bool operator==(const OksData &) const;
690 bool operator!=(const OksData &) const;
691 bool operator<=(const OksData &) const; //report incompatible data types
692 bool operator>=(const OksData &) const; //report incompatible data types
693 bool operator<(const OksData &) const; //report incompatible data types
694 bool operator>(const OksData &) const; //report incompatible data types
695 friend std::ostream& operator<<(std::ostream&, const OksData&);
696 void* operator new(size_t) {return boost::fast_pool_allocator<OksData>::allocate();}
697 void operator delete(void *ptr) {boost::fast_pool_allocator<OksData>::deallocate(reinterpret_cast<OksData*>(ptr));}
698
699 void sort(bool ascending = true);
700
701 static bool is_object(Type t)
702 {
703 return (t == object_type || t == uid_type || t == uid2_type);
704 }
705
706 private:
707
708 void copy(const OksData &);
709
710 bool is_le(const OksData &) const noexcept; // fast version of operator<=(const OksData &)
711 bool is_ge(const OksData &) const noexcept; // fast version of operator>=(const OksData &)
712 bool is_l(const OksData &) const noexcept; // fast version of operator<(const OksData &)
713 bool is_g(const OksData &) const noexcept; // fast version of operator>(const OksData &)
714
716
717 void read(const oks::ReadFileParams&, const OksAttribute *, int32_t); // read mv attribute
718 void read(const oks::ReadFileParams&, const OksAttribute *); // read sv attribute
719 void read(const OksAttribute *, const OksXmlValue&); // read sv attribute for "data" format
720 void read(const OksAttribute *, const oks::ReadFileParams&); // read mv attribute for "data" format
721
722 void read(const oks::ReadFileParams&, const OksRelationship*, int32_t); // read mv relationship
723 void read(const oks::ReadFileParams&, const OksRelationship*); // read sv relationship
724 void read(const OksRelationship *, const OksXmlRelValue&); // read sv relationship for "data" format
725 void read(const OksRelationship *, const oks::ReadFileParams&); // read mv relationship for "data" format
726
727 OksData(const oks::ReadFileParams& params, const OksAttribute * a, int32_t n) {Clear2(); read(params, a, n);}
728 OksData(const oks::ReadFileParams& params, const OksAttribute * a) {Clear2(); read(params, a);}
729 OksData(const OksAttribute * a, const OksXmlValue& value) {Clear2(); read(a, value);}
730 OksData(const OksAttribute * a, const oks::ReadFileParams& params) {Clear2(); read(a, params);}
731
732 OksData(const oks::ReadFileParams& params, const OksRelationship *r, int32_t n) {Clear2(); read(params, r, n);}
733 OksData(const oks::ReadFileParams& params, const OksRelationship *r) {Clear2(); read(params, r);}
734 OksData(const OksRelationship * r, const OksXmlRelValue& value) {Clear2(); read(r, value);}
735 OksData(const OksRelationship * r, const oks::ReadFileParams& params) {Clear2(); read(r, params);}
736
737 void WriteTo(OksXmlOutputStream&, OksKernel *, OksAliasTable *, bool, bool) const;
738
739 bool IsConsistent(const OksRelationship *r, const OksObject *o, const char *msg);
740
741 const std::string& __oid() const;
742 const std::string& __cn() const;
743};
744
745
746inline void
747OksData::ReadFrom(const char * s, Type t, const OksAttribute * a)
748{
749 Clear();
750 type = t;
751 SetValue(s, a);
752}
753
754
762struct OksRCR {
763 friend class OksKernel;
764
765 public:
766
768 obj (o), relationship (r) {;}
769
770 void * operator new(size_t) {return boost::fast_pool_allocator<OksRCR>::allocate();}
771 void operator delete(void *ptr) {boost::fast_pool_allocator<OksRCR>::deallocate(reinterpret_cast<OksRCR*>(ptr));}
772
775
776};
777
778 struct hash_str
779 {
780 inline size_t operator() ( const std::string * x ) const {
781 return std::hash<std::string>()(*x);
782 }
783 };
784
786 {
787 inline bool operator()(const std::string * __x, const std::string * __y) const {
788 return ((__x == __y) || (*__x == *__y));
789 }
790 };
791
793 {
794 inline size_t operator() ( const OksObject * x ) const {
795 return reinterpret_cast<size_t>(x);
796 }
797 };
798
800 {
801 inline bool operator()(const OksObject * __x, const OksObject * __y) const {
802 return (__x == __y);
803 }
804 };
805
807 {
808 inline size_t operator() ( const OksClass * x ) const {
809 return reinterpret_cast<size_t>(x);
810 }
811 };
812
814 {
815 inline bool operator()(const OksClass * __x, const OksClass * __y) const {
816 return (__x == __y);
817 }
818 };
819
820 typedef std::unordered_set<const OksClass *, oks::hash_class_ptr, oks::equal_class_ptr> ClassSet;
821
822
836{
837 friend class OksClass;
838 friend struct OksData;
839 friend class OksKernel;
840 friend class OksIndex;
841 friend class OksObjectSortBy;
842 friend struct OksLoadObjectsJob;
843 friend struct oks::ReadFileParams;
844 friend struct oks::ReloadObjects;
845
846 public:
847
848 typedef void (*notify_obj)(OksObject *, void *);
849
852 struct SortById {
853 bool operator() (const std::string * s1, const std::string * s2) const {
854 return *s1 < *s2;
855 }
856 };
857
860 typedef std::map<const std::string *, OksObject *, SortById> SMap;
861
862
865 typedef std::unordered_map<const std::string *, OksObject *, oks::hash_str, oks::equal_str> Map;
866 typedef std::unordered_set<OksObject *, oks::hash_obj_ptr, oks::equal_obj_ptr> FSet;
867
868
871 typedef std::set<OksObject *, std::less<OksObject *> > Set;
872
875 typedef std::list<OksObject *> List;
876
877 typedef std::list<OksObject *, boost::fast_pool_allocator<OksObject *> > FList;
878
879
895 OksObject (const OksClass * oks_class, const char * object_id = 0, bool skip_init = false);
896
897
912 OksObject (const OksObject & parent_object, const char * object_id = 0);
913
914
929 static void destroy(OksObject * obj, bool fast = false);
930
931
940 bool operator==(const OksObject&) const;
941
942
952 static bool
953 are_equal_fast(const OksObject * o1, const OksObject * o2);
954
955 bool operator!=(const OksObject&) const = delete;
956
957
960 void * operator new(size_t) {return boost::fast_pool_allocator<OksObject>::allocate();}
961
962
965 void operator delete(void *ptr) {boost::fast_pool_allocator<OksObject>::deallocate(reinterpret_cast<OksObject*>(ptr));}
966
967
976 friend std::ostream& operator<<(std::ostream& out, const OksObject & obj);
977
978
985 friend std::ostream& operator<<(std::ostream&, const OksObject *);
986
987
990 const OksClass * GetClass() const {return uid.class_id;}
991
992
995 const std::string& GetId() const {return uid.object_id;}
996
997
1008 void set_id(const std::string & id);
1009
1010
1013 OksFile * get_file() const {return file;}
1014
1015
1029 void set_file(OksFile * file, bool update_owner = true);
1030
1031
1047 OksData * GetAttributeValue(const std::string& name) const;
1048
1049
1062 OksData * GetAttributeValue(const OksDataInfo *i) const noexcept { return &(data[i->offset]); }
1063
1064
1080 OksData * GetRelationshipValue(const std::string&) const;
1081
1082
1095 OksData * GetRelationshipValue(const OksDataInfo *i) const noexcept { return &(data[i->offset]); }
1096
1097
1113 void SetAttributeValue(const std::string& name, OksData * data);
1114
1115
1131 void SetAttributeValue(const OksDataInfo * data_info, OksData * data);
1132
1133
1147 void SetRelationshipValue(const std::string& name, OksData * data, bool skip_non_null_check = false);
1148
1149
1163 void SetRelationshipValue(const OksDataInfo * data_info, OksData * data, bool skip_non_null_check = false);
1164
1165
1178 void SetRelationshipValue(const std::string& name, OksObject * object);
1179
1180
1193 void SetRelationshipValue(const OksDataInfo * data_info, OksObject * object);
1194
1195
1209 void AddRelationshipValue(const std::string& name, OksObject * object);
1210
1211
1224 void AddRelationshipValue(const OksDataInfo * data_info, OksObject * object);
1225
1226
1239 void RemoveRelationshipValue(const std::string& name, OksObject * object);
1240
1241
1254 void RemoveRelationshipValue(const OksDataInfo * data_info, OksObject * object);
1255
1256
1270 void SetRelationshipValue(const std::string& rel_name, const std::string& class_name, const std::string& object_id);
1271
1272
1286 void AddRelationshipValue(const std::string& rel_name, const std::string& class_name, const std::string& object_i);
1287
1288
1302 void RemoveRelationshipValue(const std::string& rel_name, const std::string& class_name, const std::string& object_i);
1303
1304
1310 const std::list<OksRCR *> * reverse_composite_rels() const {return p_rcr;}
1311
1312
1327 FList * get_all_rels(const std::string& name = "*") const;
1328
1329
1335 void SetTransientData(void *d) const {p_user_data = d;}
1336
1337
1343 void * GetTransientData() const {return p_user_data;}
1344
1345
1351 void set_int32_id(int32_t object_id) {p_int32_id = object_id;}
1352
1358 int32_t get_int32_id() const {return p_int32_id;}
1359
1360
1361
1374 bool SatisfiesQueryExpression(OksQueryExpression * query_exp) const;
1375
1376 bool satisfies(const OksObject * goal, const oks::QueryPathExpression& expresssion, OksObject::List& path) const;
1377 OksObject::List * find_path(const oks::QueryPath& query) const;
1378
1380 bool is_consistent(const std::set<OksFile *>&, const char * msg) const;
1381
1382
1384 std::string report_dangling_references() const;
1385
1387 void references(OksObject::FSet& refs, unsigned long recursion_depth, bool add_self = false, oks::ClassSet * classes = 0) const;
1388
1389
1390 bool is_duplicated() const { return (p_duplicated_object_id_idx != -1); }
1391
1392
1393 private:
1394
1395 // the struct OksUid is used to describe object unique identity
1396 // in form 'class_name@object_identity'
1397
1398 struct OksUid {
1400 std::string object_id;
1401
1402 OksUid() : class_id(0) {;}
1404
1406 std::list<OksRCR *> * p_rcr;
1407 mutable void * p_user_data;
1408 int32_t p_int32_id;
1411
1412
1413 // to be used by OksKernel only
1414
1415 ~OksObject();
1416
1417
1425 static OksObject * read(const oks::ReadFileParams&);
1426 void __report_type_cvt_warning(const oks::ReadFileParams&, const OksAttribute&, const OksData&, const OksData::Type, int32_t) const;
1428 int32_t __get_num(const oks::ReadFileParams& params);
1429
1430
1431
1432 // these two are used by read() method
1433
1434 void read_body(const oks::ReadFileParams&, bool);
1435
1440 OksObject (const oks::ReadFileParams&, OksClass *, const std::string&);
1441
1442
1443
1444 // to be used by OksIndex only
1445
1446 OksObject (size_t, const OksData *);
1447
1448 // to be used by OksKernel only
1449
1450 OksObject (OksClass * c, const std::string& id, void * user_data, int32_t object_id, int32_t duplicated_object_id_idx, OksFile * f);
1451
1452 // is not implemented and must not be used
1453
1455
1456
1457 // these 3 methods are used by constructors
1458
1459 void init1(const OksFile * = 0);
1460 void init2(bool skip_init = false);
1461 void init3();
1462 void init3(OksClass *c);
1463
1464 void check_ids();
1465
1466
1467 public:
1468
1469 void add_RCR(OksObject *, const OksRelationship *);
1470 void remove_RCR(OksObject *, const OksRelationship *) noexcept;
1471
1472
1473 private:
1474
1475 inline void notify() {
1476 file->set_updated();
1477 change_notify();
1478 }
1479
1480 void check_class_type(const OksRelationship *, const OksClass *);
1481 void check_class_type(const OksRelationship *r, const OksObject *o) { if(o) { check_class_type(r, o->GetClass()); }}
1482 void check_non_null(const OksRelationship *, const OksObject *);
1483 void check_file_lock(const OksAttribute *, const OksRelationship *);
1484
1485
1486 void set_unique_id();
1487 void put(OksXmlOutputStream&, bool force_defaults) const;
1488 static void put_object_attributes(OksXmlOutputStream&, const OksData&);
1489
1490 // bind data and methods
1491
1497
1500 void bind_objects();
1501 static void bind(OksData *, const BindInfo&);
1502
1503 void unbind_file(const OksFile *);
1504
1505
1506 // check and report to standard out missing file inclusion paths
1507
1508 bool check_links_and_report(const OksObject *, const std::set<OksFile *>&, const std::string&, const char *) const;
1509
1510
1511 // valid names of xml tags and attributes
1512
1513 static const char obj_xml_tag[];
1514 static const char obj2_xml_tag[];
1515 static const char attribute_xml_tag[];
1516 static const char relationship_xml_tag[];
1517 static const char class_xml_attribute[];
1518 static const char class2_xml_attribute[];
1519 static const char id_xml_attribute[];
1520 static const char id2_xml_attribute[];
1521 static const char name_xml_attribute[];
1522 static const char type_xml_attribute[];
1523 static const char num_xml_attribute[];
1524
1525 static const char value_xml_attribute[];
1526 static const char data_xml_tag[];
1527 static const char ref_xml_tag[];
1528
1530
1531 void create_notify();
1532 void change_notify();
1533 void delete_notify();
1534
1535};
1536
1537} // namespace oks
1538} // namespace dunedaq
1539
1540#endif
AddRcrError(const OksObject *obj, const std::string &name, const OksObject *p1, const OksObject *p2) noexcept
Definition object.hpp:321
static std::string fill(const OksObject *obj, const std::string &name, const OksObject *p1, const OksObject *p2)
Definition object.cpp:109
virtual ~AddRcrError() noexcept
Definition object.hpp:323
static std::string fill(const OksData *d, const std::string &range)
AttributeRangeError(const OksData *d, const std::string &range) noexcept
Definition object.hpp:176
virtual ~AttributeRangeError() noexcept
Definition object.hpp:178
AttributeReadError(const char *type, const std::string &reason) noexcept
Definition object.hpp:204
AttributeReadError(const char *value, const char *type, const std::string &reason) noexcept
Definition object.hpp:198
virtual ~AttributeReadError() noexcept
Definition object.hpp:206
static std::string fill(const char *type, const std::string &reason)
AttributeReadError(const char *type, const exception &reason) noexcept
Definition object.hpp:201
static std::string fill(const char *value, const char *type, const std::string &reason)
AttributeReadError(const char *value, const char *type, const exception &reason) noexcept
Definition object.hpp:195
FailedCreateObject(const OksObject *o, const exception &reason) noexcept
Definition object.hpp:68
virtual ~FailedCreateObject() noexcept
Definition object.hpp:73
FailedCreateObject(const OksObject *o, const std::string &reason) noexcept
Definition object.hpp:71
static std::string fill(const OksObject *o, const std::string &reason)
Definition object.cpp:61
virtual ~FailedDestoyObject() noexcept
Definition object.hpp:159
FailedDestoyObject(const OksObject *o, const std::string &reason) noexcept
Definition object.hpp:157
FailedDestoyObject(const OksObject *o, const exception &reason) noexcept
Definition object.hpp:154
static std::string fill(const OksObject *o, const std::string &reason)
Definition object.cpp:85
FailedReadObject(const OksObject *o, const std::string &what, const exception &reason) noexcept
Definition object.hpp:89
FailedReadObject(const OksObject *o, const std::string &what, const std::string &reason) noexcept
Definition object.hpp:92
virtual ~FailedReadObject() noexcept
Definition object.hpp:94
static std::string fill(const OksObject *o, const std::string &what, const std::string &reason)
Definition object.cpp:53
static std::string fill(const OksObject *o, const std::string &reason)
Definition object.cpp:77
FailedRenameObject(const OksObject *o, const std::string &reason) noexcept
Definition object.hpp:135
FailedRenameObject(const OksObject *o, const exception &reason) noexcept
Definition object.hpp:132
virtual ~FailedRenameObject() noexcept
Definition object.hpp:137
virtual ~FailedSaveObject() noexcept
Definition object.hpp:115
static std::string fill(const OksObject *o, const std::string &reason)
Definition object.cpp:69
FailedSaveObject(const OksObject *o, const exception &reason) noexcept
Definition object.hpp:110
FailedSaveObject(const OksObject *o, const std::string &reason) noexcept
Definition object.hpp:113
ObjectBindError(const OksObject *obj, const OksData *data, const OksRelationship *rel, bool is_error, const std::string &why, const exception &reason) noexcept
Definition object.hpp:291
virtual ~ObjectBindError() noexcept
Definition object.hpp:300
std::string fill(const OksObject *obj, const OksRelationship *rel, const std::string &why, const std::string &reason)
Definition object.cpp:125
const OksRelationship * p_rel
Definition object.hpp:303
ObjectBindError(const OksObject *obj, const OksData *data, const OksRelationship *rel, bool is_error, const std::string &why, const std::string &reason) noexcept
Definition object.hpp:296
virtual ~ObjectGetError() noexcept
Definition object.hpp:251
ObjectGetError(const OksObject *obj, bool is_rel, const std::string &name, const exception &reason) noexcept
Definition object.hpp:246
ObjectGetError(const OksObject *obj, bool is_rel, const std::string &name, const std::string &reason) noexcept
Definition object.hpp:249
static std::string fill(const OksObject *obj, bool is_rel, const std::string &name, const std::string &reason)
Definition object.cpp:101
virtual ~ObjectInitError() noexcept
Definition object.hpp:273
ObjectInitError(const OksObject *obj, const std::string &why, const std::string &reason) noexcept
Definition object.hpp:271
ObjectInitError(const OksObject *obj, const std::string &why, const exception &reason) noexcept
Definition object.hpp:268
static std::string fill(const OksObject *obj, const std::string &why, const std::string &reason)
Definition object.cpp:117
ObjectSetError(const OksObject *obj, bool is_rel, const std::string &name, const std::string &reason) noexcept
Definition object.hpp:227
virtual ~ObjectSetError() noexcept
Definition object.hpp:229
ObjectSetError(const OksObject *obj, bool is_rel, const std::string &name, const exception &reason) noexcept
Definition object.hpp:224
static std::string fill(const OksObject *obj, bool is_rel, const std::string &name, const std::string &reason)
Definition object.cpp:93
OKS attribute class.
The OKS class.
Definition class.hpp:200
Provides interface to the OKS XML schema and data files.
Definition file.hpp:340
Provides interface to the OKS kernel.
Definition kernel.hpp:577
OksObject describes instance of OksClass.
Definition object.hpp:836
struct dunedaq::oks::OksObject::OksUid uid
bool operator!=(const OksObject &) const =delete
static void destroy(OksObject *obj, bool fast=false)
Destroy OKS object.
Definition object.cpp:1301
void AddRelationshipValue(const std::string &name, OksObject *object)
Add object value to multi-value relationship by name.
Definition object.cpp:2336
void RemoveRelationshipValue(const std::string &name, OksObject *object)
Remove object value from multi-value relationship by name.
Definition object.cpp:2389
void __report_type_cvt_warning(const oks::ReadFileParams &, const OksAttribute &, const OksData &, const OksData::Type, int32_t) const
Definition object.cpp:451
void check_file_lock(const OksAttribute *, const OksRelationship *)
Definition object.cpp:3191
void put(OksXmlOutputStream &, bool force_defaults) const
Definition object.cpp:1780
std::list< OksRCR * > * p_rcr
Definition object.hpp:1406
const std::list< OksRCR * > * reverse_composite_rels() const
Return information about composite parents. The method returns list of the OKS object's reverse compo...
Definition object.hpp:1310
std::set< OksObject *, std::less< OksObject * > > Set
Definition object.hpp:871
std::unordered_map< const std::string *, OksObject *, oks::hash_str, oks::equal_str > Map
Definition object.hpp:865
std::list< OksObject * > List
Definition object.hpp:875
OksData * GetRelationshipValue(const std::string &) const
Get value of relationship by name.
Definition object.cpp:2004
std::unordered_set< OksObject *, oks::hash_obj_ptr, oks::equal_obj_ptr > FSet
Definition object.hpp:866
bool is_duplicated() const
Definition object.hpp:1390
void check_class_type(const OksRelationship *r, const OksObject *o)
Definition object.hpp:1481
static const char class2_xml_attribute[]
Definition object.hpp:1518
friend std::ostream & operator<<(std::ostream &out, const OksObject &obj)
Detailed stream operator.
Definition object.cpp:1650
static const char relationship_xml_tag[]
Definition object.hpp:1516
void references(OksObject::FSet &refs, unsigned long recursion_depth, bool add_self=false, oks::ClassSet *classes=0) const
Definition object.cpp:3110
OksFile * get_file() const
Definition object.hpp:1013
void init1(const OksFile *=0)
Definition object.cpp:182
static const char attribute_xml_tag[]
Definition object.hpp:1515
static const char obj2_xml_tag[]
Definition object.hpp:1514
std::map< const std::string *, OksObject *, SortById > SMap
Definition object.hpp:860
OksData * GetRelationshipValue(const OksDataInfo *i) const noexcept
Get value of relationship by offset.
Definition object.hpp:1095
static void put_object_attributes(OksXmlOutputStream &, const OksData &)
Definition object.cpp:1754
void __report_cardinality_cvt_warning(const oks::ReadFileParams &, const OksRelationship &) const
Definition object.cpp:485
static const char value_xml_attribute[]
Definition object.hpp:1525
std::string report_dangling_references() const
Definition object.cpp:2957
void SetRelationshipValue(const std::string &name, OksData *data, bool skip_non_null_check=false)
Set value of relationship by name.
Definition object.cpp:2189
void read_body(const oks::ReadFileParams &, bool)
Definition object.cpp:513
int32_t __get_num(const oks::ReadFileParams &params)
Definition object.cpp:502
void add_RCR(OksObject *, const OksRelationship *)
Definition object.cpp:2574
void check_class_type(const OksRelationship *, const OksClass *)
Definition object.cpp:2031
static const char id_xml_attribute[]
Definition object.hpp:1519
void set_file(OksFile *file, bool update_owner=true)
Move object to different file.
Definition object.cpp:1484
bool satisfies(const OksObject *goal, const oks::QueryPathExpression &expresssion, OksObject::List &path) const
Definition query.cpp:950
OksObject & operator=(const OksObject &)
static const char obj_xml_tag[]
Definition object.hpp:1513
static OksObject * read(const oks::ReadFileParams &)
Definition object.cpp:363
FList * get_all_rels(const std::string &name="*") const
Return objects referencing this one via relationship with given name.
Definition object.cpp:3129
void * GetTransientData() const
Get transient user data associated with given object. Return data set using SetTransientData() method...
Definition object.hpp:1343
void check_non_null(const OksRelationship *, const OksObject *)
Definition object.cpp:2019
void unbind_file(const OksFile *)
Definition object.cpp:2825
OksObject(const OksClass *oks_class, const char *object_id=0, bool skip_init=false)
OKS object constructor.
Definition object.cpp:1175
static const char id2_xml_attribute[]
Definition object.hpp:1520
static const char num_xml_attribute[]
Definition object.hpp:1523
const OksClass * GetClass() const
Definition object.hpp:990
static bool are_equal_fast(const OksObject *o1, const OksObject *o2)
The fast equal method.
Definition object.cpp:1600
static const char class_xml_attribute[]
Definition object.hpp:1517
static void bind(OksData *, const BindInfo &)
Definition object.cpp:2626
OksObject::List * find_path(const oks::QueryPath &query) const
Definition query.cpp:936
void set_int32_id(int32_t object_id)
Set object id is used to assign an object unique integer number. Such data are not stored on file and...
Definition object.hpp:1351
static const char name_xml_attribute[]
Definition object.hpp:1521
void set_id(const std::string &id)
Set object ID.
Definition object.cpp:1506
void remove_RCR(OksObject *, const OksRelationship *) noexcept
Definition object.cpp:2602
static const char type_xml_attribute[]
Definition object.hpp:1522
notify_obj get_change_notify() const
Definition object.cpp:2869
static const char data_xml_tag[]
Definition object.hpp:1526
void init2(bool skip_init=false)
Definition object.cpp:275
bool is_consistent(const std::set< OksFile * > &, const char *msg) const
Definition object.cpp:2988
void SetAttributeValue(const std::string &name, OksData *data)
Set value of attribute by name.
Definition object.cpp:1990
bool check_links_and_report(const OksObject *, const std::set< OksFile * > &, const std::string &, const char *) const
Definition object.cpp:2916
void(*) notify_obj(OksObject *, void *)
Definition object.hpp:848
bool SatisfiesQueryExpression(OksQueryExpression *query_exp) const
Check if object satisfies query expression.
Definition query.cpp:630
std::list< OksObject *, boost::fast_pool_allocator< OksObject * > > FList
Definition object.hpp:877
bool operator==(const OksObject &) const
The equality operator.
Definition object.cpp:1612
OksData * GetAttributeValue(const OksDataInfo *i) const noexcept
Get value of attribute by offset.
Definition object.hpp:1062
void SetTransientData(void *d) const
Set transient user data associated with given object. Such data are not stored on file and only exist...
Definition object.hpp:1335
static const char ref_xml_tag[]
Definition object.hpp:1527
const std::string & GetId() const
Definition object.hpp:995
int32_t get_int32_id() const
Get object id associated with given object. Return integer number set using set_int32_id() method.
Definition object.hpp:1358
int32_t p_duplicated_object_id_idx
Definition object.hpp:1409
OksData * GetAttributeValue(const std::string &name) const
Get value of attribute by name.
Definition object.cpp:1919
OKS query expression class.
Definition query.hpp:107
Class OKS string.
Definition object.hpp:369
OksString()
to deallocate memory when destroyed
Definition object.hpp:374
OksString(const std::string &s, std::string::size_type n)
Definition object.hpp:378
OksString(const char *s)
Definition object.hpp:376
OksString(const char *s, size_t n)
Definition object.hpp:377
OksString(const std::string &s)
Definition object.hpp:375
virtual const char * what() const noexcept
caught dunedaq::conffwk::Exception exception
Definition file.hpp:28
bool operator<(const OksString &s1, const OksString &s2)
Implementation of OksString logical less operator.
Definition object.hpp:415
bool operator==(const OksString &s1, const OksString &s2)
Implementation of OksString logical equality operator.
Definition object.hpp:388
std::ostream & operator<<(std::ostream &s, const oks::exception &ex)
std::unordered_set< const OksClass *, oks::hash_class_ptr, oks::equal_class_ptr > ClassSet
Definition object.hpp:820
Including Qt Headers.
DAC value out of range
Message.
Definition DACNode.hpp:32
FELIX Initialization std::string initerror FELIX queue timed out
Definition __init__.py:1
The struct OksAliasTable is used to support aliases.
Definition kernel.hpp:446
Struct OKS data information.
Definition object.hpp:342
OksDataInfo(size_t o, const OksRelationship *r)
Definition object.hpp:352
std::map< std::string, OksDataInfo * > Map
Declare map of pointers to OksDataInfo (unsorted by name)
Definition object.hpp:346
OksDataInfo(size_t o, const OksAttribute *a)
Constructors.
Definition object.hpp:351
const OksAttribute * attribute
Definition object.hpp:355
const OksRelationship * relationship
Definition object.hpp:356
the structure to pass common parameters to various read() methods of OksData and OksObject class
Definition object.hpp:449
OksData(const OksClass *c, const OksString &o)
Definition object.hpp:535
void Set(int8_t c)
Definition object.hpp:543
void Set(const OksClass *c, const OksString &s)
Definition object.hpp:570
OksData(const OksRelationship *r, const oks::ReadFileParams &params)
Definition object.hpp:735
void sort(bool ascending=true)
OksData(boost::gregorian::date d)
Definition object.hpp:522
OksData(const oks::ReadFileParams &params, const OksRelationship *r)
Definition object.hpp:733
void SetNullValue(const OksAttribute *a)
friend std::ostream & operator<<(std::ostream &, const OksData &)
std::string str(int base=0) const
void Set(const char *s)
Definition object.hpp:559
void cvt(OksData *to, const OksAttribute *attr) const
Convert data to new type.
void Set(const OksString &c, const OksString &s)
Definition object.hpp:572
void WriteTo(OksXmlOutputStream &, OksKernel *, OksAliasTable *, bool, bool) const
OksData(OksObject *o)
Definition object.hpp:533
void read(const OksAttribute *, const oks::ReadFileParams &)
OksData(OksString *s)
Definition object.hpp:524
union dunedaq::oks::OksData::Data data
boost::gregorian::date date() const noexcept
void Set(OksString *s)
Definition object.hpp:558
void Set(uint16_t i)
Definition object.hpp:546
void Set(boost::gregorian::date d)
Definition object.hpp:556
void copy(const OksData &)
void Set(uint32_t i)
Definition object.hpp:548
OksData(const OksData &d)
Definition object.hpp:682
void read(const OksRelationship *, const OksXmlRelValue &)
OksData(const OksAttribute *a, const oks::ReadFileParams &params)
Definition object.hpp:730
void Set(const OksClass *c, OksString *s)
Definition object.hpp:571
void Set(const double &d)
Definition object.hpp:552
void Set(int64_t i)
Definition object.hpp:549
std::list< OksData *, boost::fast_pool_allocator< OksData * > > List
Definition object.hpp:455
bool operator>=(const OksData &) const
void read(const OksRelationship *, const oks::ReadFileParams &)
void SetE(OksString *s, const OksAttribute *a)
OksData(const OksString &s)
Definition object.hpp:527
void Set(boost::posix_time::ptime t)
Definition object.hpp:557
void read(const oks::ReadFileParams &, const OksRelationship *)
OksData(const oks::ReadFileParams &params, const OksAttribute *a, int32_t n)
Definition object.hpp:727
void SetValue(const char *s, const OksAttribute *a)
void read(const oks::ReadFileParams &, const OksAttribute *)
OksData(const OksClass *c)
Definition object.hpp:531
void read(const oks::ReadFileParams &, const OksAttribute *, int32_t)
private methods which can be used by OksObject class only
void read(const OksAttribute *, const OksXmlValue &)
void read(const oks::ReadFileParams &, const OksRelationship *, int32_t)
OksData(const OksClass *c, const char *o)
Definition object.hpp:534
void WriteTo(OksXmlOutputStream &, bool) const
void Set(const OksClass *c)
Definition object.hpp:562
const std::string & __oid() const
void Set(int32_t i)
Definition object.hpp:547
void Set(OksObject *o)
Definition object.hpp:569
bool is_g(const OksData &) const noexcept
bool operator>(const OksData &) const
void Set(int16_t i)
Definition object.hpp:545
OksData(const oks::ReadFileParams &params, const OksAttribute *a)
Definition object.hpp:728
OksData(uint32_t i)
Definition object.hpp:516
const std::string & __cn() const
void SetValues(const char *, const OksAttribute *a)
OksData(const std::string &c, const std::string &o)
Definition object.hpp:536
enum dunedaq::oks::OksData::Type type
void Set(uint64_t i)
Definition object.hpp:550
void Set(const OksString &s)
Definition object.hpp:561
void Set(OksString *c, OksString *s)
Definition object.hpp:573
void ConvertTo(OksData *, const OksRelationship *) const
void Set(const std::string &s)
Definition object.hpp:560
static bool is_object(Type t)
Definition object.hpp:701
OksData(const char *s, size_t len, const OksAttribute *a)
Definition object.hpp:528
OksData(const double &d)
Definition object.hpp:520
OksData(const OksRelationship *r, const OksXmlRelValue &value)
Definition object.hpp:734
void Set(List *l)
Definition object.hpp:568
void SetFast(boost::posix_time::ptime t)
void check_range(const OksAttribute *a) const
Check range of data.
OksData(uint16_t i)
Definition object.hpp:514
void set_init_value(const OksAttribute *attr, bool skip_init)
Set value defined by initial value of attribute.
Definition object.cpp:242
void SetFast(boost::gregorian::date d)
OksData(const float &f)
Definition object.hpp:519
bool operator!=(const OksData &) const
OksData(const oks::ReadFileParams &params, const OksRelationship *r, int32_t n)
Definition object.hpp:732
OksData(const char *s)
Definition object.hpp:525
void Set(const float &f)
Definition object.hpp:551
bool operator==(const OksData &) const
bool is_le(const OksData &) const noexcept
OksData(const OksString &s, const OksAttribute *a)
Definition object.hpp:530
OksData(const std::string &s, const OksAttribute *a)
Definition object.hpp:529
bool IsConsistent(const OksRelationship *r, const OksObject *o, const char *msg)
void Set(uint8_t c)
Definition object.hpp:544
OksData(const std::string &s)
Definition object.hpp:526
void ReadFrom(const OksRelationship *) noexcept
void WriteTo(OksXmlOutputStream &) const
OksData(uint64_t i)
Definition object.hpp:518
void ReadFrom(const char *, Type, const OksAttribute *)
Definition object.hpp:747
bool is_l(const OksData &) const noexcept
bool is_ge(const OksData &) const noexcept
OksData(const OksAttribute *a, const OksXmlValue &value)
Definition object.hpp:729
OksData(boost::posix_time::ptime t)
Definition object.hpp:523
bool operator<=(const OksData &) const
bool operator<(const OksData &) const
void Set(bool b)
Definition object.hpp:553
bool operator()(const std::string *s1, const std::string *s2) const
Definition object.hpp:853
The struct OksRCR describes Reverse Composite Relationship (i.e. back reference from child to composi...
Definition object.hpp:762
OksObject * obj
Definition object.hpp:773
OksRCR(OksObject *o, const OksRelationship *r)
Definition object.hpp:767
const OksRelationship * relationship
Definition object.hpp:774
bool operator()(const OksClass *__x, const OksClass *__y) const
Definition object.hpp:815
bool operator()(const OksObject *__x, const OksObject *__y) const
Definition object.hpp:801
bool operator()(const std::string *__x, const std::string *__y) const
Definition object.hpp:787
size_t operator()(const OksClass *x) const
Definition object.hpp:808
size_t operator()(const OksObject *x) const
Definition object.hpp:794
size_t operator()(const std::string *x) const
Definition object.hpp:780
const OksClass * class_id
Definition object.hpp:500
const OksClass * CLASS
Definition object.hpp:493
struct dunedaq::oks::OksData::Data::@165 UID
struct dunedaq::oks::OksData::Data::@166 UID2
const std::string * ENUMERATION
Definition object.hpp:507