x
Yes
No
Do you want to visit DriveHQ English website?
首页
产品服务
价格
免费试用
下载客户端
关于我们
云文件服务
|
云备份服务
|
FTP服务
|
企业邮箱服务
|
网站托管
|
客户端软件
云文件服务
云备份服务
FTP服务
企业级邮箱服务
网站托管
客户端软件
packed_iprimitive.hpp - Hosted on DriveHQ Cloud IT Platform
返回上层目录
上传
下载
共享
发布
新建文件夹
新建文件
复制
剪切
删除
粘贴
评论
升级服务
路径: \\game3dprogramming\materials\GameFactory\GameFactoryDemo\references\boost_1_35_0\boost\mpi\detail\packed_iprimitive.hpp
旋转
特效
属性
历史版本
// (C) Copyright 2005 Matthias Troyer // 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) // Authors: Matthias Troyer #ifndef BOOST_MPI_PACKED_IPRIMITIVE_HPP #define BOOST_MPI_PACKED_IPRIMITIVE_HPP #include
#include
#include
// size_t #include
#include
#include
#include
#include
#include
#include
#include
namespace boost { namespace mpi { /// deserialization using MPI_Unpack class BOOST_MPI_DECL packed_iprimitive { public: /// the type of the buffer from which the data is unpacked upon deserialization typedef std::vector
> buffer_type; packed_iprimitive(buffer_type & b, MPI_Comm const & comm, int position = 0) : buffer_(b), comm(comm), position(position) { } void* address () { return &buffer_[0]; } void const* address () const { return &buffer_[0]; } const std::size_t& size() const { return size_ = buffer_.size(); } void resize(std::size_t s) { buffer_.resize(s); } void load_binary(void *address, std::size_t count) { load_impl(address,MPI_BYTE,count); } // fast saving of arrays of fundamental types template
void load_array(serialization::array
& x, unsigned int /* file_version */) { if (x.count()) load_impl(x.address(), get_mpi_datatype(*x.address()), x.count()); } typedef is_mpi_datatype
use_array_optimization; #ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS friend class archive::load_access; protected: #else public: #endif // default saving of primitives. template
void load( T & t) { load_impl(&t, get_mpi_datatype(t), 1); } void load( std::string & s) { unsigned int l; load(l); // borland de-allocator fixup #if BOOST_WORKAROUND(_RWSTD_VER, BOOST_TESTED_AT(20101)) if(NULL != s.data()) #endif s.resize(l); // note breaking a rule here - could be a problem on some platform load_impl(const_cast
(s.data()),MPI_CHAR,l); } private: void load_impl(void * p, MPI_Datatype t, int l) { BOOST_MPI_CHECK_RESULT(MPI_Unpack, (const_cast
(boost::serialization::detail::get_data(buffer_)), buffer_.size(), &position, p, l, t, comm)); } buffer_type & buffer_; mutable std::size_t size_; MPI_Comm comm; int position; }; } } // end namespace boost::mpi #endif // BOOST_MPI_PACKED_IPRIMITIVE_HPP
packed_iprimitive.hpp
网页地址
文件地址
上一页
15/18
下一页
下载
( 2 KB )
Comments
Total ratings:
0
Average rating:
无评论
of 10
Would you like to comment?
Join now
, or
Logon
if you are already a member.