⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serialization.hpp

📁 CGAL is a collaborative effort of several sites in Europe and Israel. The goal is to make the most i
💻 HPP
字号:
#ifndef BOOST_SERIALIZATION_SERIALIZATION_HPP#define BOOST_SERIALIZATION_SERIALIZATION_HPP// MS compatible compilers support #pragma once#if defined(_MSC_VER) && (_MSC_VER >= 1020)# pragma once#endif#if defined(_MSC_VER) && (_MSC_VER >= 1310)#  pragma warning (disable : 4675) // suppress ADL warning#endif#include <cstddef> // size_t#include <boost/config.hpp>#if defined(BOOST_NO_STDC_NAMESPACE)namespace std{     using ::size_t; } // namespace std#endif#include <boost/pfto.hpp>#include <boost/throw_exception.hpp>#include <boost/serialization/nvp.hpp>// incremented for each "release"#define BOOST_SERIALIZATION_LIBRARY_VERSION 19/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8// serialization.hpp: interface for serialization system.// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . // Use, modification and distribution is subject to the Boost Software// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at// http://www.boost.org/LICENSE_1_0.txt)//  See http://www.boost.org for updates, documentation, and revision history.//////////////////////////////////////////////////////////////////////// public interface to serialization. /////////////////////////////////////////////////////////////////////////////// layer 0 - intrusive verison// declared and implemented for each user defined class to be serialized////  template<Archive>//  serialize(Archive &ar, const unsigned int file_version){//      ar & base_object<base>(*this) & member1 & member2 ... ;//  }/////////////////////////////////////////////////////////////////////////////// layer 1 - layer that routes member access through the access class.// this is what permits us to grant access to private class member functions// by specifying friend class boost::serialization::access#include <boost/serialization/access.hpp>/////////////////////////////////////////////////////////////////////////////// layer 2 - default implementation of non-intrusive serialization.//// note the usage of function overloading to compensate that C++ does not// currently support Partial Template Specialization for function templates // We have declared the version number as "const unsigned long".  // Overriding templates for specific data types should declare the version// number as "const unsigned int". Template matching will first be applied// to functions with the same version types - that is the overloads.  // If there is no declared function prototype that matches, the second argument// will be converted to "const unsigned long" and a match will be made with // one of the default template functions below.namespace boost {namespace serialization {// default implemenation - call the member function "serialize"template<class Archive, class T>inline void serialize(    Archive & ar, T & t, const BOOST_PFTO unsigned int file_version){    access::serialize(ar, t, static_cast<unsigned int>(file_version));}// save data required for constructiontemplate<class Archive, class T>inline void save_construct_data(    Archive & /*ar*/,     const T * /*t*/,     const BOOST_PFTO unsigned int /*file_version */){    // default is to save no data because default constructor    // requires no arguments.}// load data required for construction and invoke constructor in placetemplate<class Archive, class T>inline void load_construct_data(    Archive & ar,     T * t,     const BOOST_PFTO unsigned int /*file_version*/){    // default just uses the default constructor.  going    // through access permits usage of otherwise private default    // constructor    access::construct(ar, t);}/////////////////////////////////////////////////////////////////////////////// layer 3 - default implementation of non-intrusive serialization.//// trick to call serialize from within boost::serialization namspace// thus permitting serialize override to be in either of 3 namespace// 1) same namepace as Archive// 2) same namespace as T// 3) boost::serialization// Due to Martin Eckertemplate<class Archive, class T>inline void serialize_adl(    Archive & ar,     T & t,     const unsigned int file_version){    serialize(ar, t, file_version);}template<class Archive, class T>inline void save_construct_data_adl(    Archive & ar,     const T * t,     const unsigned int file_version){    save_construct_data(ar, t, file_version);}template<class Archive, class T>inline void load_construct_data_adl(    Archive & ar,     T * t,     const unsigned int file_version){    load_construct_data(ar, t, file_version);}} // namespace serialization} // namespace boost#endif //BOOST_SERIALIZATION_SERIALIZATION_HPP

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -