29 Mart 2017 Çarşamba

serialization BOOST_SERIALIZATION_SPLIT_MEMBER

Giriş
Eğer bu macro'yu kullanırsak serialize metodunu ikiye ayırabiliriz. Şu satırı dahil ederiz.
#include <boost/serialization/split_member.hpp>
İstersek şu satırı dahil ederiz.
#include <boost/serialization/access.hpp>
Örnek 1
Normalde şöyle yaparız.
class MyClass {

private:
  double value;

  friend class boost::serialization::access;
  template <class Archive>
  void serialize(Archive &ar, const unsigned int){
    ar & value;
  }
};
Ayırmak için şöyle yaparız.
class MyClass {

private:
  double value;

  friend class boost::serialization::access;
  template<class Archive>
  void save(Archive & ar, const unsigned int) const {
   ar & val;
  }
  template<class Archive>
  void load(Archive & ar, const unsigned int) const {
    ar & value;
  }

  BOOST_SERIALIZATION_SPLIT_MEMBER()
};
Örnek 2
Bu sefer macro an alt yerine en üstte. Şöyle yaparız.
struct values
{
  
  BOOST_SERIALIZATION_SPLIT_MEMBER();

  template<class Archive>
  void save(Archive & ar, const unsigned int version) const
  {
    ...
  }
  template<class Archive>
  void load(Archive & ar, const unsigned int version)
  {
    ...
  }
};

Hiç yorum yok:

Yorum Gönder