123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- #ifndef BOOST_MPI_COMMUNICATOR_SC_HPP
- #define BOOST_MPI_COMMUNICATOR_SC_HPP
- namespace boost { namespace mpi {
- template<typename T>
- void
- communicator::send(int dest, int tag, const skeleton_proxy<T>& proxy) const
- {
- packed_skeleton_oarchive ar(*this);
- ar << proxy.object;
- send(dest, tag, ar);
- }
- template<typename T>
- status
- communicator::recv(int source, int tag, const skeleton_proxy<T>& proxy) const
- {
- packed_skeleton_iarchive ar(*this);
- status result = recv(source, tag, ar);
- ar >> proxy.object;
- return result;
- }
- template<typename T>
- status communicator::recv(int source, int tag, skeleton_proxy<T>& proxy) const
- {
- packed_skeleton_iarchive ar(*this);
- status result = recv(source, tag, ar);
- ar >> proxy.object;
- return result;
- }
- template<typename T>
- request
- communicator::isend(int dest, int tag, const skeleton_proxy<T>& proxy) const
- {
- shared_ptr<packed_skeleton_oarchive>
- archive(new packed_skeleton_oarchive(*this));
- *archive << proxy.object;
- request result = isend(dest, tag, *archive);
- result.preserve(archive);
- return result;
- }
- } }
- #endif
|