24 #ifndef __DAAL_SERIALIZE_H__
25 #define __DAAL_SERIALIZE_H__
27 #include "services/base.h"
28 #include "services/daal_memory.h"
29 #include "services/error_handling.h"
33 namespace data_management
44 class InputDataArchive;
45 class OutputDataArchive;
52 class DAAL_EXPORT SerializationIface :
public Base
55 virtual ~SerializationIface() {}
61 void serialize(interface1::InputDataArchive &archive);
67 void deserialize(interface1::OutputDataArchive &archive);
73 virtual int getSerializationTag()
const = 0;
79 virtual services::Status serializeImpl(interface1::InputDataArchive *archive) = 0;
85 virtual services::Status deserializeImpl(
const interface1::OutputDataArchive *archive) = 0;
90 class DAAL_EXPORT SerializationDesc
93 typedef SerializationIface* (*creatorFunc)();
94 SerializationDesc(creatorFunc func,
int tag);
95 int tag()
const {
return _tag; }
96 creatorFunc creator()
const {
return _f; }
97 const SerializationDesc* next()
const {
return _next; }
98 static const SerializationDesc* first();
103 const SerializationDesc* _next;
109 using interface1::SerializationIface;
110 using interface1::SerializationDesc;
114 #define DECLARE_SERIALIZABLE_IMPL() \
115 services::Status serializeImpl (data_management::InputDataArchive *arch) DAAL_C11_OVERRIDE \
116 { return serialImpl<data_management::InputDataArchive, false>( arch ); } \
117 services::Status deserializeImpl(const data_management::OutputDataArchive *arch) DAAL_C11_OVERRIDE \
118 { return serialImpl<const data_management::OutputDataArchive, true>( arch ); }
120 #define DECLARE_SERIALIZABLE() \
122 static data_management::SerializationDesc _desc; \
124 DECLARE_SERIALIZABLE_IMPL() \
125 static int serializationTag(); \
126 virtual int getSerializationTag() const DAAL_C11_OVERRIDE;
128 #define DECLARE_SERIALIZABLE_IFACE() \
130 static data_management::SerializationDesc _desc; \
132 static int serializationTag(); \
133 virtual int getSerializationTag() const DAAL_C11_OVERRIDE;
135 #define DECLARE_SERIALIZABLE_TAG() \
137 static int serializationTag(); \
138 virtual int getSerializationTag() const DAAL_C11_OVERRIDE;
140 #define DECLARE_SERIALIZABLE_CAST(ClassName) \
141 DECLARE_SERIALIZABLE(); \
142 DAAL_CAST_OPERATOR(ClassName);
144 #define DECLARE_MODEL(DstClassName, SrcClassName) \
145 DECLARE_SERIALIZABLE(); \
146 DAAL_CAST_OPERATOR(DstClassName); \
147 DAAL_DOWN_CAST_OPERATOR(DstClassName, SrcClassName)
149 #define DECLARE_MODEL_IFACE(DstClassName, SrcClassName) \
150 DECLARE_SERIALIZABLE_IFACE(); \
151 DAAL_CAST_OPERATOR(DstClassName); \
152 DAAL_DOWN_CAST_OPERATOR(DstClassName, SrcClassName)
daal::Base
Base class for Intel(R) Data Analytics Acceleration Library objects
Definition: base.h:41
daal::data_management::interface1::SerializationIface
Abstract interface class that defines the interface for serialization and deserialization.
Definition: data_serialize.h:52
daal::data_management::interface1::OutputDataArchive
Provides methods to restore an object from its serialized counterpart and access the restored object...
Definition: data_archive.h:988
daal::data_management::interface1::InputDataArchive
Provides methods to create an archive data object (serialized) and access this object.
Definition: data_archive.h:725