11 Haziran 2017 Pazar

serialization BOOST_CLASS_VERSION

Giriş
Sınıfımıza vermek istediğimiz sürüm numarasıdır.
Örnek
Şöyle yaparız.
BOOST_CLASS_VERSION(EventSet, 1)
Çıktı olarak şunu alırız.
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE boost_serialization>
<boost_serialization signature="serialization::archive" version="10">
  <EventSet class_id="0" tracking_level="0" version="1">
    <Size>1</Size>
    <Event>
      ...
    </Event>
  </EventSet>
</boost_serialization>
Örnek
Sayı 8 bit olmalıdır. Elimizde şöyle bir int olsun
#define APP_INT_VERSION        10101     \\ version 1.1.1
Şöyle yaparız.
BOOST_CLASS_VERSION(MySerializedClass, APP_INT_VERSION)
Çıktı olarak şunu alırız.
// version numbers limited to 8 bits !!!
Örnek
Eğer bu macroyu kullanmak istemiyorsak şöyle yaparız.
#define APP_INT_VERSION        10101    

class gps_position
{
private:
  friend class boost::serialization::access;
  template<class Archive>
  void serialize(Archive & ar, const unsigned int version)
  {
    using boost::serialization::make_nvp;
    ar & make_nvp("deg", degrees);
    ar & make_nvp("min", minutes);
    ar & make_nvp("sec", seconds);
  }
  int degrees;
  int minutes;
  float seconds;
public:
  gps_position(){};
  gps_position(int d, int m, float s) :
    degrees(d), minutes(m), seconds(s)
  {}
};

namespace boost {                                                      
  namespace serialization {                                              
    template<>                                                             
    struct version<gps_position>
    {
      BOOST_STATIC_CONSTANT(int, value = APP_INT_VERSION);
    };                                                                     
  }                                                                      
}



Hiç yorum yok:

Yorum Gönder