Skip to content
Snippets Groups Projects
NeuralNetworkSumSerialization.h 1.85 KiB
Newer Older

#ifndef LIB4NEURO_NEURALNETWORKSUMSERIALIZATION_H
#define LIB4NEURO_NEURALNETWORKSUMSERIALIZATION_H

#include <boost/serialization/base_object.hpp>
#include <boost/serialization/export.hpp>
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>

#include "../General/ExprtkWrapper.h"

#include "NeuralNetworkSum.h"
#include "NeuralNetworkSerialization.h"

//BOOST_CLASS_EXPORT_KEY(lib4neuro::NeuralNetworkSum);
    class NeuralNetworkSum::NeuralNetworkSumImpl {
    public:
        std::vector<NeuralNetwork*>* summand;
        std::vector<ExprtkWrapper*>* summand_coefficient;
    };

    struct NeuralNetworkSum::access {
        template<class Archive>
Martin Beseda's avatar
Martin Beseda committed
        static void serialize(Archive& ar,
                              NeuralNetworkSum& n,
                              const unsigned int version) {
            ar & boost::serialization::base_object<NeuralNetwork>(n);
            ar & n.p_impl->summand;
            ar & n.p_impl->summand_coefficient;

namespace boost {
    namespace serialization {

        /**
         * Serialization function
         * @tparam Archive Boost library template
         * @param ar Boost parameter - filled automatically during serialization!
         * @param n NeuralNetworkSum instance
         * @param version Boost parameter - filled automatically during serialization!
         */
        template<class Archive>
Martin Beseda's avatar
Martin Beseda committed
        void serialize(Archive& ar,
                       lib4neuro::NeuralNetworkSum& n,
                       const unsigned int version) {
            lib4neuro::NeuralNetworkSum::access::serialize(ar,
                                                           n,
                                                           version);
#endif //LIB4NEURO_NEURALNETWORKSUMSERIALIZATION_H