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/file.hpp"
20#include "oks/exceptions.hpp"
21
22#include <stdint.h>
23
24#include <string>
25#include <list>
26#include <set>
27#include <map>
28#include <functional>
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
37
38namespace dunedaq {
39namespace oks {
40
41
43
44class OksKernel;
45class OksFile;
46struct OksData;
47class OksClass;
48class OksObject;
49class OksAttribute;
50class OksRelationship;
51class OksMethod;
53struct OksAliasTable;
56struct OksXmlToken;
57struct OksXmlValue;
58struct OksXmlRelValue;
59
61
63 class QueryPath;
64
65
67
69
70 public:
71
73 FailedCreateObject(const OksObject * o, const exception& reason) noexcept : exception (fill(o, reason.what()), reason.level() + 1) { }
74
76 FailedCreateObject(const OksObject * o, const std::string& reason) noexcept : exception (fill(o, reason), 0) { }
77
78 virtual ~FailedCreateObject() noexcept { }
79
80
81 private:
82
83 static std::string fill(const OksObject * o, const std::string& reason);
84 };
85
86
88
89 class FailedReadObject : public exception {
90
91 public:
92
94 FailedReadObject(const OksObject * o, const std::string& what, const exception& reason) noexcept : exception (fill(o, what, reason.what()), reason.level() + 1) { }
95
97 FailedReadObject(const OksObject * o, const std::string& what, const std::string& reason) noexcept : exception (fill(o, what, reason), 0) { }
98
99 virtual ~FailedReadObject() noexcept { }
100
101
102 private:
103
104 static std::string fill(const OksObject * o, const std::string& what, const std::string& reason);
105 };
106
107
109
111
112 public:
113
115 FailedSaveObject(const OksObject * o, const exception& reason) noexcept : exception (fill(o, reason.what()), reason.level() + 1) { }
116
118 FailedSaveObject(const OksObject * o, const std::string& reason) noexcept : exception (fill(o, reason), 0) { }
119
120 virtual ~FailedSaveObject() noexcept { }
121
122
123 private:
124
125 static std::string fill(const OksObject * o, const std::string& reason);
126
127 };
128
129
131
133
134 public:
135
137 FailedRenameObject(const OksObject * o, const exception& reason) noexcept : exception (fill(o, reason.what()), reason.level() + 1) { }
138
140 FailedRenameObject(const OksObject * o, const std::string& reason) noexcept : exception (fill(o, reason), 0) { }
141
142 virtual ~FailedRenameObject() noexcept { }
143
144
145 private:
146
147 static std::string fill(const OksObject * o, const std::string& reason);
148
149 };
150
151
153
155
156 public:
157
159 FailedDestoyObject(const OksObject * o, const exception& reason) noexcept : exception (fill(o, reason.what()), reason.level() + 1) { }
160
162 FailedDestoyObject(const OksObject * o, const std::string& reason) noexcept : exception (fill(o, reason), 0) { }
163
164 virtual ~FailedDestoyObject() noexcept { }
165
166
167 private:
168
169 static std::string fill(const OksObject * o, const std::string& reason);
170
171 };
172
173
175
177
178 public:
179
181 AttributeRangeError(const OksData * d, const std::string& range) noexcept : exception (fill(d, range), 0) { }
182
183 virtual ~AttributeRangeError() noexcept { }
184
185
186 private:
187
188 static std::string fill(const OksData * d, const std::string& range);
189
190 };
191
192
194
196
197 public:
198
200 AttributeReadError(const char * value, const char * type, const exception& reason) noexcept : exception (fill(value, type, reason.what()), reason.level() + 1) { }
201
203 AttributeReadError(const char * value, const char * type, const std::string& reason) noexcept : exception (fill(value, type, reason), 0) { }
204
206 AttributeReadError(const char * type, const exception& reason) noexcept : exception (fill(type, reason.what()), reason.level() + 1) { }
207
209 AttributeReadError(const char * type, const std::string& reason) noexcept : exception (fill(type, reason), 0) { }
210
211 virtual ~AttributeReadError() noexcept { }
212
213
214 private:
215
216 static std::string fill(const char * value, const char * type, const std::string& reason);
217 static std::string fill(const char * type, const std::string& reason);
218
219 };
220
221
223
224 class ObjectSetError : public exception {
225
226 public:
227
229 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) { }
230
232 ObjectSetError(const OksObject * obj, bool is_rel, const std::string& name, const std::string& reason) noexcept : exception (fill(obj, is_rel, name, reason), 0) { }
233
234 virtual ~ObjectSetError() noexcept { }
235
236
237 private:
238
239 static std::string fill(const OksObject * obj, bool is_rel, const std::string& name, const std::string& reason);
240
241 };
242
243
245
246 class ObjectGetError : public exception {
247
248 public:
249
251 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) { }
252
254 ObjectGetError(const OksObject * obj, bool is_rel, const std::string& name, const std::string& reason) noexcept : exception (fill(obj, is_rel, name, reason), 0) { }
255
256 virtual ~ObjectGetError() noexcept { }
257
258
259 private:
260
261 static std::string fill(const OksObject * obj, bool is_rel, const std::string& name, const std::string& reason);
262
263 };
264
265
267
268 class ObjectInitError : public exception {
269
270 public:
271
273 ObjectInitError(const OksObject * obj, const std::string& why, const exception& reason) noexcept : exception (fill(obj, why, reason.what()), reason.level() + 1) { }
274
276 ObjectInitError(const OksObject * obj, const std::string& why, const std::string& reason) noexcept : exception (fill(obj, why, reason), 0) { }
277
278 virtual ~ObjectInitError() noexcept { }
279
280
281 private:
282
283 static std::string fill(const OksObject * obj, const std::string& why, const std::string& reason);
284
285 };
286
287
288
290
291 class ObjectBindError : public exception {
292
293 public:
294
296 ObjectBindError(const OksObject * obj, const OksData * data, const OksRelationship * rel, bool is_error, const std::string& why, const exception& reason) noexcept :
297 exception (fill(obj, rel, why, reason.what()), reason.level() + 1),
298 p_data(data), p_is_error(is_error) { }
299
301 ObjectBindError(const OksObject * obj, const OksData * data, const OksRelationship * rel, bool is_error, const std::string& why, const std::string& reason) noexcept :
302 exception (fill(obj, rel, why, reason), 0),
303 p_data(data), p_is_error(is_error) { }
304
305 virtual ~ObjectBindError() noexcept { }
306
310
311 private:
312
313 std::string fill(const OksObject * obj, const OksRelationship * rel, const std::string& why, const std::string& reason);
314
315 };
316
317
318
320
321 class AddRcrError : public exception {
322
323 public:
324
326 AddRcrError(const OksObject * obj, const std::string& name, const OksObject * p1, const OksObject * p2) noexcept : exception (fill(obj, name, p1, p2), 0) { }
327
328 virtual ~AddRcrError() noexcept { }
329
330
331 private:
332
333 static std::string fill(const OksObject * obj, const std::string& name, const OksObject * p1, const OksObject * p2);
334
335 };
336
337
338
340
346
348
350
351 typedef std::map<std::string, OksDataInfo *> Map;
352
353
355
356 OksDataInfo(size_t o, const OksAttribute * a) : offset (o), attribute (a), relationship(nullptr) { ; }
357 OksDataInfo(size_t o, const OksRelationship * r) : offset (o), attribute (nullptr), relationship(r) { ; }
358
359 size_t offset; // offset of OKS data in the object
362};
363
364
366
373
374class OksString : public std::string {
375 friend class OksKernel;
376
377 public:
378
380 OksString (const std::string& s) : std::string(s) {;}
381 OksString (const char * s) : std::string(s) {;}
382 OksString (const char * s, size_t n) : std::string(s,n) {;}
383 OksString (const std::string&s, std::string::size_type n) : std::string(s,0,n) {;}
384
385 void * operator new(size_t) {return boost::fast_pool_allocator<OksString>::allocate();}
386 void operator delete(void *ptr) {boost::fast_pool_allocator<OksString>::deallocate(reinterpret_cast<OksString*>(ptr));}
387};
388
389
391
392inline bool
393operator==(const OksString& s1, const OksString& s2)
394{
395 return ( *(static_cast<const std::string *>(&s1)) == *(static_cast<const std::string *>(&s2)) );
396}
397
398
400
401inline bool
402operator==(const OksString& s1, const std::string& s2)
403{
404 return ( *(static_cast<const std::string *>(&s1)) == s2 );
405}
406
407
409
410inline bool
411operator==(const OksString& s1, const char *s2)
412{
413 return (*(static_cast<const std::string *>(&s1)) == s2);
414}
415
416
418
419inline bool
420operator<(const OksString& s1, const OksString& s2)
421{
422 return ( *(static_cast<const std::string *>(&s1)) < *(static_cast<const std::string *>(&s2)) );
423}
424
425
427
428inline std::ostream&
429operator<<(std::ostream& s, const OksString& str)
430{
431 s << *(static_cast<const std::string *>(&str));
432
433 return s;
434}
435
436
437 // forward declaration for private OKS structures declared in non-installing src/oks_utils.hpp
438
439 struct ReloadObjects;
440 struct ReadFileParams;
441
442
444
453
454struct OksData {
455 friend class OksObject;
456 friend class OksKernel;
457
458 public:
459
460 typedef std::list<OksData *, boost::fast_pool_allocator<OksData *> > List;
461
485
486 union Data {
487 int8_t S8_INT;
488 uint8_t U8_INT;
489 int16_t S16_INT;
490 uint16_t U16_INT;
491 int32_t S32_INT;
492 uint32_t U32_INT;
493 int64_t S64_INT;
494 uint64_t U64_INT;
495 float FLOAT;
496 double DOUBLE;
497 bool BOOL;
500 uint32_t DATE; // boost::gregorian::date => ugly, but member with constructor not allowed in union
501 uint64_t TIME; // boost::posix_time::ptime => ......................................................
504 struct {
508 struct {
512 const std::string * ENUMERATION;
514
516 OksData(int8_t c) {Clear2(); Set(c);}
517 OksData(uint8_t c) {Clear2(); Set(c);}
518 OksData(int16_t i) {Clear2(); Set(i);}
519 OksData(uint16_t i) {Clear2(); Set(i);}
520 OksData(int32_t i) {Clear2(); Set(i);}
521 OksData(uint32_t i) {Clear2(); Set(i);}
522 OksData(int64_t i) {Clear2(); Set(i);}
523 OksData(uint64_t i) {Clear2(); Set(i);}
524 OksData(const float& f) {Clear2(); Set(f);}
525 OksData(const double& d) {Clear2(); Set(d);}
526 OksData(bool b) {Clear2(); Set(b);}
527 OksData(boost::gregorian::date d) {Clear2(); Set(d);}
528 OksData(boost::posix_time::ptime t) {Clear2(); Set(t);}
530 OksData(const char *s) {Clear2(); Set(s);}
531 OksData(const std::string &s) {Clear2(); Set(s);}
532 OksData(const OksString &s) {Clear2(); Set(s);}
533 OksData(const char *s, size_t len, const OksAttribute *a) {Clear2(); SetE(s,len,a);}
534 OksData(const std::string &s, const OksAttribute *a){Clear2(); SetE(s,a);}
535 OksData(const OksString &s, const OksAttribute *a) {Clear2(); SetE(s,a);}
536 OksData(const OksClass * c) {Clear2(); Set(c);}
537 OksData(List *l) {Clear2(); Set(l);}
539 OksData(const OksClass *c, const char * o) {Clear(); Set(c, o);}
540 OksData(const OksClass *c, const OksString& o) {Clear(); Set(c, o);}
541 OksData(const std::string &c, const std::string &o) {Clear2(); Set(c, o);}
542
544
545 void Clear();
547
548 void Set(int8_t c) {Clear(); type = s8_int_type; data.S8_INT = c;}
549 void Set(uint8_t c) {Clear(); type = u8_int_type; data.U8_INT = c;}
550 void Set(int16_t i) {Clear(); type = s16_int_type; data.S16_INT = i;}
551 void Set(uint16_t i) {Clear(); type = u16_int_type; data.U16_INT = i;}
552 void Set(int32_t i) {Clear(); type = s32_int_type; data.S32_INT = i;}
553 void Set(uint32_t i) {Clear(); type = u32_int_type; data.U32_INT = i;}
554 void Set(int64_t i) {Clear(); type = s64_int_type; data.S64_INT = i;}
555 void Set(uint64_t i) {Clear(); type = u64_int_type; data.U64_INT = i;}
556 void Set(const float& f) {Clear(); type = float_type; data.FLOAT = f;}
557 void Set(const double& d) {Clear(); type = double_type; data.DOUBLE = d;}
558 void Set(bool b) {Clear(); type = bool_type; data.BOOL = b;}
559 void SetFast(boost::gregorian::date d);
560 void SetFast(boost::posix_time::ptime t);
561 void Set(boost::gregorian::date d) {Clear(); type = date_type; SetFast(d);}
562 void Set(boost::posix_time::ptime t) {Clear(); type = time_type; SetFast(t);}
563 void Set(OksString *s) {Clear(); type = string_type; data.STRING = s;}
564 void Set(const char *s) {Clear(); type = string_type; data.STRING = new OksString(s);}
565 void Set(const std::string &s) {Clear(); type = string_type; data.STRING = new OksString(s);}
566 void Set(const OksString &s) {Clear(); type = string_type; data.STRING = new OksString(s);}
567 void Set(const OksClass * c) {Clear(); type = class_type; data.CLASS = c;}
568 inline void SetE(OksString *s, const OksAttribute *a);
569 inline void SetE(const char *s, size_t len, const OksAttribute *a);
570 inline void SetE(const std::string &s, const OksAttribute *a);
571 inline void SetE(const OksAttribute *a);
572 inline void SetE(const OksString &s, const OksAttribute *a);
573 void Set(List * l) {Clear(); type = list_type; data.LIST = l;}
574 void Set(OksObject *o) {Clear(); type = object_type; data.OBJECT = o;}
575 void Set(const OksClass *c, const OksString& s) {Clear(); type = uid_type; data.UID.class_id = c; data.UID.object_id = new OksString(s);}
576 void Set(const OksClass *c, OksString* s) {Clear(); type = uid_type; data.UID.class_id = c; data.UID.object_id = s;}
577 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);}
578 void Set(OksString *c, OksString *s) {Clear(); type = uid2_type; data.UID2.class_id = c; data.UID2.object_id = s;}
579
584 inline void ReadFrom(const char *, Type, const OksAttribute *);
585
590 inline void ReadFrom(const std::string&, const OksAttribute *);
591
596 void SetNullValue(const OksAttribute * a);
597
602 void SetValue(const char * s, const OksAttribute * a);
603
608 void SetValues(const char *, const OksAttribute * a);
609
613 void ReadFrom(const OksRelationship *) noexcept;
614
615 void WriteTo(OksXmlOutputStream&, bool) const;
616
618
619 void ConvertTo(OksData *, const OksRelationship *) const;
620
621 boost::gregorian::date date() const noexcept;
622 boost::posix_time::ptime time() const noexcept;
623
624
639
640 void cvt(OksData * to, const OksAttribute * attr) const;
641
642 std::string str(int base = 0) const;
643 std::string str(const OksKernel *) const;
644
645
657
658 void check_range(const OksAttribute * a) const;
659
660
674
675 void set_init_value(const OksAttribute * attr, bool skip_init);
676
677 OksData& operator=(const OksData& d)
678 {
679 if(&d != this) {
680 Clear();
681 copy(d);
682 }
683
684 return *this;
685 }
686
687 OksData(const OksData& d)
688 {
689 if(&d != this) {
690 copy(d);
691 }
692 }
693
694 bool operator==(const OksData &) const;
695 bool operator!=(const OksData &) const;
696 bool operator<=(const OksData &) const; //report incompatible data types
697 bool operator>=(const OksData &) const; //report incompatible data types
698 bool operator<(const OksData &) const; //report incompatible data types
699 bool operator>(const OksData &) const; //report incompatible data types
700 friend std::ostream& operator<<(std::ostream&, const OksData&);
701 void* operator new(size_t) {return boost::fast_pool_allocator<OksData>::allocate();}
702 void operator delete(void *ptr) {boost::fast_pool_allocator<OksData>::deallocate(reinterpret_cast<OksData*>(ptr));}
703
704 void sort(bool ascending = true);
705
706 static bool is_object(Type t)
707 {
708 return (t == object_type || t == uid_type || t == uid2_type);
709 }
710
711 private:
712
713 void copy(const OksData &);
714
715 bool is_le(const OksData &) const noexcept; // fast version of operator<=(const OksData &)
716 bool is_ge(const OksData &) const noexcept; // fast version of operator>=(const OksData &)
717 bool is_l(const OksData &) const noexcept; // fast version of operator<(const OksData &)
718 bool is_g(const OksData &) const noexcept; // fast version of operator>(const OksData &)
719
721
722 void read(const oks::ReadFileParams&, const OksAttribute *, int32_t); // read mv attribute
723 void read(const oks::ReadFileParams&, const OksAttribute *); // read sv attribute
724 void read(const OksAttribute *, const OksXmlValue&); // read sv attribute for "data" format
725 void read(const OksAttribute *, const oks::ReadFileParams&); // read mv attribute for "data" format
726
727 void read(const oks::ReadFileParams&, const OksRelationship*, int32_t); // read mv relationship
728 void read(const oks::ReadFileParams&, const OksRelationship*); // read sv relationship
729 void read(const OksRelationship *, const OksXmlRelValue&); // read sv relationship for "data" format
730 void read(const OksRelationship *, const oks::ReadFileParams&); // read mv relationship for "data" format
731
732 OksData(const oks::ReadFileParams& params, const OksAttribute * a, int32_t n) {Clear2(); read(params, a, n);}
733 OksData(const oks::ReadFileParams& params, const OksAttribute * a) {Clear2(); read(params, a);}
734 OksData(const OksAttribute * a, const OksXmlValue& value) {Clear2(); read(a, value);}
735 OksData(const OksAttribute * a, const oks::ReadFileParams& params) {Clear2(); read(a, params);}
736
737 OksData(const oks::ReadFileParams& params, const OksRelationship *r, int32_t n) {Clear2(); read(params, r, n);}
738 OksData(const oks::ReadFileParams& params, const OksRelationship *r) {Clear2(); read(params, r);}
739 OksData(const OksRelationship * r, const OksXmlRelValue& value) {Clear2(); read(r, value);}
740 OksData(const OksRelationship * r, const oks::ReadFileParams& params) {Clear2(); read(r, params);}
741
742 void WriteTo(OksXmlOutputStream&, OksKernel *, OksAliasTable *, bool, bool) const;
743
744 bool IsConsistent(const OksRelationship *r, const OksObject *o, const char *msg);
745
746 const std::string& __oid() const;
747 const std::string& __cn() const;
748};
749
750
751inline void
752OksData::ReadFrom(const char * s, Type t, const OksAttribute * a)
753{
754 Clear();
755 type = t;
756 SetValue(s, a);
757}
758
759
766
767struct OksRCR {
768 friend class OksKernel;
769
770 public:
771
773 obj (o), relationship (r) {;}
774
775 void * operator new(size_t) {return boost::fast_pool_allocator<OksRCR>::allocate();}
776 void operator delete(void *ptr) {boost::fast_pool_allocator<OksRCR>::deallocate(reinterpret_cast<OksRCR*>(ptr));}
777
780
781};
782
783 struct hash_str
784 {
785 inline size_t operator() ( const std::string * x ) const {
786 return std::hash<std::string>()(*x);
787 }
788 };
789
791 {
792 inline bool operator()(const std::string * __x, const std::string * __y) const {
793 return ((__x == __y) || (*__x == *__y));
794 }
795 };
796
798 {
799 inline size_t operator() ( const OksObject * x ) const {
800 return reinterpret_cast<size_t>(x);
801 }
802 };
803
805 {
806 inline bool operator()(const OksObject * __x, const OksObject * __y) const {
807 return (__x == __y);
808 }
809 };
810
812 {
813 inline size_t operator() ( const OksClass * x ) const {
814 return reinterpret_cast<size_t>(x);
815 }
816 };
817
819 {
820 inline bool operator()(const OksClass * __x, const OksClass * __y) const {
821 return (__x == __y);
822 }
823 };
824
825 typedef std::unordered_set<const OksClass *, oks::hash_class_ptr, oks::equal_class_ptr> ClassSet;
826
827
839
841{
842 friend class OksClass;
843 friend struct OksData;
844 friend class OksKernel;
845 friend class OksIndex;
846 friend class OksObjectSortBy;
847 friend struct OksLoadObjectsJob;
848 friend struct oks::ReadFileParams;
849 friend struct oks::ReloadObjects;
850
851 public:
852
853 typedef void (*notify_obj)(OksObject *, void *);
854
856
857 struct SortById {
858 bool operator() (const std::string * s1, const std::string * s2) const {
859 return *s1 < *s2;
860 }
861 };
862
864
865 typedef std::map<const std::string *, OksObject *, SortById> SMap;
866
867
869
870 typedef std::unordered_map<const std::string *, OksObject *, oks::hash_str, oks::equal_str> Map;
871 typedef std::unordered_set<OksObject *, oks::hash_obj_ptr, oks::equal_obj_ptr> FSet;
872
873
875
876 typedef std::set<OksObject *, std::less<OksObject *> > Set;
877
879
880 typedef std::list<OksObject *> List;
881
882 typedef std::list<OksObject *, boost::fast_pool_allocator<OksObject *> > FList;
883
884
899
900 OksObject (const OksClass * oks_class, const char * object_id = 0, bool skip_init = false);
901
902
916
917 OksObject (const OksObject & parent_object, const char * object_id = 0);
918
919
933
934 static void destroy(OksObject * obj, bool fast = false);
935
936
944
945 bool operator==(const OksObject&) const;
946
947
956
957 static bool
958 are_equal_fast(const OksObject * o1, const OksObject * o2);
959
960 bool operator!=(const OksObject&) const = delete;
961
962
964
965 void * operator new(size_t) {return boost::fast_pool_allocator<OksObject>::allocate();}
966
967
969
970 void operator delete(void *ptr) {boost::fast_pool_allocator<OksObject>::deallocate(reinterpret_cast<OksObject*>(ptr));}
971
972
980
981 friend std::ostream& operator<<(std::ostream& out, const OksObject & obj);
982
983
989
990 friend std::ostream& operator<<(std::ostream&, const OksObject *);
991
992
994
995 const OksClass * GetClass() const {return uid.class_id;}
996
997
999
1000 const std::string& GetId() const {return uid.object_id;}
1001
1002
1012
1013 void set_id(const std::string & id);
1014
1015
1017
1018 OksFile * get_file() const {return file;}
1019
1020
1033
1034 void set_file(OksFile * file, bool update_owner = true);
1035
1036
1051
1052 OksData * GetAttributeValue(const std::string& name) const;
1053
1054
1066
1067 OksData * GetAttributeValue(const OksDataInfo *i) const noexcept { return &(data[i->offset]); }
1068
1069
1084
1085 OksData * GetRelationshipValue(const std::string&) const;
1086
1087
1099
1100 OksData * GetRelationshipValue(const OksDataInfo *i) const noexcept { return &(data[i->offset]); }
1101
1102
1117
1118 void SetAttributeValue(const std::string& name, OksData * data);
1119
1120
1135
1136 void SetAttributeValue(const OksDataInfo * data_info, OksData * data);
1137
1138
1151
1152 void SetRelationshipValue(const std::string& name, OksData * data, bool skip_non_null_check = false);
1153
1154
1167
1168 void SetRelationshipValue(const OksDataInfo * data_info, OksData * data, bool skip_non_null_check = false);
1169
1170
1182
1183 void SetRelationshipValue(const std::string& name, OksObject * object);
1184
1185
1197
1198 void SetRelationshipValue(const OksDataInfo * data_info, OksObject * object);
1199
1200
1213
1214 void AddRelationshipValue(const std::string& name, OksObject * object);
1215
1216
1228
1229 void AddRelationshipValue(const OksDataInfo * data_info, OksObject * object);
1230
1231
1243
1244 void RemoveRelationshipValue(const std::string& name, OksObject * object);
1245
1246
1258
1259 void RemoveRelationshipValue(const OksDataInfo * data_info, OksObject * object);
1260
1261
1274
1275 void SetRelationshipValue(const std::string& rel_name, const std::string& class_name, const std::string& object_id);
1276
1277
1290
1291 void AddRelationshipValue(const std::string& rel_name, const std::string& class_name, const std::string& object_i);
1292
1293
1306
1307 void RemoveRelationshipValue(const std::string& rel_name, const std::string& class_name, const std::string& object_i);
1308
1309
1314
1315 const std::list<OksRCR *> * reverse_composite_rels() const {return p_rcr;}
1316
1317
1331
1332 FList * get_all_rels(const std::string& name = "*") const;
1333
1334
1339
1340 void SetTransientData(void *d) const {p_user_data = d;}
1341
1342
1347
1348 void * GetTransientData() const {return p_user_data;}
1349
1350
1355
1356 void set_int32_id(int32_t object_id) {p_int32_id = object_id;}
1357
1362
1363 int32_t get_int32_id() const {return p_int32_id;}
1364
1365
1366
1378
1379 bool SatisfiesQueryExpression(OksQueryExpression * query_exp) const;
1380
1381 bool satisfies(const OksObject * goal, const oks::QueryPathExpression& expresssion, OksObject::List& path) const;
1382 OksObject::List * find_path(const oks::QueryPath& query) const;
1383
1385 bool is_consistent(const std::set<OksFile *>&, const char * msg) const;
1386
1387
1389 std::string report_dangling_references() const;
1390
1392 void references(OksObject::FSet& refs, unsigned long recursion_depth, bool add_self = false, oks::ClassSet * classes = 0) const;
1393
1394
1395 bool is_duplicated() const { return (p_duplicated_object_id_idx != -1); }
1396
1397
1398 private:
1399
1400 // the struct OksUid is used to describe object unique identity
1401 // in form 'class_name@object_identity'
1402
1403 struct OksUid {
1405 std::string object_id;
1406
1407 OksUid() : class_id(0) {;}
1409
1411 std::list<OksRCR *> * p_rcr;
1412 mutable void * p_user_data;
1413 int32_t p_int32_id;
1416
1417
1418 // to be used by OksKernel only
1419
1420 ~OksObject();
1421
1422
1429
1430 static OksObject * read(const oks::ReadFileParams&);
1431 void __report_type_cvt_warning(const oks::ReadFileParams&, const OksAttribute&, const OksData&, const OksData::Type, int32_t) const;
1433 int32_t __get_num(const oks::ReadFileParams& params);
1434
1435
1436
1437 // these two are used by read() method
1438
1439 void read_body(const oks::ReadFileParams&, bool);
1440
1445 OksObject (const oks::ReadFileParams&, OksClass *, const std::string&);
1446
1447
1448
1449 // to be used by OksIndex only
1450
1451 OksObject (size_t, const OksData *);
1452
1453 // to be used by OksKernel only
1454
1455 OksObject (OksClass * c, const std::string& id, void * user_data, int32_t object_id, int32_t duplicated_object_id_idx, OksFile * f);
1456
1457 // is not implemented and must not be used
1458
1460
1461
1462 // these 3 methods are used by constructors
1463
1464 void init1(const OksFile * = 0);
1465 void init2(bool skip_init = false);
1466 void init3();
1467 void init3(OksClass *c);
1468
1469 void check_ids();
1470
1471
1472 public:
1473
1474 void add_RCR(OksObject *, const OksRelationship *);
1475 void remove_RCR(OksObject *, const OksRelationship *) noexcept;
1476
1477
1478 private:
1479
1480 inline void notify() {
1481 file->set_updated();
1482 change_notify();
1483 }
1484
1485 void check_class_type(const OksRelationship *, const OksClass *);
1486 void check_class_type(const OksRelationship *r, const OksObject *o) { if(o) { check_class_type(r, o->GetClass()); }}
1487 void check_non_null(const OksRelationship *, const OksObject *);
1488 void check_file_lock(const OksAttribute *, const OksRelationship *);
1489
1490
1491 void set_unique_id();
1492 void put(OksXmlOutputStream&, bool force_defaults) const;
1493 static void put_object_attributes(OksXmlOutputStream&, const OksData&);
1494
1495 // bind data and methods
1496
1502
1504
1505 void bind_objects();
1506 static void bind(OksData *, const BindInfo&);
1507
1508 void unbind_file(const OksFile *);
1509
1510
1511 // check and report to standard out missing file inclusion paths
1512
1513 bool check_links_and_report(const OksObject *, const std::set<OksFile *>&, const std::string&, const char *) const;
1514
1515
1516 // valid names of xml tags and attributes
1517
1518 static const char obj_xml_tag[];
1519 static const char obj2_xml_tag[];
1520 static const char attribute_xml_tag[];
1521 static const char relationship_xml_tag[];
1522 static const char class_xml_attribute[];
1523 static const char class2_xml_attribute[];
1524 static const char id_xml_attribute[];
1525 static const char id2_xml_attribute[];
1526 static const char name_xml_attribute[];
1527 static const char type_xml_attribute[];
1528 static const char num_xml_attribute[];
1529
1530 static const char value_xml_attribute[];
1531 static const char data_xml_tag[];
1532 static const char ref_xml_tag[];
1533
1535
1536 void create_notify();
1537 void change_notify();
1538 void delete_notify();
1539
1540};
1541
1542} // namespace oks
1543} // namespace dunedaq
1544
1545#endif
AddRcrError(const OksObject *obj, const std::string &name, const OksObject *p1, const OksObject *p2) noexcept
Definition object.hpp:326
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:328
static std::string fill(const OksData *d, const std::string &range)
AttributeRangeError(const OksData *d, const std::string &range) noexcept
Definition object.hpp:181
virtual ~AttributeRangeError() noexcept
Definition object.hpp:183
AttributeReadError(const char *type, const std::string &reason) noexcept
Definition object.hpp:209
AttributeReadError(const char *value, const char *type, const std::string &reason) noexcept
Definition object.hpp:203
virtual ~AttributeReadError() noexcept
Definition object.hpp:211
static std::string fill(const char *type, const std::string &reason)
AttributeReadError(const char *type, const exception &reason) noexcept
Definition object.hpp:206
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:200
FailedCreateObject(const OksObject *o, const exception &reason) noexcept
Definition object.hpp:73
virtual ~FailedCreateObject() noexcept
Definition object.hpp:78
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:66
virtual ~FailedDestoyObject() noexcept
Definition object.hpp:164
FailedDestoyObject(const OksObject *o, const std::string &reason) noexcept
Definition object.hpp:162
FailedDestoyObject(const OksObject *o, const exception &reason) noexcept
Definition object.hpp:159
static std::string fill(const OksObject *o, const std::string &reason)
Definition object.cpp:90
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:97
virtual ~FailedReadObject() noexcept
Definition object.hpp:99
static std::string fill(const OksObject *o, const std::string &what, const std::string &reason)
Definition object.cpp:58
static std::string fill(const OksObject *o, const std::string &reason)
Definition object.cpp:82
FailedRenameObject(const OksObject *o, const std::string &reason) noexcept
Definition object.hpp:140
FailedRenameObject(const OksObject *o, const exception &reason) noexcept
Definition object.hpp:137
virtual ~FailedRenameObject() noexcept
Definition object.hpp:142
virtual ~FailedSaveObject() noexcept
Definition object.hpp:120
static std::string fill(const OksObject *o, const std::string &reason)
Definition object.cpp:74
FailedSaveObject(const OksObject *o, const exception &reason) noexcept
Definition object.hpp:115
FailedSaveObject(const OksObject *o, const std::string &reason) noexcept
Definition object.hpp:118
ObjectBindError(const OksObject *obj, const OksData *data, const OksRelationship *rel, bool is_error, const std::string &why, const exception &reason) noexcept
Definition object.hpp:296
virtual ~ObjectBindError() noexcept
Definition object.hpp:305
std::string fill(const OksObject *obj, const OksRelationship *rel, const std::string &why, const std::string &reason)
Definition object.cpp:130
const OksRelationship * p_rel
Definition object.hpp:308
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:301
virtual ~ObjectGetError() noexcept
Definition object.hpp:256
ObjectGetError(const OksObject *obj, bool is_rel, const std::string &name, const exception &reason) noexcept
Definition object.hpp:251
ObjectGetError(const OksObject *obj, bool is_rel, const std::string &name, const std::string &reason) noexcept
Definition object.hpp:254
static std::string fill(const OksObject *obj, bool is_rel, const std::string &name, const std::string &reason)
Definition object.cpp:106
virtual ~ObjectInitError() noexcept
Definition object.hpp:278
ObjectInitError(const OksObject *obj, const std::string &why, const std::string &reason) noexcept
Definition object.hpp:276
ObjectInitError(const OksObject *obj, const std::string &why, const exception &reason) noexcept
Definition object.hpp:273
static std::string fill(const OksObject *obj, const std::string &why, const std::string &reason)
Definition object.cpp:122
ObjectSetError(const OksObject *obj, bool is_rel, const std::string &name, const std::string &reason) noexcept
Definition object.hpp:232
virtual ~ObjectSetError() noexcept
Definition object.hpp:234
ObjectSetError(const OksObject *obj, bool is_rel, const std::string &name, const exception &reason) noexcept
Definition object.hpp:229
static std::string fill(const OksObject *obj, bool is_rel, const std::string &name, const std::string &reason)
Definition object.cpp:98
OKS attribute class.
The OKS class.
Definition class.hpp:205
Provides interface to the OKS XML schema and data files.
Definition file.hpp:345
Provides interface to the OKS kernel.
Definition kernel.hpp:582
OKS method class.
Definition method.hpp:158
OksObject describes instance of OksClass.
Definition object.hpp:841
friend class OksObjectSortBy
Definition object.hpp:846
struct dunedaq::oks::OksObject::OksUid uid
friend class OksClass
Definition object.hpp:842
bool operator!=(const OksObject &) const =delete
static void destroy(OksObject *obj, bool fast=false)
Destroy OKS object.
Definition object.cpp:1306
void AddRelationshipValue(const std::string &name, OksObject *object)
Add object value to multi-value relationship by name.
Definition object.cpp:2341
void RemoveRelationshipValue(const std::string &name, OksObject *object)
Remove object value from multi-value relationship by name.
Definition object.cpp:2394
void __report_type_cvt_warning(const oks::ReadFileParams &, const OksAttribute &, const OksData &, const OksData::Type, int32_t) const
Definition object.cpp:456
void check_file_lock(const OksAttribute *, const OksRelationship *)
Definition object.cpp:3196
void put(OksXmlOutputStream &, bool force_defaults) const
Definition object.cpp:1785
std::list< OksRCR * > * p_rcr
Definition object.hpp:1411
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:1315
friend struct OksLoadObjectsJob
Definition object.hpp:847
OksData * GetRelationshipValue(const std::string &) const
Get value of relationship by name.
Definition object.cpp:2009
bool is_duplicated() const
Definition object.hpp:1395
void check_class_type(const OksRelationship *r, const OksObject *o)
Definition object.hpp:1486
static const char class2_xml_attribute[]
Definition object.hpp:1523
std::list< OksObject * > List
Definition object.hpp:880
friend std::ostream & operator<<(std::ostream &out, const OksObject &obj)
Detailed stream operator.
Definition object.cpp:1655
static const char relationship_xml_tag[]
Definition object.hpp:1521
friend struct OksData
Definition object.hpp:843
void references(OksObject::FSet &refs, unsigned long recursion_depth, bool add_self=false, oks::ClassSet *classes=0) const
Definition object.cpp:3115
OksFile * get_file() const
Definition object.hpp:1018
void init1(const OksFile *=0)
Definition object.cpp:187
static const char attribute_xml_tag[]
Definition object.hpp:1520
static const char obj2_xml_tag[]
Definition object.hpp:1519
friend class OksIndex
Definition object.hpp:845
OksData * GetRelationshipValue(const OksDataInfo *i) const noexcept
Get value of relationship by offset.
Definition object.hpp:1100
static void put_object_attributes(OksXmlOutputStream &, const OksData &)
Definition object.cpp:1759
void __report_cardinality_cvt_warning(const oks::ReadFileParams &, const OksRelationship &) const
Definition object.cpp:490
static const char value_xml_attribute[]
Definition object.hpp:1530
std::string report_dangling_references() const
Definition object.cpp:2962
void SetRelationshipValue(const std::string &name, OksData *data, bool skip_non_null_check=false)
Set value of relationship by name.
Definition object.cpp:2194
void read_body(const oks::ReadFileParams &, bool)
Definition object.cpp:518
int32_t __get_num(const oks::ReadFileParams &params)
Definition object.cpp:507
void add_RCR(OksObject *, const OksRelationship *)
Definition object.cpp:2579
void check_class_type(const OksRelationship *, const OksClass *)
Definition object.cpp:2036
std::unordered_set< OksObject *, oks::hash_obj_ptr, oks::equal_obj_ptr > FSet
Definition object.hpp:871
static const char id_xml_attribute[]
Definition object.hpp:1524
void set_file(OksFile *file, bool update_owner=true)
Move object to different file.
Definition object.cpp:1489
bool satisfies(const OksObject *goal, const oks::QueryPathExpression &expresssion, OksObject::List &path) const
Definition query.cpp:955
OksObject & operator=(const OksObject &)
static const char obj_xml_tag[]
Definition object.hpp:1518
friend class OksKernel
Definition object.hpp:844
void(* notify_obj)(OksObject *, void *)
Definition object.hpp:853
static OksObject * read(const oks::ReadFileParams &)
Definition object.cpp:368
FList * get_all_rels(const std::string &name="*") const
Return objects referencing this one via relationship with given name.
Definition object.cpp:3134
void * GetTransientData() const
Get transient user data associated with given object. Return data set using SetTransientData() method...
Definition object.hpp:1348
void check_non_null(const OksRelationship *, const OksObject *)
Definition object.cpp:2024
void unbind_file(const OksFile *)
Definition object.cpp:2830
OksObject(const OksClass *oks_class, const char *object_id=0, bool skip_init=false)
OKS object constructor.
Definition object.cpp:1180
static const char id2_xml_attribute[]
Definition object.hpp:1525
static const char num_xml_attribute[]
Definition object.hpp:1528
std::list< OksObject *, boost::fast_pool_allocator< OksObject * > > FList
Definition object.hpp:882
const OksClass * GetClass() const
Definition object.hpp:995
static bool are_equal_fast(const OksObject *o1, const OksObject *o2)
The fast equal method.
Definition object.cpp:1605
static const char class_xml_attribute[]
Definition object.hpp:1522
static void bind(OksData *, const BindInfo &)
Definition object.cpp:2631
OksObject::List * find_path(const oks::QueryPath &query) const
Definition query.cpp:941
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:1356
static const char name_xml_attribute[]
Definition object.hpp:1526
void set_id(const std::string &id)
Set object ID.
Definition object.cpp:1511
void remove_RCR(OksObject *, const OksRelationship *) noexcept
Definition object.cpp:2607
static const char type_xml_attribute[]
Definition object.hpp:1527
std::map< const std::string *, OksObject *, SortById > SMap
Definition object.hpp:865
notify_obj get_change_notify() const
Definition object.cpp:2874
std::unordered_map< const std::string *, OksObject *, oks::hash_str, oks::equal_str > Map
Definition object.hpp:870
static const char data_xml_tag[]
Definition object.hpp:1531
void init2(bool skip_init=false)
Definition object.cpp:280
bool is_consistent(const std::set< OksFile * > &, const char *msg) const
Definition object.cpp:2993
void SetAttributeValue(const std::string &name, OksData *data)
Set value of attribute by name.
Definition object.cpp:1995
bool check_links_and_report(const OksObject *, const std::set< OksFile * > &, const std::string &, const char *) const
Definition object.cpp:2921
bool SatisfiesQueryExpression(OksQueryExpression *query_exp) const
Check if object satisfies query expression.
Definition query.cpp:635
bool operator==(const OksObject &) const
The equality operator.
Definition object.cpp:1617
OksData * GetAttributeValue(const OksDataInfo *i) const noexcept
Get value of attribute by offset.
Definition object.hpp:1067
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:1340
static const char ref_xml_tag[]
Definition object.hpp:1532
const std::string & GetId() const
Definition object.hpp:1000
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:1363
std::set< OksObject *, std::less< OksObject * > > Set
Definition object.hpp:876
int32_t p_duplicated_object_id_idx
Definition object.hpp:1414
OksData * GetAttributeValue(const std::string &name) const
Get value of attribute by name.
Definition object.cpp:1924
OKS query expression class.
Definition query.hpp:112
Class OKS string.
Definition object.hpp:374
OksString()
to deallocate memory when destroyed
Definition object.hpp:379
OksString(const std::string &s, std::string::size_type n)
Definition object.hpp:383
OksString(const char *s)
Definition object.hpp:381
friend class OksKernel
Definition object.hpp:375
OksString(const char *s, size_t n)
Definition object.hpp:382
OksString(const std::string &s)
Definition object.hpp:380
virtual const char * what() const noexcept
exception(const std::string &what_arg, int level_arg) noexcept
Definition xml.cpp:42
caught dunedaq::conffwk::Exception exception
bool operator<(const OksString &s1, const OksString &s2)
Implementation of OksString logical less operator.
Definition object.hpp:420
bool operator==(const OksString &s1, const OksString &s2)
Implementation of OksString logical equality operator.
Definition object.hpp:393
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:825
Including Qt Headers.
Definition module.cpp:16
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:451
Struct OKS data information.
Definition object.hpp:347
std::map< std::string, OksDataInfo * > Map
Declare map of pointers to OksDataInfo (unsorted by name).
Definition object.hpp:351
OksDataInfo(size_t o, const OksRelationship *r)
Definition object.hpp:357
OksDataInfo(size_t o, const OksAttribute *a)
Constructors.
Definition object.hpp:356
const OksAttribute * attribute
Definition object.hpp:360
const OksRelationship * relationship
Definition object.hpp:361
the structure to pass common parameters to various read() methods of OksData and OksObject class
Definition object.hpp:454
OksData(const OksClass *c, const OksString &o)
Definition object.hpp:540
void Set(int8_t c)
Definition object.hpp:548
void Set(const OksClass *c, const OksString &s)
Definition object.hpp:575
OksData(const OksRelationship *r, const oks::ReadFileParams &params)
Definition object.hpp:740
void sort(bool ascending=true)
OksData(boost::gregorian::date d)
Definition object.hpp:527
OksData(const oks::ReadFileParams &params, const OksRelationship *r)
Definition object.hpp:738
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:564
void cvt(OksData *to, const OksAttribute *attr) const
Convert data to new type.
void Set(const OksString &c, const OksString &s)
Definition object.hpp:577
void WriteTo(OksXmlOutputStream &, OksKernel *, OksAliasTable *, bool, bool) const
OksData(OksObject *o)
Definition object.hpp:538
void read(const OksAttribute *, const oks::ReadFileParams &)
OksData(OksString *s)
Definition object.hpp:529
union dunedaq::oks::OksData::Data data
boost::gregorian::date date() const noexcept
void Set(OksString *s)
Definition object.hpp:563
std::list< OksData *, boost::fast_pool_allocator< OksData * > > List
Definition object.hpp:460
boost::posix_time::ptime time() const noexcept
void Set(uint16_t i)
Definition object.hpp:551
void Set(boost::gregorian::date d)
Definition object.hpp:561
void copy(const OksData &)
void Set(uint32_t i)
Definition object.hpp:553
OksData(const OksData &d)
Definition object.hpp:687
void read(const OksRelationship *, const OksXmlRelValue &)
OksData(const OksAttribute *a, const oks::ReadFileParams &params)
Definition object.hpp:735
void Set(const OksClass *c, OksString *s)
Definition object.hpp:576
void Set(const double &d)
Definition object.hpp:557
void Set(int64_t i)
Definition object.hpp:554
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:532
void Set(boost::posix_time::ptime t)
Definition object.hpp:562
void read(const oks::ReadFileParams &, const OksRelationship *)
OksData(const oks::ReadFileParams &params, const OksAttribute *a, int32_t n)
Definition object.hpp:732
void SetValue(const char *s, const OksAttribute *a)
void read(const oks::ReadFileParams &, const OksAttribute *)
OksData(const OksClass *c)
Definition object.hpp:536
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:539
void WriteTo(OksXmlOutputStream &, bool) const
void Set(const OksClass *c)
Definition object.hpp:567
friend class OksKernel
Definition object.hpp:456
const std::string & __oid() const
void Set(int32_t i)
Definition object.hpp:552
void Set(OksObject *o)
Definition object.hpp:574
bool is_g(const OksData &) const noexcept
bool operator>(const OksData &) const
void Set(int16_t i)
Definition object.hpp:550
OksData(const oks::ReadFileParams &params, const OksAttribute *a)
Definition object.hpp:733
OksData(uint32_t i)
Definition object.hpp:521
const std::string & __cn() const
void SetValues(const char *, const OksAttribute *a)
OksData(const std::string &c, const std::string &o)
Definition object.hpp:541
enum dunedaq::oks::OksData::Type type
void Set(uint64_t i)
Definition object.hpp:555
void Set(const OksString &s)
Definition object.hpp:566
void Set(OksString *c, OksString *s)
Definition object.hpp:578
void ConvertTo(OksData *, const OksRelationship *) const
void Set(const std::string &s)
Definition object.hpp:565
static bool is_object(Type t)
Definition object.hpp:706
OksData(const char *s, size_t len, const OksAttribute *a)
Definition object.hpp:533
OksData(const double &d)
Definition object.hpp:525
OksData(const OksRelationship *r, const OksXmlRelValue &value)
Definition object.hpp:739
void Set(List *l)
Definition object.hpp:573
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:519
void set_init_value(const OksAttribute *attr, bool skip_init)
Set value defined by initial value of attribute.
Definition object.cpp:247
void SetFast(boost::gregorian::date d)
OksData(const float &f)
Definition object.hpp:524
bool operator!=(const OksData &) const
OksData(const oks::ReadFileParams &params, const OksRelationship *r, int32_t n)
Definition object.hpp:737
friend class OksObject
Definition object.hpp:455
OksData(const char *s)
Definition object.hpp:530
void Set(const float &f)
Definition object.hpp:556
bool operator==(const OksData &) const
bool is_le(const OksData &) const noexcept
OksData(const OksString &s, const OksAttribute *a)
Definition object.hpp:535
OksData(const std::string &s, const OksAttribute *a)
Definition object.hpp:534
bool IsConsistent(const OksRelationship *r, const OksObject *o, const char *msg)
void Set(uint8_t c)
Definition object.hpp:549
OksData(const std::string &s)
Definition object.hpp:531
void ReadFrom(const OksRelationship *) noexcept
void WriteTo(OksXmlOutputStream &) const
OksData(uint64_t i)
Definition object.hpp:523
void ReadFrom(const char *, Type, const OksAttribute *)
Definition object.hpp:752
bool is_l(const OksData &) const noexcept
bool is_ge(const OksData &) const noexcept
OksData(const OksAttribute *a, const OksXmlValue &value)
Definition object.hpp:734
OksData(boost::posix_time::ptime t)
Definition object.hpp:528
bool operator<=(const OksData &) const
bool operator<(const OksData &) const
void Set(bool b)
Definition object.hpp:558
bool operator()(const std::string *s1, const std::string *s2) const
Definition object.hpp:858
OksObject * obj
Definition object.hpp:778
friend class OksKernel
Definition object.hpp:768
OksRCR(OksObject *o, const OksRelationship *r)
Definition object.hpp:772
const OksRelationship * relationship
Definition object.hpp:779
bool operator()(const OksClass *__x, const OksClass *__y) const
Definition object.hpp:820
bool operator()(const OksObject *__x, const OksObject *__y) const
Definition object.hpp:806
bool operator()(const std::string *__x, const std::string *__y) const
Definition object.hpp:792
size_t operator()(const OksClass *x) const
Definition object.hpp:813
size_t operator()(const OksObject *x) const
Definition object.hpp:799
size_t operator()(const std::string *x) const
Definition object.hpp:785
const OksClass * class_id
Definition object.hpp:505
const OksClass * CLASS
Definition object.hpp:498
struct dunedaq::oks::OksData::Data::@266171337063116272021017117226020166361213322350 UID
const std::string * ENUMERATION
Definition object.hpp:512
struct dunedaq::oks::OksData::Data::@226266061051241020017305361066131172152317024337 UID2