x
Yes
No
Do you want to visit DriveHQ English website?
首页
产品服务
价格
免费试用
下载客户端
关于我们
云文件服务
|
云备份服务
|
FTP服务
|
企业邮箱服务
|
网站托管
|
客户端软件
云文件服务
云备份服务
FTP服务
企业级邮箱服务
网站托管
客户端软件
export.hpp - Hosted on DriveHQ Cloud IT Platform
返回上层目录
上传
下载
共享
发布
新建文件夹
新建文件
复制
剪切
删除
粘贴
评论
升级服务
路径: \\game3dprogramming\materials\GameFactory\GameFactoryDemo\references\boost_1_35_0\boost\serialization\export.hpp
旋转
特效
属性
历史版本
#ifndef BOOST_SERIALIZATION_EXPORT_HPP #define BOOST_SERIALIZATION_EXPORT_HPP // MS compatible compilers support #pragma once #if defined(_MSC_VER) && (_MSC_VER >= 1020) # pragma once #endif /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 // export.hpp: set traits of classes to be serialized // (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. // (C) Copyright 2006 David Abrahams - http://www.boost.org. // implementation of class export functionality. This is an alternative to // "forward declaration" method to provoke instantiation of derived classes // that are to be serialized through pointers. #include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
namespace boost { namespace archive { namespace detail { class basic_pointer_iserializer; class basic_pointer_oserializer; template
class pointer_iserializer; template
class pointer_oserializer; template
struct export_impl { static const basic_pointer_iserializer & enable_load(mpl::true_){ return pointer_iserializer
::get_instance(); } static const basic_pointer_oserializer & enable_save(mpl::true_){ return pointer_oserializer
::get_instance(); } inline static void enable_load(mpl::false_) {} inline static void enable_save(mpl::false_) {} }; template
struct guid_initializer { typedef typename boost::serialization::type_info_implementation
::type eti_type; static void export_register(const char *key) { eti_type::export_register(key); } static const guid_initializer& get_instance(char const* key) { static guid_initializer const instance(key); return instance; } BOOST_DLLEXPORT guid_initializer(const char *key = 0) BOOST_USED ; }; template
BOOST_DLLEXPORT guid_initializer
::guid_initializer(const char *key) { if(0 != key) export_register(key); // generates the statically-initialized objects whose constructors // register the information allowing serialization of T objects // through pointers to their base classes. instantiate_ptr_serialization((T*)0, 0); } // On many platforms, naming a specialization of this template is // enough to cause its argument to be instantiated. template
struct instantiate_function {}; template
struct ptr_serialization_support { # ifdef BOOST_MSVC virtual BOOST_DLLEXPORT void instantiate() BOOST_USED; # elif defined(__BORLANDC__) static void instantiate(); enum { x = sizeof(instantiate(),3) }; # else static void instantiate(); typedef instantiate_function< &ptr_serialization_support::instantiate > x; # endif }; template
BOOST_DLLEXPORT void ptr_serialization_support
::instantiate() { typedef mpl::not_
> concrete; export_impl
::enable_save( mpl::and_
()); export_impl
::enable_load( mpl::and_
()); } } // namespace detail } // namespace archive } // namespace boost #define BOOST_CLASS_EXPORT_GUID(T, K) \ namespace \ { \ ::boost::archive::detail::guid_initializer< T > const& \ BOOST_PP_CAT(boost_serialization_guid_initializer_, __LINE__) \ = ::boost::archive::detail::guid_initializer< T >::get_instance(K); \ } // the following is solely to support de-serialization of pointers serialized // under 1.32 #define BOOST_CLASS_EXPORT_GUID_1(T, K) \ namespace \ { \ ::boost::archive::detail::guid_initializer< T > const& \ BOOST_PP_CAT(boost_serialization_guid_initializer_, __LINE__ ## _1) \ = ::boost::archive::detail::guid_initializer< T >::get_instance(K); \ } #if BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3205)) // CodeWarrior fails to construct static members of class templates // when they are instantiated from within templates, so on that // compiler we ask users to specifically register base/derived class // relationships for exported classes. On all other compilers, use of // this macro is entirely optional. # define BOOST_SERIALIZATION_MWERKS_BASE_AND_DERIVED(Base,Derived) \ namespace \ { \ int BOOST_PP_CAT(boost_serialization_mwerks_init_, __LINE__) = \ (::boost::archive::detail::instantiate_ptr_serialization((Derived*)0,0), 3); \ int BOOST_PP_CAT(boost_serialization_mwerks_init2_, __LINE__) = ( \ ::boost::serialization::void_cast_register((Derived*)0,(Base*)0) \ , 3); \ } #else # define BOOST_SERIALIZATION_MWERKS_BASE_AND_DERIVED(Base,Derived) #endif // check for unnecessary export. T isn't polymorphic so there is no // need to export it. #define BOOST_CLASS_EXPORT_CHECK(T) \ BOOST_STATIC_WARNING( \ boost::serialization::type_info_implementation< T > \ ::type::is_polymorphic::value \ ); \ /**/ // the default exportable class identifier is the class name // the default list of archives types for which code id generated // are the originally included with this serialization system #define BOOST_CLASS_EXPORT(T) \ BOOST_CLASS_EXPORT_GUID( \ T, \ BOOST_PP_STRINGIZE(T) \ ) \ /**/ #endif // BOOST_SERIALIZATION_EXPORT_HPP
export.hpp
网页地址
文件地址
上一页
13/51
下一页
下载
( 7 KB )
Comments
Total ratings:
0
Average rating:
无评论
of 10
Would you like to comment?
Join now
, or
Logon
if you are already a member.