Chris@16: // Copyright (C) 2005, 2006 Douglas Gregor . Chris@16: Chris@16: // Use, modification and distribution is subject to the Boost Software Chris@16: // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at Chris@16: // http://www.boost.org/LICENSE_1_0.txt) Chris@16: Chris@16: // Allows broadcast of skeletons via proxy. Chris@16: Chris@16: // This header may only be included after both the broadcast.hpp and Chris@16: // and skeleton_and_content.hpp headers have been included. Chris@16: #ifndef BOOST_MPI_BROADCAST_SC_HPP Chris@16: #define BOOST_MPI_BROADCAST_SC_HPP Chris@16: Chris@16: namespace boost { namespace mpi { Chris@16: Chris@16: template Chris@16: inline void Chris@16: broadcast(const communicator& comm, skeleton_proxy& proxy, int root) Chris@16: { Chris@16: const skeleton_proxy& const_proxy(proxy); Chris@16: broadcast(comm, const_proxy, root); Chris@16: } Chris@16: Chris@16: template Chris@16: void Chris@16: broadcast(const communicator& comm, const skeleton_proxy& proxy, int root) Chris@16: { Chris@16: if (comm.rank() == root) { Chris@16: packed_skeleton_oarchive oa(comm); Chris@16: oa << proxy.object; Chris@16: broadcast(comm, oa, root); Chris@16: } else { Chris@16: packed_skeleton_iarchive ia(comm); Chris@16: broadcast(comm, ia, root); Chris@16: ia >> proxy.object; Chris@16: } Chris@16: } Chris@16: Chris@16: } } // end namespace boost::mpi Chris@16: Chris@16: #endif // BOOST_MPI_BROADCAST_SC_HPP