Skip to content
Snippets Groups Projects
NeuronSerialization.h 2.24 KiB
Newer Older
  • Learn to ignore specific revisions
  • 
    #ifndef LIB4NEURO_NEURON_SERIALIZATION_H
    #define LIB4NEURO_NEURON_SERIALIZATION_H
    
    #include <boost/archive/text_oarchive.hpp>
    #include <boost/archive/text_iarchive.hpp>
    #include <boost/serialization/assume_abstract.hpp>
    
    #include <boost/serialization/export.hpp>
    
    BOOST_SERIALIZATION_ASSUME_ABSTRACT(lib4neuro::Neuron);
    BOOST_CLASS_EXPORT_KEY(lib4neuro::Neuron);
    
    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 {
    
            /**
             * Serialization function
             * @tparam Archive Boost library template
             * @param ar Boost parameter - filled automatically during serialization!
             * @param n Neuron instance
             * @param version Boost parameter - filled automatically during serialization!
             */
            template<class Archive>
    
            void serialize(Archive & ar, lib4neuro::Neuron& n, const unsigned int version)
    
                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
    
    #endif //LIB4NEURO_NEURON_SERIALIZATION_H