diff --git a/src/Neuron/NeuronSerialization.h b/src/Neuron/NeuronSerialization.h index c1fd0330e9c857a8efd88ac35eef9d36f618edb1..f2aca6f710e38feafe8b0f7cd9dde7a82eec2b92 100644 --- a/src/Neuron/NeuronSerialization.h +++ b/src/Neuron/NeuronSerialization.h @@ -13,14 +13,28 @@ #include "Neuron.h" BOOST_SERIALIZATION_ASSUME_ABSTRACT(lib4neuro::Neuron); - BOOST_CLASS_EXPORT_KEY(lib4neuro::Neuron); -struct lib4neuro::Neuron::access { - template<class Archive> - static void serialize(Archive &ar, lib4neuro::Neuron &n, const unsigned int version) {} -}; +BOOST_SERIALIZATION_ASSUME_ABSTRACT(lib4neuro::NeuronDifferentiable); +BOOST_CLASS_EXPORT_KEY(lib4neuro::NeuronDifferentiable); + +namespace lib4neuro { + struct Neuron::access { + template<class Archive> + static void serialize(Archive& ar, + Neuron& n, + const unsigned int version) {} + }; + struct NeuronDifferentiable::access { + template<class Archive> + static void serialize(Archive& ar, + NeuronDifferentiable& n, + const unsigned int version) { + ar & boost::serialization::base_object<Neuron>(n); + } + }; +} namespace boost { namespace serialization { @@ -38,6 +52,19 @@ namespace boost { lib4neuro::Neuron::access::serialize(ar, n, version); } + /** + * Serialization function + * @tparam Archive Boost library template + * @param ar Boost parameter - filled automatically during serialization! + * @param n NeuronDifferentiable instance + * @param version Boost parameter - filled automatically during serialization! + */ + template<class Archive> + void serialize(Archive & ar, lib4neuro::NeuronDifferentiable& n, const unsigned int version) + { + lib4neuro::NeuronDifferentiable::access::serialize(ar, n, version); + } + } // namespace serialization } // namespace boost