ADTF  3.18.2
serializable_intf.h
Go to the documentation of this file.
1 
8 #ifndef _ADTF_UCOM_ANT_SERIALIZABLE_INTERFACE_INCLUDES_HEADER_
9 #define _ADTF_UCOM_ANT_SERIALIZABLE_INTERFACE_INCLUDES_HEADER_
10 
11 namespace adtf
12 {
13 namespace ucom
14 {
15 namespace ant
16 {
17 
18 #ifndef ADTF_SERIALIZER_VERSION
22 #define ADTF_SERIALIZER_VERSION(_class, currentversion) \
23  typedef _class serializer_type; \
24  struct serializer_info \
25  { \
26  static ::adtf::ucom::ISerializable::tSerializerVersion SerializerVersion() { return currentversion; } \
27  }; \
28  ::adtf::ucom::ISerializable::tSerializerVersion GetCurrentSerializerVersion() const\
29  { \
30  return serializer_type::serializer_info::SerializerVersion(); \
31  }
32 #endif //ADTF_SERIALIZER_VERSION
33 
39 class DOEXPORT ISerializable : public IClassInfo
40 {
41 public:
43  using tSerializerVersion = uint8_t;
44 public:
49  ADTF_IID(ISerializable, "serializable.ant.ucom.adtf.iid");
50 
51  public:
61  virtual tResult Serialize(IStream& pOutputStream) const = 0;
62 
72  virtual tResult Deserialize(const IStream& pInputStream) = 0;
73 
74  virtual tSerializerVersion GetCurrentSerializerVersion() const = 0;
75 
76  protected:
78  ~ISerializable() = default;
79 };
80 
81 }//namespace ant
82 
85 
86 }//namespace ucom
87 }//namespace adtf
88 
89 //*************************************************************************************************
90 #endif //_ADTF_UCOM_ANT_SERIALIZABLE_INTERFACE_INCLUDES_HEADER_
@ brief The IClassInfo interface provides a standardized way to access type information.
The ISerializable interface provides a generic way to implement object serialization.
ADTF_IID(ISerializable, "serializable.ant.ucom.adtf.iid")
Marks the ISerializable to be castable with the ucom_cast<>
virtual tResult Serialize(IStream &pOutputStream) const =0
Serialize object to stream.
~ISerializable()=default
Protected destructor --> Use implemented Destroy() instead of delete!
uint8_t tSerializerVersion
Defintion of Serializer Version Type.
virtual tResult Deserialize(const IStream &pInputStream)=0
Deserialize object from stream.
The IStream interface provides defines methods for streaming data.
Definition: stream_intf.h:84
ant::ISerializable ISerializable
Alias always bringing the latest version of ant::ISerializable into scope.
Namespace for entire ADTF SDK.