diff DEPENDENCIES/generic/include/boost/mpi/detail/broadcast_sc.hpp @ 16:2665513ce2d3

Add boost headers
author Chris Cannam
date Tue, 05 Aug 2014 11:11:38 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/DEPENDENCIES/generic/include/boost/mpi/detail/broadcast_sc.hpp	Tue Aug 05 11:11:38 2014 +0100
@@ -0,0 +1,41 @@
+// Copyright (C) 2005, 2006 Douglas Gregor <doug.gregor -at- gmail.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)
+
+// Allows broadcast of skeletons via proxy.
+
+// This header may only be included after both the broadcast.hpp and
+// and skeleton_and_content.hpp headers have been included.
+#ifndef BOOST_MPI_BROADCAST_SC_HPP
+#define BOOST_MPI_BROADCAST_SC_HPP
+
+namespace boost { namespace mpi {
+
+template<typename T>
+inline void
+broadcast(const communicator& comm, skeleton_proxy<T>& proxy, int root)
+{
+  const skeleton_proxy<T>& const_proxy(proxy);
+  broadcast(comm, const_proxy, root);
+}
+
+template<typename T>
+void
+broadcast(const communicator& comm, const skeleton_proxy<T>& proxy, int root)
+{
+  if (comm.rank() == root) {
+    packed_skeleton_oarchive oa(comm);
+    oa << proxy.object;
+    broadcast(comm, oa, root);
+  } else {
+    packed_skeleton_iarchive ia(comm);
+    broadcast(comm, ia, root);
+    ia >> proxy.object;
+  }
+}
+
+} } // end namespace boost::mpi
+
+#endif // BOOST_MPI_BROADCAST_SC_HPP