DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
object.hpp
Go to the documentation of this file.
1// DUNE DAQ modification notice:
2// This file has been modified from the original ATLAS oks source for the DUNE DAQ project.
3// Fork baseline commit: oks-08-03-04 (2022-04-14).
4// Renamed since fork: yes (from oks/object.h to include/oks/object.hpp).
5
14
15#ifndef OKS_OBJECT_H
16#define OKS_OBJECT_H
17
18#include "oks/defs.hpp"
19#include "oks/exceptions.hpp"
20#include "oks/file.hpp"
21
22#include <stdint.h>
23
24#include <functional>
25#include <list>
26#include <map>
27#include <set>
28#include <string>
29
30#include <boost/date_time/gregorian/greg_date.hpp>
31#include <boost/date_time/posix_time/ptime.hpp>
32#include <boost/pool/pool_alloc.hpp>
33
34#include <unordered_map>
35#include <unordered_set>
36
37namespace dunedaq {
38namespace oks {
39
41
42class OksKernel;
43class OksFile;
44struct OksData;
45class OksClass;
46class OksObject;
47class OksAttribute;
48class OksRelationship;
49class OksMethod;
51struct OksAliasTable;
54struct OksXmlToken;
55struct OksXmlValue;
56struct OksXmlRelValue;
57
59
61class QueryPath;
62
64
66{
67
68public:
70 FailedCreateObject(const OksObject* o, const exception& reason) noexcept
71 : exception(fill(o, reason.what()), reason.level() + 1)
72 {
73 }
74
76 FailedCreateObject(const OksObject* o, const std::string& reason) noexcept
77 : exception(fill(o, reason), 0)
78 {
79 }
80
81 virtual ~FailedCreateObject() noexcept {}
82
83private:
84 static std::string fill(const OksObject* o, const std::string& reason);
85};
86
88
90{
91
92public:
94 FailedReadObject(const OksObject* o, const std::string& what, const exception& reason) noexcept
95 : exception(fill(o, what, reason.what()), reason.level() + 1)
96 {
97 }
98
100 FailedReadObject(const OksObject* o, const std::string& what, const std::string& reason) noexcept
101 : exception(fill(o, what, reason), 0)
102 {
103 }
104
105 virtual ~FailedReadObject() noexcept {}
106
107private:
108 static std::string fill(const OksObject* o, const std::string& what, const std::string& reason);
109};
110
112
114{
115
116public:
118 FailedSaveObject(const OksObject* o, const exception& reason) noexcept
119 : exception(fill(o, reason.what()), reason.level() + 1)
120 {
121 }
122
124 FailedSaveObject(const OksObject* o, const std::string& reason) noexcept
125 : exception(fill(o, reason), 0)
126 {
127 }
128
129 virtual ~FailedSaveObject() noexcept {}
130
131private:
132 static std::string fill(const OksObject* o, const std::string& reason);
133};
134
136
138{
139
140public:
142 FailedRenameObject(const OksObject* o, const exception& reason) noexcept
143 : exception(fill(o, reason.what()), reason.level() + 1)
144 {
145 }
146
148 FailedRenameObject(const OksObject* o, const std::string& reason) noexcept
149 : exception(fill(o, reason), 0)
150 {
151 }
152
153 virtual ~FailedRenameObject() noexcept {}
154
155private:
156 static std::string fill(const OksObject* o, const std::string& reason);
157};
158
160
162{
163
164public:
166 FailedDestoyObject(const OksObject* o, const exception& reason) noexcept
167 : exception(fill(o, reason.what()), reason.level() + 1)
168 {
169 }
170
172 FailedDestoyObject(const OksObject* o, const std::string& reason) noexcept
173 : exception(fill(o, reason), 0)
174 {
175 }
176
177 virtual ~FailedDestoyObject() noexcept {}
178
179private:
180 static std::string fill(const OksObject* o, const std::string& reason);
181};
182
184
186{
187
188public:
190 AttributeRangeError(const OksData* d, const std::string& range) noexcept
191 : exception(fill(d, range), 0)
192 {
193 }
194
195 virtual ~AttributeRangeError() noexcept {}
196
197private:
198 static std::string fill(const OksData* d, const std::string& range);
199};
200
202
204{
205
206public:
208 AttributeReadError(const char* value, const char* type, const exception& reason) noexcept
209 : exception(fill(value, type, reason.what()), reason.level() + 1)
210 {
211 }
212
214 AttributeReadError(const char* value, const char* type, const std::string& reason) noexcept
215 : exception(fill(value, type, reason), 0)
216 {
217 }
218
220 AttributeReadError(const char* type, const exception& reason) noexcept
221 : exception(fill(type, reason.what()), reason.level() + 1)
222 {
223 }
224
226 AttributeReadError(const char* type, const std::string& reason) noexcept
227 : exception(fill(type, reason), 0)
228 {
229 }
230
231 virtual ~AttributeReadError() noexcept {}
232
233private:
234 static std::string fill(const char* value, const char* type, const std::string& reason);
235 static std::string fill(const char* type, const std::string& reason);
236};
237
239
241{
242
243public:
245 ObjectSetError(const OksObject* obj, bool is_rel, const std::string& name, const exception& reason) noexcept
246 : exception(fill(obj, is_rel, name, reason.what()), reason.level() + 1)
247 {
248 }
249
251 ObjectSetError(const OksObject* obj, bool is_rel, const std::string& name, const std::string& reason) noexcept
252 : exception(fill(obj, is_rel, name, reason), 0)
253 {
254 }
255
256 virtual ~ObjectSetError() noexcept {}
257
258private:
259 static std::string fill(const OksObject* obj, bool is_rel, const std::string& name, const std::string& reason);
260};
261
263
265{
266
267public:
269 ObjectGetError(const OksObject* obj, bool is_rel, const std::string& name, const exception& reason) noexcept
270 : exception(fill(obj, is_rel, name, reason.what()), reason.level() + 1)
271 {
272 }
273
275 ObjectGetError(const OksObject* obj, bool is_rel, const std::string& name, const std::string& reason) noexcept
276 : exception(fill(obj, is_rel, name, reason), 0)
277 {
278 }
279
280 virtual ~ObjectGetError() noexcept {}
281
282private:
283 static std::string fill(const OksObject* obj, bool is_rel, const std::string& name, const std::string& reason);
284};
285
287
289{
290
291public:
293 ObjectInitError(const OksObject* obj, const std::string& why, const exception& reason) noexcept
294 : exception(fill(obj, why, reason.what()), reason.level() + 1)
295 {
296 }
297
299 ObjectInitError(const OksObject* obj, const std::string& why, const std::string& reason) noexcept
300 : exception(fill(obj, why, reason), 0)
301 {
302 }
303
304 virtual ~ObjectInitError() noexcept {}
305
306private:
307 static std::string fill(const OksObject* obj, const std::string& why, const std::string& reason);
308};
309
311
313{
314
315public:
318 const OksData* data,
319 const OksRelationship* rel,
320 bool is_error,
321 const std::string& why,
322 const exception& reason) noexcept
323 : exception(fill(obj, rel, why, reason.what()), reason.level() + 1)
324 , p_data(data)
325 , p_is_error(is_error)
326 {
327 }
328
331 const OksData* data,
332 const OksRelationship* rel,
333 bool is_error,
334 const std::string& why,
335 const std::string& reason) noexcept
336 : exception(fill(obj, rel, why, reason), 0)
337 , p_data(data)
338 , p_is_error(is_error)
339 {
340 }
341
342 virtual ~ObjectBindError() noexcept {}
343
347
348private:
349 std::string fill(const OksObject* obj, const OksRelationship* rel, const std::string& why, const std::string& reason);
350};
351
353
354class AddRcrError : public exception
355{
356
357public:
359 AddRcrError(const OksObject* obj, const std::string& name, const OksObject* p1, const OksObject* p2) noexcept
360 : exception(fill(obj, name, p1, p2), 0)
361 {
362 }
363
364 virtual ~AddRcrError() noexcept {}
365
366private:
367 static std::string fill(const OksObject* obj, const std::string& name, const OksObject* p1, const OksObject* p2);
368};
369
371
377
379{
380
382
383 typedef std::map<std::string, OksDataInfo*> Map;
384
386
387 OksDataInfo(size_t o, const OksAttribute* a)
388 : offset(o)
389 , attribute(a)
390 , relationship(nullptr)
391 {
392 ;
393 }
394 OksDataInfo(size_t o, const OksRelationship* r)
395 : offset(o)
396 , attribute(nullptr)
397 , relationship(r)
398 {
399 ;
400 }
401
402 size_t offset; // offset of OKS data in the object
405};
406
408
415
416class OksString : public std::string
417{
418 friend class OksKernel;
419
420public:
421 OksString() { ; }
422 OksString(const std::string& s)
423 : std::string(s)
424 {
425 ;
426 }
427 OksString(const char* s)
428 : std::string(s)
429 {
430 ;
431 }
432 OksString(const char* s, size_t n)
433 : std::string(s, n)
434 {
435 ;
436 }
437 OksString(const std::string& s, std::string::size_type n)
438 : std::string(s, 0, n)
439 {
440 ;
441 }
442
443 void* operator new(size_t) { return boost::fast_pool_allocator<OksString>::allocate(); }
444 void operator delete(void* ptr)
445 {
446 boost::fast_pool_allocator<OksString>::deallocate(reinterpret_cast<OksString*>(ptr));
447 }
448};
449
451
452inline bool
453operator==(const OksString& s1, const OksString& s2)
454{
455 return (*(static_cast<const std::string*>(&s1)) == *(static_cast<const std::string*>(&s2)));
456}
457
459
460inline bool
461operator==(const OksString& s1, const std::string& s2)
462{
463 return (*(static_cast<const std::string*>(&s1)) == s2);
464}
465
467
468inline bool
469operator==(const OksString& s1, const char* s2)
470{
471 return (*(static_cast<const std::string*>(&s1)) == s2);
472}
473
475
476inline bool
477operator<(const OksString& s1, const OksString& s2)
478{
479 return (*(static_cast<const std::string*>(&s1)) < *(static_cast<const std::string*>(&s2)));
480}
481
483
484inline std::ostream&
485operator<<(std::ostream& s, const OksString& str)
486{
487 s << *(static_cast<const std::string*>(&str));
488
489 return s;
490}
491
492// forward declaration for private OKS structures declared in non-installing src/oks_utils.hpp
493
494struct ReloadObjects;
495struct ReadFileParams;
497
499
508
510{
511 friend class OksObject;
512 friend class OksKernel;
513
514public:
515 typedef std::list<OksData*, boost::fast_pool_allocator<OksData*>> List;
516
541
542 union Data
543 {
544 int8_t S8_INT;
545 uint8_t U8_INT;
546 int16_t S16_INT;
547 uint16_t U16_INT;
548 int32_t S32_INT;
549 uint32_t U32_INT;
550 int64_t S64_INT;
551 uint64_t U64_INT;
552 float FLOAT;
553 double DOUBLE;
554 bool BOOL;
557 uint32_t DATE; // boost::gregorian::date => ugly, but member with constructor not allowed in union
558 uint64_t TIME; // boost::posix_time::ptime => ......................................................
561 struct
562 {
563 const OksClass* class_id;
566 struct
567 {
571 const std::string* ENUMERATION;
573
575 OksData(int8_t c)
576 {
577 Clear2();
578 Set(c);
579 }
580 OksData(uint8_t c)
581 {
582 Clear2();
583 Set(c);
584 }
585 OksData(int16_t i)
586 {
587 Clear2();
588 Set(i);
589 }
590 OksData(uint16_t i)
591 {
592 Clear2();
593 Set(i);
594 }
595 OksData(int32_t i)
596 {
597 Clear2();
598 Set(i);
599 }
600 OksData(uint32_t i)
601 {
602 Clear2();
603 Set(i);
604 }
605 OksData(int64_t i)
606 {
607 Clear2();
608 Set(i);
609 }
610 OksData(uint64_t i)
611 {
612 Clear2();
613 Set(i);
614 }
615 OksData(const float& f)
616 {
617 Clear2();
618 Set(f);
619 }
620 OksData(const double& d)
621 {
622 Clear2();
623 Set(d);
624 }
625 OksData(bool b)
626 {
627 Clear2();
628 Set(b);
629 }
630 OksData(boost::gregorian::date d)
631 {
632 Clear2();
633 Set(d);
634 }
635 OksData(boost::posix_time::ptime t)
636 {
637 Clear2();
638 Set(t);
639 }
641 {
642 Clear2();
643 Set(s);
644 }
645 OksData(const char* s)
646 {
647 Clear2();
648 Set(s);
649 }
650 OksData(const std::string& s)
651 {
652 Clear2();
653 Set(s);
654 }
656 {
657 Clear2();
658 Set(s);
659 }
660 OksData(const char* s, size_t len, const OksAttribute* a)
661 {
662 Clear2();
663 SetE(s, len, a);
664 }
665 OksData(const std::string& s, const OksAttribute* a)
666 {
667 Clear2();
668 SetE(s, a);
669 }
670 OksData(const OksString& s, const OksAttribute* a)
671 {
672 Clear2();
673 SetE(s, a);
674 }
676 {
677 Clear2();
678 Set(c);
679 }
681 {
682 Clear2();
683 Set(l);
684 }
686 {
687 Clear2();
688 Set(o);
689 }
690 OksData(const OksClass* c, const char* o)
691 {
692 Clear();
693 Set(c, o);
694 }
695 OksData(const OksClass* c, const OksString& o)
696 {
697 Clear();
698 Set(c, o);
699 }
700 OksData(const std::string& c, const std::string& o)
701 {
702 Clear2();
703 Set(c, o);
704 }
705
707
708 void Clear();
710
711 void Set(int8_t c)
712 {
713 Clear();
715 data.S8_INT = c;
716 }
717 void Set(uint8_t c)
718 {
719 Clear();
721 data.U8_INT = c;
722 }
723 void Set(int16_t i)
724 {
725 Clear();
727 data.S16_INT = i;
728 }
729 void Set(uint16_t i)
730 {
731 Clear();
733 data.U16_INT = i;
734 }
735 void Set(int32_t i)
736 {
737 Clear();
739 data.S32_INT = i;
740 }
741 void Set(uint32_t i)
742 {
743 Clear();
745 data.U32_INT = i;
746 }
747 void Set(int64_t i)
748 {
749 Clear();
751 data.S64_INT = i;
752 }
753 void Set(uint64_t i)
754 {
755 Clear();
757 data.U64_INT = i;
758 }
759 void Set(const float& f)
760 {
761 Clear();
763 data.FLOAT = f;
764 }
765 void Set(const double& d)
766 {
767 Clear();
769 data.DOUBLE = d;
770 }
771 void Set(bool b)
772 {
773 Clear();
774 type = bool_type;
775 data.BOOL = b;
776 }
777 void SetFast(boost::gregorian::date d);
778 void SetFast(boost::posix_time::ptime t);
779 void Set(boost::gregorian::date d)
780 {
781 Clear();
782 type = date_type;
783 SetFast(d);
784 }
785 void Set(boost::posix_time::ptime t)
786 {
787 Clear();
788 type = time_type;
789 SetFast(t);
790 }
791 void Set(OksString* s)
792 {
793 Clear();
795 data.STRING = s;
796 }
797 void Set(const char* s)
798 {
799 Clear();
801 data.STRING = new OksString(s);
802 }
803 void Set(const std::string& s)
804 {
805 Clear();
807 data.STRING = new OksString(s);
808 }
809 void Set(const OksString& s)
810 {
811 Clear();
813 data.STRING = new OksString(s);
814 }
815 void Set(const OksClass* c)
816 {
817 Clear();
819 data.CLASS = c;
820 }
821 inline void SetE(OksString* s, const OksAttribute* a);
822 inline void SetE(const char* s, size_t len, const OksAttribute* a);
823 inline void SetE(const std::string& s, const OksAttribute* a);
824 inline void SetE(const OksAttribute* a);
825 inline void SetE(const OksString& s, const OksAttribute* a);
826 void Set(List* l)
827 {
828 Clear();
829 type = list_type;
830 data.LIST = l;
831 }
832 void Set(OksObject* o)
833 {
834 Clear();
836 data.OBJECT = o;
837 }
838 void Set(const OksClass* c, const OksString& s)
839 {
840 Clear();
841 type = uid_type;
842 data.UID.class_id = c;
843 data.UID.object_id = new OksString(s);
844 }
845 void Set(const OksClass* c, OksString* s)
846 {
847 Clear();
848 type = uid_type;
849 data.UID.class_id = c;
850 data.UID.object_id = s;
851 }
852 void Set(const OksString& c, const OksString& s)
853 {
854 Clear();
855 type = uid2_type;
856 data.UID2.class_id = new OksString(c);
857 data.UID2.object_id = new OksString(s);
858 }
860 {
861 Clear();
862 type = uid2_type;
863 data.UID2.class_id = c;
864 data.UID2.object_id = s;
865 }
866
871 inline void ReadFrom(const char*, Type, const OksAttribute*);
872
877 inline void ReadFrom(const std::string&, const OksAttribute*);
878
884
889 void SetValue(const char* s, const OksAttribute* a);
890
895 void SetValues(const char*, const OksAttribute* a);
896
900 void ReadFrom(const OksRelationship*) noexcept;
901
902 void WriteTo(OksXmlOutputStream&, bool) const;
903
905
906 void ConvertTo(OksData*, const OksRelationship*) const;
907
908 boost::gregorian::date date() const noexcept;
909 boost::posix_time::ptime time() const noexcept;
910
925
926 void cvt(OksData* to, const OksAttribute* attr) const;
927
928 std::string str(int base = 0) const;
929 std::string str(const OksKernel*) const;
930
942
943 void check_range(const OksAttribute* a) const;
944
958
959 void set_init_value(const OksAttribute* attr, bool skip_init);
960
961 OksData& operator=(const OksData& d)
962 {
963 if (&d != this) {
964 Clear();
965 copy(d);
966 }
967
968 return *this;
969 }
970
971 OksData(const OksData& d)
972 {
973 if (&d != this) {
974 copy(d);
975 }
976 }
977
978 bool operator==(const OksData&) const;
979 bool operator!=(const OksData&) const;
980 bool operator<=(const OksData&) const; // report incompatible data types
981 bool operator>=(const OksData&) const; // report incompatible data types
982 bool operator<(const OksData&) const; // report incompatible data types
983 bool operator>(const OksData&) const; // report incompatible data types
984 friend std::ostream& operator<<(std::ostream&, const OksData&);
985 void* operator new(size_t) { return boost::fast_pool_allocator<OksData>::allocate(); }
986 void operator delete(void* ptr) { boost::fast_pool_allocator<OksData>::deallocate(reinterpret_cast<OksData*>(ptr)); }
987
988 void sort(bool ascending = true);
989
990 static bool is_object(Type t) { return (t == object_type || t == uid_type || t == uid2_type); }
991
992private:
993 void copy(const OksData&);
994
995 bool is_le(const OksData&) const noexcept; // fast version of operator<=(const OksData &)
996 bool is_ge(const OksData&) const noexcept; // fast version of operator>=(const OksData &)
997 bool is_l(const OksData&) const noexcept; // fast version of operator<(const OksData &)
998 bool is_g(const OksData&) const noexcept; // fast version of operator>(const OksData &)
999
1001
1002 void read(const oks::ReadFileParams&, const OksAttribute*, int32_t); // read mv attribute
1003 void read(const oks::ReadFileParams&, const OksAttribute*); // read sv attribute
1004 void read(const OksAttribute*, const OksXmlValue&); // read sv attribute for "data" format
1005 void read(const OksAttribute*, const oks::ReadFileParams&); // read mv attribute for "data" format
1006
1007 void read(const oks::ReadFileParams&, const OksRelationship*, int32_t); // read mv relationship
1008 void read(const oks::ReadFileParams&, const OksRelationship*); // read sv relationship
1009 void read(const OksRelationship*, const OksXmlRelValue&); // read sv relationship for "data" format
1010 void read(const OksRelationship*, const oks::ReadFileParams&); // read mv relationship for "data" format
1011
1012 OksData(const oks::ReadFileParams& params, const OksAttribute* a, int32_t n)
1013 {
1014 Clear2();
1015 read(params, a, n);
1016 }
1018 {
1019 Clear2();
1020 read(params, a);
1021 }
1022 OksData(const OksAttribute* a, const OksXmlValue& value)
1023 {
1024 Clear2();
1025 read(a, value);
1026 }
1028 {
1029 Clear2();
1030 read(a, params);
1031 }
1032
1033 OksData(const oks::ReadFileParams& params, const OksRelationship* r, int32_t n)
1034 {
1035 Clear2();
1036 read(params, r, n);
1037 }
1039 {
1040 Clear2();
1041 read(params, r);
1042 }
1044 {
1045 Clear2();
1046 read(r, value);
1047 }
1049 {
1050 Clear2();
1051 read(r, params);
1052 }
1053
1055
1056 bool IsConsistent(const OksRelationship* r, const OksObject* o, const char* msg);
1057
1058 const std::string& __oid() const;
1059 const std::string& __cn() const;
1060};
1061
1062inline void
1063OksData::ReadFrom(const char* s, Type t, const OksAttribute* a)
1064{
1065 Clear();
1066 type = t;
1067 SetValue(s, a);
1068}
1069
1076
1078{
1079 friend class OksKernel;
1080
1081public:
1083 : obj(o)
1084 , relationship(r)
1085 {
1086 ;
1087 }
1088
1089 void* operator new(size_t) { return boost::fast_pool_allocator<OksRCR>::allocate(); }
1090 void operator delete(void* ptr) { boost::fast_pool_allocator<OksRCR>::deallocate(reinterpret_cast<OksRCR*>(ptr)); }
1091
1094};
1095
1097{
1098 inline size_t operator()(const std::string* x) const { return std::hash<std::string>()(*x); }
1099};
1100
1102{
1103 inline bool operator()(const std::string* __x, const std::string* __y) const
1104 {
1105 return ((__x == __y) || (*__x == *__y));
1106 }
1107};
1108
1110{
1111 inline size_t operator()(const OksObject* x) const { return reinterpret_cast<size_t>(x); }
1112};
1113
1115{
1116 inline bool operator()(const OksObject* __x, const OksObject* __y) const { return (__x == __y); }
1117};
1118
1120{
1121 inline size_t operator()(const OksClass* x) const { return reinterpret_cast<size_t>(x); }
1122};
1123
1125{
1126 inline bool operator()(const OksClass* __x, const OksClass* __y) const { return (__x == __y); }
1127};
1128
1129typedef std::unordered_set<const OksClass*, oks::hash_class_ptr, oks::equal_class_ptr> ClassSet;
1130
1142
1144{
1145 friend class OksClass;
1146 friend struct OksData;
1147 friend class OksKernel;
1148 friend class OksIndex;
1149 friend class OksObjectSortBy;
1150 friend struct OksLoadObjectsJob;
1151 friend struct oks::ReadFileParams;
1152 friend struct oks::ReloadObjects;
1153
1154public:
1155 typedef void (*notify_obj)(OksObject*, void*);
1156
1158
1160 {
1161 bool operator()(const std::string* s1, const std::string* s2) const { return *s1 < *s2; }
1162 };
1163
1165
1166 typedef std::map<const std::string*, OksObject*, SortById> SMap;
1167
1169
1170 typedef std::unordered_map<const std::string*, OksObject*, oks::hash_str, oks::equal_str> Map;
1171 typedef std::unordered_set<OksObject*, oks::hash_obj_ptr, oks::equal_obj_ptr> FSet;
1172
1174
1175 typedef std::set<OksObject*, std::less<OksObject*>> Set;
1176
1178
1179 typedef std::list<OksObject*> List;
1180
1181 typedef std::list<OksObject*, boost::fast_pool_allocator<OksObject*>> FList;
1182
1197
1198 OksObject(const OksClass* oks_class, const char* object_id = 0, bool skip_init = false);
1199
1213
1214 OksObject(const OksObject& parent_object, const char* object_id = 0);
1215
1229
1230 static void destroy(OksObject* obj, bool fast = false);
1231
1239
1240 bool operator==(const OksObject&) const;
1241
1250
1251 static bool are_equal_fast(const OksObject* o1, const OksObject* o2);
1252
1253 bool operator!=(const OksObject&) const = delete;
1254
1256
1257 void* operator new(size_t) { return boost::fast_pool_allocator<OksObject>::allocate(); }
1258
1260
1261 void operator delete(void* ptr)
1262 {
1263 boost::fast_pool_allocator<OksObject>::deallocate(reinterpret_cast<OksObject*>(ptr));
1264 }
1265
1273
1274 friend std::ostream& operator<<(std::ostream& out, const OksObject& obj);
1275
1281
1282 friend std::ostream& operator<<(std::ostream&, const OksObject*);
1283
1285
1286 const OksClass* GetClass() const { return uid.class_id; }
1287
1289
1290 const std::string& GetId() const { return uid.object_id; }
1291
1301
1302 void set_id(const std::string& id);
1303
1305
1306 OksFile* get_file() const { return file; }
1307
1320
1321 void set_file(OksFile* file, bool update_owner = true);
1322
1337
1338 OksData* GetAttributeValue(const std::string& name) const;
1339
1351
1352 OksData* GetAttributeValue(const OksDataInfo* i) const noexcept { return &(data[i->offset]); }
1353
1368
1369 OksData* GetRelationshipValue(const std::string&) const;
1370
1382
1383 OksData* GetRelationshipValue(const OksDataInfo* i) const noexcept { return &(data[i->offset]); }
1384
1399
1400 void SetAttributeValue(const std::string& name, OksData* data);
1401
1416
1417 void SetAttributeValue(const OksDataInfo* data_info, OksData* data);
1418
1432
1433 void SetRelationshipValue(const std::string& name, OksData* data, bool skip_non_null_check = false);
1434
1447
1448 void SetRelationshipValue(const OksDataInfo* data_info, OksData* data, bool skip_non_null_check = false);
1449
1462
1463 void SetRelationshipValue(const std::string& name, OksObject* object);
1464
1476
1477 void SetRelationshipValue(const OksDataInfo* data_info, OksObject* object);
1478
1491
1492 void AddRelationshipValue(const std::string& name, OksObject* object);
1493
1506
1507 void AddRelationshipValue(const OksDataInfo* data_info, OksObject* object);
1508
1521
1522 void RemoveRelationshipValue(const std::string& name, OksObject* object);
1523
1535
1536 void RemoveRelationshipValue(const OksDataInfo* data_info, OksObject* object);
1537
1551
1552 void SetRelationshipValue(const std::string& rel_name, const std::string& class_name, const std::string& object_id);
1553
1566
1567 void AddRelationshipValue(const std::string& rel_name, const std::string& class_name, const std::string& object_i);
1568
1581
1582 void RemoveRelationshipValue(const std::string& rel_name, const std::string& class_name, const std::string& object_i);
1583
1588
1589 const std::list<OksRCR*>* reverse_composite_rels() const { return p_rcr; }
1590
1606
1607 FList* get_all_rels(const std::string& name = "*") const;
1608
1613
1614 void SetTransientData(void* d) const { p_user_data = d; }
1615
1620
1621 void* GetTransientData() const { return p_user_data; }
1622
1627
1628 void set_int32_id(int32_t object_id) { p_int32_id = object_id; }
1629
1634
1635 int32_t get_int32_id() const { return p_int32_id; }
1636
1648
1649 bool SatisfiesQueryExpression(OksQueryExpression* query_exp) const;
1650
1651 bool satisfies(const OksObject* goal, const oks::QueryPathExpression& expresssion, OksObject::List& path) const;
1652 OksObject::List* find_path(const oks::QueryPath& query) const;
1653
1656 bool is_consistent(const std::set<OksFile*>&, const char* msg) const;
1657
1659 std::string report_dangling_references() const;
1660
1662 void references(OksObject::FSet& refs,
1663 unsigned long recursion_depth,
1664 bool add_self = false,
1665 oks::ClassSet* classes = 0) const;
1666
1667 bool is_duplicated() const { return (p_duplicated_object_id_idx != -1); }
1668
1669private:
1670 // the struct OksUid is used to describe object unique identity
1671 // in form 'class_name@object_identity'
1672
1673 struct OksUid
1674 {
1676 std::string object_id;
1677
1679 : class_id(0)
1680 {
1681 ;
1682 }
1684
1686 std::list<OksRCR*>* p_rcr;
1687 mutable void* p_user_data;
1688 int32_t p_int32_id;
1691
1692 // to be used by OksKernel only
1693
1694 ~OksObject();
1695
1703
1704 static OksObject* read(const oks::ReadFileParams&);
1706 const OksAttribute&,
1707 const OksData&,
1708 const OksData::Type,
1709 int32_t) const;
1711 int32_t __get_num(const oks::ReadFileParams& params);
1712
1713 // these two are used by read() method
1714
1715 void read_body(const oks::ReadFileParams&, bool);
1716
1721 OksObject(const oks::ReadFileParams&, OksClass*, const std::string&);
1722
1723 // to be used by OksIndex only
1724
1725 OksObject(size_t, const OksData*);
1726
1727 // to be used by OksKernel only
1728
1730 const std::string& id,
1731 void* user_data,
1732 int32_t object_id,
1733 int32_t duplicated_object_id_idx,
1734 OksFile* f);
1735
1736 // is not implemented and must not be used
1737
1739
1740 // these 3 methods are used by constructors
1741
1742 void init1(const OksFile* = 0);
1743 void init2(bool skip_init = false);
1744 void init3();
1745 void init3(OksClass* c);
1746
1747 void check_ids();
1748
1749public:
1750 void add_RCR(OksObject*, const OksRelationship*);
1751 void remove_RCR(OksObject*, const OksRelationship*) noexcept;
1752
1753private:
1754 inline void notify()
1755 {
1756 file->set_updated();
1757 change_notify();
1758 }
1759
1760 void check_class_type(const OksRelationship*, const OksClass*);
1762 {
1763 if (o) {
1764 check_class_type(r, o->GetClass());
1765 }
1766 }
1767 void check_non_null(const OksRelationship*, const OksObject*);
1768 void check_file_lock(const OksAttribute*, const OksRelationship*);
1769
1770 void set_unique_id();
1771 void put(OksXmlOutputStream&, bool force_defaults) const;
1772 static void put_object_attributes(OksXmlOutputStream&, const OksData&);
1773
1774 // bind data and methods
1775
1782
1784
1785 void bind_objects();
1786 static void bind(OksData*, const BindInfo&);
1787
1788 void unbind_file(const OksFile*);
1789
1790 // check and report to standard out missing file inclusion paths
1791
1792 bool check_links_and_report(const OksObject*, const std::set<OksFile*>&, const std::string&, const char*) const;
1793
1794 // valid names of xml tags and attributes
1795
1796 static const char obj_xml_tag[];
1797 static const char obj2_xml_tag[];
1798 static const char attribute_xml_tag[];
1799 static const char relationship_xml_tag[];
1800 static const char class_xml_attribute[];
1801 static const char class2_xml_attribute[];
1802 static const char id_xml_attribute[];
1803 static const char id2_xml_attribute[];
1804 static const char name_xml_attribute[];
1805 static const char type_xml_attribute[];
1806 static const char num_xml_attribute[];
1807
1808 static const char value_xml_attribute[];
1809 static const char data_xml_tag[];
1810 static const char ref_xml_tag[];
1811
1813
1814 void create_notify();
1815 void change_notify();
1816 void delete_notify();
1817};
1818
1819} // namespace oks
1820} // namespace dunedaq
1821
1822#endif
AddRcrError(const OksObject *obj, const std::string &name, const OksObject *p1, const OksObject *p2) noexcept
Definition object.hpp:359
static std::string fill(const OksObject *obj, const std::string &name, const OksObject *p1, const OksObject *p2)
Definition object.cpp:114
virtual ~AddRcrError() noexcept
Definition object.hpp:364
static std::string fill(const OksData *d, const std::string &range)
AttributeRangeError(const OksData *d, const std::string &range) noexcept
Definition object.hpp:190
virtual ~AttributeRangeError() noexcept
Definition object.hpp:195
AttributeReadError(const char *type, const std::string &reason) noexcept
Definition object.hpp:226
AttributeReadError(const char *value, const char *type, const std::string &reason) noexcept
Definition object.hpp:214
virtual ~AttributeReadError() noexcept
Definition object.hpp:231
static std::string fill(const char *type, const std::string &reason)
AttributeReadError(const char *type, const exception &reason) noexcept
Definition object.hpp:220
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:208
FailedCreateObject(const OksObject *o, const exception &reason) noexcept
Definition object.hpp:70
virtual ~FailedCreateObject() noexcept
Definition object.hpp:81
FailedCreateObject(const OksObject *o, const std::string &reason) noexcept
Definition object.hpp:76
static std::string fill(const OksObject *o, const std::string &reason)
Definition object.cpp:64
virtual ~FailedDestoyObject() noexcept
Definition object.hpp:177
FailedDestoyObject(const OksObject *o, const std::string &reason) noexcept
Definition object.hpp:172
FailedDestoyObject(const OksObject *o, const exception &reason) noexcept
Definition object.hpp:166
static std::string fill(const OksObject *o, const std::string &reason)
Definition object.cpp:88
FailedReadObject(const OksObject *o, const std::string &what, const exception &reason) noexcept
Definition object.hpp:94
FailedReadObject(const OksObject *o, const std::string &what, const std::string &reason) noexcept
Definition object.hpp:100
virtual ~FailedReadObject() noexcept
Definition object.hpp:105
static std::string fill(const OksObject *o, const std::string &what, const std::string &reason)
Definition object.cpp:56
static std::string fill(const OksObject *o, const std::string &reason)
Definition object.cpp:80
FailedRenameObject(const OksObject *o, const std::string &reason) noexcept
Definition object.hpp:148
FailedRenameObject(const OksObject *o, const exception &reason) noexcept
Definition object.hpp:142
virtual ~FailedRenameObject() noexcept
Definition object.hpp:153
virtual ~FailedSaveObject() noexcept
Definition object.hpp:129
static std::string fill(const OksObject *o, const std::string &reason)
Definition object.cpp:72
FailedSaveObject(const OksObject *o, const exception &reason) noexcept
Definition object.hpp:118
FailedSaveObject(const OksObject *o, const std::string &reason) noexcept
Definition object.hpp:124
ObjectBindError(const OksObject *obj, const OksData *data, const OksRelationship *rel, bool is_error, const std::string &why, const exception &reason) noexcept
Definition object.hpp:317
virtual ~ObjectBindError() noexcept
Definition object.hpp:342
std::string fill(const OksObject *obj, const OksRelationship *rel, const std::string &why, const std::string &reason)
Definition object.cpp:131
const OksRelationship * p_rel
Definition object.hpp:345
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:330
virtual ~ObjectGetError() noexcept
Definition object.hpp:280
ObjectGetError(const OksObject *obj, bool is_rel, const std::string &name, const exception &reason) noexcept
Definition object.hpp:269
ObjectGetError(const OksObject *obj, bool is_rel, const std::string &name, const std::string &reason) noexcept
Definition object.hpp:275
static std::string fill(const OksObject *obj, bool is_rel, const std::string &name, const std::string &reason)
Definition object.cpp:105
virtual ~ObjectInitError() noexcept
Definition object.hpp:304
ObjectInitError(const OksObject *obj, const std::string &why, const std::string &reason) noexcept
Definition object.hpp:299
ObjectInitError(const OksObject *obj, const std::string &why, const exception &reason) noexcept
Definition object.hpp:293
static std::string fill(const OksObject *obj, const std::string &why, const std::string &reason)
Definition object.cpp:123
ObjectSetError(const OksObject *obj, bool is_rel, const std::string &name, const std::string &reason) noexcept
Definition object.hpp:251
virtual ~ObjectSetError() noexcept
Definition object.hpp:256
ObjectSetError(const OksObject *obj, bool is_rel, const std::string &name, const exception &reason) noexcept
Definition object.hpp:245
static std::string fill(const OksObject *obj, bool is_rel, const std::string &name, const std::string &reason)
Definition object.cpp:96
OKS attribute class.
Definition attribute.hpp:94
The OKS class.
Definition class.hpp:223
Provides interface to the OKS XML schema and data files.
Definition file.hpp:355
Provides interface to the OKS kernel.
Definition kernel.hpp:615
OKS method class.
Definition method.hpp:147
OksObject describes instance of OksClass.
Definition object.hpp:1144
friend class OksObjectSortBy
Definition object.hpp:1149
struct dunedaq::oks::OksObject::OksUid uid
friend class OksClass
Definition object.hpp:1145
bool operator!=(const OksObject &) const =delete
static void destroy(OksObject *obj, bool fast=false)
Destroy OKS object.
Definition object.cpp:1284
void AddRelationshipValue(const std::string &name, OksObject *object)
Add object value to multi-value relationship by name.
Definition object.cpp:2266
void RemoveRelationshipValue(const std::string &name, OksObject *object)
Remove object value from multi-value relationship by name.
Definition object.cpp:2317
void __report_type_cvt_warning(const oks::ReadFileParams &, const OksAttribute &, const OksData &, const OksData::Type, int32_t) const
Definition object.cpp:436
std::map< const std::string *, OksObject *, SortById > SMap
Definition object.hpp:1166
void check_file_lock(const OksAttribute *, const OksRelationship *)
Definition object.cpp:3125
void put(OksXmlOutputStream &, bool force_defaults) const
Definition object.cpp:1735
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:1589
friend struct OksLoadObjectsJob
Definition object.hpp:1150
OksData * GetRelationshipValue(const std::string &) const
Get value of relationship by name.
Definition object.cpp:1944
std::unordered_set< OksObject *, oks::hash_obj_ptr, oks::equal_obj_ptr > FSet
Definition object.hpp:1171
std::list< OksObject * > List
Definition object.hpp:1179
void(*) notify_obj(OksObject *, void *)
Definition object.hpp:1155
bool is_duplicated() const
Definition object.hpp:1667
void check_class_type(const OksRelationship *r, const OksObject *o)
Definition object.hpp:1761
static const char class2_xml_attribute[]
Definition object.hpp:1801
static const char relationship_xml_tag[]
Definition object.hpp:1799
friend struct OksData
Definition object.hpp:1146
void references(OksObject::FSet &refs, unsigned long recursion_depth, bool add_self=false, oks::ClassSet *classes=0) const
Definition object.cpp:3043
OksFile * get_file() const
Definition object.hpp:1306
void init1(const OksFile *=0)
Definition object.cpp:193
static const char attribute_xml_tag[]
Definition object.hpp:1798
static const char obj2_xml_tag[]
Definition object.hpp:1797
friend class OksIndex
Definition object.hpp:1148
OksData * GetRelationshipValue(const OksDataInfo *i) const noexcept
Get value of relationship by offset.
Definition object.hpp:1383
static void put_object_attributes(OksXmlOutputStream &, const OksData &)
Definition object.cpp:1714
void __report_cardinality_cvt_warning(const oks::ReadFileParams &, const OksRelationship &) const
Definition object.cpp:510
static const char value_xml_attribute[]
Definition object.hpp:1808
std::string report_dangling_references() const
Definition object.cpp:2888
void SetRelationshipValue(const std::string &name, OksData *data, bool skip_non_null_check=false)
Set value of relationship by name.
Definition object.cpp:2125
void read_body(const oks::ReadFileParams &, bool)
Definition object.cpp:542
int32_t __get_num(const oks::ReadFileParams &params)
Definition object.cpp:530
void add_RCR(OksObject *, const OksRelationship *)
Definition object.cpp:2500
void check_class_type(const OksRelationship *, const OksClass *)
Definition object.cpp:1970
static const char id_xml_attribute[]
Definition object.hpp:1802
void set_file(OksFile *file, bool update_owner=true)
Move object to different file.
Definition object.cpp:1468
bool satisfies(const OksObject *goal, const oks::QueryPathExpression &expresssion, OksObject::List &path) const
Definition query.cpp:936
OksObject & operator=(const OksObject &)
static const char obj_xml_tag[]
Definition object.hpp:1796
friend class OksKernel
Definition object.hpp:1147
std::unordered_map< const std::string *, OksObject *, oks::hash_str, oks::equal_str > Map
Definition object.hpp:1170
static OksObject * read(const oks::ReadFileParams &)
Definition object.cpp:357
FList * get_all_rels(const std::string &name="*") const
Return objects referencing this one via relationship with given name.
Definition object.cpp:3062
void * GetTransientData() const
Get transient user data associated with given object. Return data set using SetTransientData() method...
Definition object.hpp:1621
std::list< OksObject *, boost::fast_pool_allocator< OksObject * > > FList
Definition object.hpp:1181
void check_non_null(const OksRelationship *, const OksObject *)
Definition object.cpp:1958
void unbind_file(const OksFile *)
Definition object.cpp:2748
OksObject(const OksClass *oks_class, const char *object_id=0, bool skip_init=false)
OKS object constructor.
Definition object.cpp:1151
static const char id2_xml_attribute[]
Definition object.hpp:1803
static const char num_xml_attribute[]
Definition object.hpp:1806
const OksClass * GetClass() const
Definition object.hpp:1286
std::set< OksObject *, std::less< OksObject * > > Set
Definition object.hpp:1175
static bool are_equal_fast(const OksObject *o1, const OksObject *o2)
The fast equal method.
Definition object.cpp:1578
static const char class_xml_attribute[]
Definition object.hpp:1800
static void bind(OksData *, const BindInfo &)
Definition object.cpp:2552
OksObject::List * find_path(const oks::QueryPath &query) const
Definition query.cpp:923
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:1628
static const char name_xml_attribute[]
Definition object.hpp:1804
void set_id(const std::string &id)
Set object ID.
Definition object.cpp:1488
void remove_RCR(OksObject *, const OksRelationship *) noexcept
Definition object.cpp:2528
static const char type_xml_attribute[]
Definition object.hpp:1805
notify_obj get_change_notify() const
Definition object.cpp:2793
std::list< OksRCR * > * p_rcr
Definition object.hpp:1686
static const char data_xml_tag[]
Definition object.hpp:1809
void init2(bool skip_init=false)
Definition object.cpp:275
bool is_consistent(const std::set< OksFile * > &, const char *msg) const
Definition object.cpp:2917
void SetAttributeValue(const std::string &name, OksData *data)
Set value of attribute by name.
Definition object.cpp:1930
bool check_links_and_report(const OksObject *, const std::set< OksFile * > &, const std::string &, const char *) const
Definition object.cpp:2840
bool SatisfiesQueryExpression(OksQueryExpression *query_exp) const
Check if object satisfies query expression.
Definition query.cpp:619
bool operator==(const OksObject &) const
The equality operator.
Definition object.cpp:1590
OksData * GetAttributeValue(const OksDataInfo *i) const noexcept
Get value of attribute by offset.
Definition object.hpp:1352
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:1614
static const char ref_xml_tag[]
Definition object.hpp:1810
const std::string & GetId() const
Definition object.hpp:1290
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:1635
int32_t p_duplicated_object_id_idx
Definition object.hpp:1689
OksData * GetAttributeValue(const std::string &name) const
Get value of attribute by name.
Definition object.cpp:1852
OKS query expression class.
Definition query.hpp:112
Class OKS string.
Definition object.hpp:417
OksString()
to deallocate memory when destroyed
Definition object.hpp:421
OksString(const std::string &s, std::string::size_type n)
Definition object.hpp:437
OksString(const char *s)
Definition object.hpp:427
friend class OksKernel
Definition object.hpp:418
OksString(const char *s, size_t n)
Definition object.hpp:432
OksString(const std::string &s)
Definition object.hpp:422
virtual const char * what() const noexcept
exception(const std::string &what_arg, int level_arg) noexcept
Definition xml.cpp:41
bool operator<(const OksString &s1, const OksString &s2)
Implementation of OksString logical less operator.
Definition object.hpp:477
bool operator==(const OksString &s1, const OksString &s2)
Implementation of OksString logical equality operator.
Definition object.hpp:453
std::ostream & operator<<(std::ostream &s, const oks::exception &ex)
std::unordered_set< const OksClass *, oks::hash_class_ptr, oks::equal_class_ptr > ClassSet
Definition object.hpp:1129
The DUNE-DAQ namespace.
DAC value out of range
Message.
Definition DACNode.hpp:32
FELIX Initialization std::string initerror FELIX queue timed out
msgpack::object obj
Both frame_count_limit and tp_count_limit were set to(disabled) in the TPCRawDataProcessor " "config. TPs will not send."
The struct OksAliasTable is used to support aliases.
Definition kernel.hpp:478
Struct OKS data information.
Definition object.hpp:379
OksDataInfo(size_t o, const OksRelationship *r)
Definition object.hpp:394
OksDataInfo(size_t o, const OksAttribute *a)
Constructors.
Definition object.hpp:387
std::map< std::string, OksDataInfo * > Map
Declare map of pointers to OksDataInfo (unsorted by name).
Definition object.hpp:383
const OksAttribute * attribute
Definition object.hpp:403
const OksRelationship * relationship
Definition object.hpp:404
Struct OKS data.
Definition object.hpp:510
OksData(const OksClass *c, const OksString &o)
Definition object.hpp:695
void Set(int8_t c)
Definition object.hpp:711
void Set(const OksClass *c, const OksString &s)
Definition object.hpp:838
OksData(const OksRelationship *r, const oks::ReadFileParams &params)
Definition object.hpp:1048
void sort(bool ascending=true)
OksData(boost::gregorian::date d)
Definition object.hpp:630
OksData(const oks::ReadFileParams &params, const OksRelationship *r)
Definition object.hpp:1038
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:797
void cvt(OksData *to, const OksAttribute *attr) const
Convert data to new type.
void Set(const OksString &c, const OksString &s)
Definition object.hpp:852
void WriteTo(OksXmlOutputStream &, OksKernel *, OksAliasTable *, bool, bool) const
OksData(OksObject *o)
Definition object.hpp:685
void read(const OksAttribute *, const oks::ReadFileParams &)
OksData(OksString *s)
Definition object.hpp:640
union dunedaq::oks::OksData::Data data
boost::gregorian::date date() const noexcept
void Set(OksString *s)
Definition object.hpp:791
boost::posix_time::ptime time() const noexcept
void Set(uint16_t i)
Definition object.hpp:729
void Set(boost::gregorian::date d)
Definition object.hpp:779
void copy(const OksData &)
void Set(uint32_t i)
Definition object.hpp:741
OksData(const OksData &d)
Definition object.hpp:971
void read(const OksRelationship *, const OksXmlRelValue &)
OksData(const OksAttribute *a, const oks::ReadFileParams &params)
Definition object.hpp:1027
void Set(const OksClass *c, OksString *s)
Definition object.hpp:845
void Set(const double &d)
Definition object.hpp:765
void Set(int64_t i)
Definition object.hpp:747
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:655
void Set(boost::posix_time::ptime t)
Definition object.hpp:785
void read(const oks::ReadFileParams &, const OksRelationship *)
OksData(const oks::ReadFileParams &params, const OksAttribute *a, int32_t n)
Definition object.hpp:1012
void SetValue(const char *s, const OksAttribute *a)
void read(const oks::ReadFileParams &, const OksAttribute *)
OksData(const OksClass *c)
Definition object.hpp:675
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:690
void WriteTo(OksXmlOutputStream &, bool) const
void Set(const OksClass *c)
Definition object.hpp:815
friend class OksKernel
Definition object.hpp:512
const std::string & __oid() const
void Set(int32_t i)
Definition object.hpp:735
void Set(OksObject *o)
Definition object.hpp:832
bool is_g(const OksData &) const noexcept
bool operator>(const OksData &) const
void Set(int16_t i)
Definition object.hpp:723
OksData(const oks::ReadFileParams &params, const OksAttribute *a)
Definition object.hpp:1017
OksData(uint32_t i)
Definition object.hpp:600
const std::string & __cn() const
void SetValues(const char *, const OksAttribute *a)
OksData(const std::string &c, const std::string &o)
Definition object.hpp:700
enum dunedaq::oks::OksData::Type type
void Set(uint64_t i)
Definition object.hpp:753
void Set(const OksString &s)
Definition object.hpp:809
void Set(OksString *c, OksString *s)
Definition object.hpp:859
void ConvertTo(OksData *, const OksRelationship *) const
void Set(const std::string &s)
Definition object.hpp:803
static bool is_object(Type t)
Definition object.hpp:990
OksData(const char *s, size_t len, const OksAttribute *a)
Definition object.hpp:660
OksData(const double &d)
Definition object.hpp:620
OksData(const OksRelationship *r, const OksXmlRelValue &value)
Definition object.hpp:1043
void Set(List *l)
Definition object.hpp:826
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:590
void set_init_value(const OksAttribute *attr, bool skip_init)
Set value defined by initial value of attribute.
Definition object.cpp:248
void SetFast(boost::gregorian::date d)
OksData(const float &f)
Definition object.hpp:615
bool operator!=(const OksData &) const
OksData(const oks::ReadFileParams &params, const OksRelationship *r, int32_t n)
Definition object.hpp:1033
std::list< OksData *, boost::fast_pool_allocator< OksData * > > List
Definition object.hpp:515
friend class OksObject
Definition object.hpp:511
OksData(const char *s)
Definition object.hpp:645
void Set(const float &f)
Definition object.hpp:759
bool operator==(const OksData &) const
bool is_le(const OksData &) const noexcept
OksData(const OksString &s, const OksAttribute *a)
Definition object.hpp:670
OksData(const std::string &s, const OksAttribute *a)
Definition object.hpp:665
bool IsConsistent(const OksRelationship *r, const OksObject *o, const char *msg)
void Set(uint8_t c)
Definition object.hpp:717
OksData(const std::string &s)
Definition object.hpp:650
void ReadFrom(const OksRelationship *) noexcept
void WriteTo(OksXmlOutputStream &) const
OksData(uint64_t i)
Definition object.hpp:610
void ReadFrom(const char *, Type, const OksAttribute *)
Definition object.hpp:1063
bool is_l(const OksData &) const noexcept
bool is_ge(const OksData &) const noexcept
OksData(const OksAttribute *a, const OksXmlValue &value)
Definition object.hpp:1022
OksData(boost::posix_time::ptime t)
Definition object.hpp:635
bool operator<=(const OksData &) const
bool operator<(const OksData &) const
void Set(bool b)
Definition object.hpp:771
bool operator()(const std::string *s1, const std::string *s2) const
Definition object.hpp:1161
friend class OksKernel
Definition object.hpp:1079
OksRCR(OksObject *o, const OksRelationship *r)
Definition object.hpp:1082
const OksRelationship * relationship
Definition object.hpp:1093
bool operator()(const OksClass *__x, const OksClass *__y) const
Definition object.hpp:1126
bool operator()(const OksObject *__x, const OksObject *__y) const
Definition object.hpp:1116
bool operator()(const std::string *__x, const std::string *__y) const
Definition object.hpp:1103
size_t operator()(const OksClass *x) const
Definition object.hpp:1121
size_t operator()(const OksObject *x) const
Definition object.hpp:1111
size_t operator()(const std::string *x) const
Definition object.hpp:1098
const OksClass * CLASS
Definition object.hpp:555
struct dunedaq::oks::OksData::Data::@266171337063116272021017117226020166361213322350 UID
const std::string * ENUMERATION
Definition object.hpp:571
struct dunedaq::oks::OksData::Data::@226266061051241020017305361066131172152317024337 UID2