Skip to content
Snippets Groups Projects
DataSetSerialization.h 1.56 KiB
//
// Created by martin on 9/18/18.
//

#ifndef LIB4NEURO_DATASETSERIALIZATION_H
#define LIB4NEURO_DATASETSERIALIZATION_H

#include <boost/serialization/base_object.hpp>
#include <boost/range/size_type.hpp>
#include <boost/serialization/vector.hpp>
#include <boost/serialization/utility.hpp>
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <boost/serialization/export.hpp>
#include <boost/serialization/shared_ptr.hpp>

#include "DataSet.h"

BOOST_CLASS_EXPORT_KEY(lib4neuro::DataSet);

namespace lib4neuro {
    struct DataSet::access {
        template<class Archive>
        static void serialize(Archive &ar, DataSet &ds, const unsigned int version) {
            ar & ds.n_elements;
            ar & ds.input_dim;
            ar & ds.output_dim;
            ar & ds.data;
            ar & ds.max_min_inp_val;
            ar & ds.normalization_strategy;
        }
    };
}

namespace boost {
    namespace serialization {

        /**
         * Serialization function
         * @tparam Archive Boost library template
         * @param ar Boost parameter - filled automatically during serialization!
         * @param ds DataSet instance
         * @param version Boost parameter - filled automatically during serialization!
         */
        template<class Archive>
        void serialize(Archive & ar, lib4neuro::DataSet & ds, const unsigned int version)
        {
            lib4neuro::DataSet::access::serialize(ar, ds, version);
        }

    } // namespace serialization
} // namespace boost

#endif //LIB4NEURO_DATASETSERIALIZATION_H