HOPS
HOPS class reference
MHO_Serializable.hh
Go to the documentation of this file.
1 #ifndef MHO_Serializable_HH__
2 #define MHO_Serializable_HH__
3 
4 #include "MHO_ClassIdentity.hh"
5 #include "MHO_FileStreamer.hh"
6 #include "MHO_Types.hh"
7 
8 #include "MHO_UUID.hh"
9 #include "MHO_UUIDGenerator.hh"
10 
11 namespace hops
12 {
13 
26 {
27  public:
29  {
31  fObjectUUID = gen.GenerateUUID();
32  };
33 
34  MHO_Serializable(const MHO_UUID& uuid) { fObjectUUID = uuid; };
35 
36  MHO_Serializable(std::size_t n): fObjectUUID(){};
37 
38  virtual ~MHO_Serializable(){};
39 
46  virtual MHO_ClassVersion GetVersion() const { return 0; };
47 
54  virtual uint64_t GetSerializedSize() const = 0;
55 
61  MHO_UUID GetObjectUUID() const { return fObjectUUID; };
62 
68  void SetObjectUUID(const MHO_UUID& uuid) { fObjectUUID = uuid; };
69 
76  virtual MHO_UUID GetTypeUUID() const
77  {
78  if(fTypeUUID.is_empty())
79  {
80  fTypeUUID = DetermineTypeUUID();
81  }
82  return fTypeUUID;
83  }
84 
85  private:
92  virtual MHO_UUID DetermineTypeUUID() const = 0;
93 
94  MHO_UUID fObjectUUID;
95  mutable MHO_UUID fTypeUUID;
96 };
97 
98 } // namespace hops
99 
100 #endif
Class MHO_Serializable.
Definition: MHO_Serializable.hh:26
MHO_Serializable()
Definition: MHO_Serializable.hh:28
MHO_Serializable(const MHO_UUID &uuid)
Definition: MHO_Serializable.hh:34
virtual ~MHO_Serializable()
Definition: MHO_Serializable.hh:38
virtual MHO_ClassVersion GetVersion() const
Getter for version.
Definition: MHO_Serializable.hh:46
MHO_UUID GetObjectUUID() const
Getter for object uuid.
Definition: MHO_Serializable.hh:61
virtual MHO_UUID GetTypeUUID() const
Getter for type uuid.
Definition: MHO_Serializable.hh:76
MHO_Serializable(std::size_t n)
Definition: MHO_Serializable.hh:36
void SetObjectUUID(const MHO_UUID &uuid)
Setter for object uuid.
Definition: MHO_Serializable.hh:68
virtual uint64_t GetSerializedSize() const =0
Getter for serialized size.
Definition: MHO_UUIDGenerator.hh:23
MHO_UUID GenerateUUID()
Definition: MHO_UUIDGenerator.cc:20
Class MHO_UUID - a class for a 16 byte UUID (for object and type identification)
Definition: MHO_UUID.hh:27
bool is_empty() const
Definition: MHO_UUID.hh:168
Definition: MHO_ChannelLabeler.hh:17
uint32_t MHO_ClassVersion
Definition: MHO_ClassIdentity.hh:22