22 #ifndef __DAAL_SERIALIZE_H__
23 #define __DAAL_SERIALIZE_H__
25 #include "services/base.h"
26 #include "services/daal_memory.h"
27 #include "services/error_handling.h"
31 namespace data_management
42 class InputDataArchive;
43 class OutputDataArchive;
50 class DAAL_EXPORT SerializationIface :
public Base
53 virtual ~SerializationIface() {}
59 void serialize(interface1::InputDataArchive &archive);
65 void deserialize(interface1::OutputDataArchive &archive);
71 virtual int getSerializationTag()
const = 0;
77 virtual services::Status serializeImpl(interface1::InputDataArchive *archive) = 0;
83 virtual services::Status deserializeImpl(
const interface1::OutputDataArchive *archive) = 0;
88 class DAAL_EXPORT SerializationDesc
91 typedef SerializationIface* (*creatorFunc)();
92 SerializationDesc(creatorFunc func,
int tag);
93 int tag()
const {
return _tag; }
94 creatorFunc creator()
const {
return _f; }
95 const SerializationDesc* next()
const {
return _next; }
96 static const SerializationDesc* first();
101 SerializationDesc* _next;
107 using interface1::SerializationIface;
108 using interface1::SerializationDesc;
112 #define DECLARE_SERIALIZABLE_IMPL() \
113 services::Status serializeImpl (data_management::InputDataArchive *arch) DAAL_C11_OVERRIDE \
114 { return serialImpl<data_management::InputDataArchive, false>( arch ); } \
115 services::Status deserializeImpl(const data_management::OutputDataArchive *arch) DAAL_C11_OVERRIDE \
116 { return serialImpl<const data_management::OutputDataArchive, true>( arch ); }
118 #define DECLARE_SERIALIZABLE() \
120 static data_management::SerializationDesc _desc; \
122 DECLARE_SERIALIZABLE_IMPL() \
123 static int serializationTag(); \
124 virtual int getSerializationTag() const DAAL_C11_OVERRIDE;
126 #define DECLARE_SERIALIZABLE_IFACE() \
128 static data_management::SerializationDesc _desc; \
130 static int serializationTag(); \
131 virtual int getSerializationTag() const DAAL_C11_OVERRIDE;
133 #define DECLARE_SERIALIZABLE_TAG() \
135 static int serializationTag(); \
136 virtual int getSerializationTag() const DAAL_C11_OVERRIDE;
138 #define DECLARE_SERIALIZABLE_CAST(ClassName) \
139 DECLARE_SERIALIZABLE(); \
140 DAAL_CAST_OPERATOR(ClassName);
142 #define DECLARE_MODEL(DstClassName, SrcClassName) \
143 DECLARE_SERIALIZABLE(); \
144 DAAL_CAST_OPERATOR(DstClassName); \
145 DAAL_DOWN_CAST_OPERATOR(DstClassName, SrcClassName)
147 #define DECLARE_MODEL_IFACE(DstClassName, SrcClassName) \
148 DECLARE_SERIALIZABLE_IFACE(); \
149 DAAL_CAST_OPERATOR(DstClassName); \
150 DAAL_DOWN_CAST_OPERATOR(DstClassName, SrcClassName)
daal
Definition: algorithm_base_common.h:31
daal::data_management::interface1::OutputDataArchive
Provides methods to restore an object from its serialized counterpart and access the restored object...
Definition: data_archive.h:952
daal::Base
Base class for Intel(R) Data Analytics Acceleration Library objects
Definition: base.h:39
daal::data_management::interface1::SerializationIface
Abstract interface class that defines the interface for serialization and deserialization.
Definition: data_serialize.h:50