diff --git a/include/boost/mpi/communicator.hpp b/include/boost/mpi/communicator.hpp index c51494f..6467446 100644 --- a/include/boost/mpi/communicator.hpp +++ b/include/boost/mpi/communicator.hpp @@ -1148,6 +1148,115 @@ inline bool operator!=(const communicator& comm1, const communicator& comm2) /************************************************************************ * Implementation details * ************************************************************************/ + +/** + * INTERNAL ONLY (using the same 'end' name might be considerd unfortunate + */ +template<> +BOOST_MPI_DECL void +communicator::send(int dest, int tag, + const packed_oarchive& ar) const; + +/** + * INTERNAL ONLY + */ +template<> +BOOST_MPI_DECL void +communicator::send + (int dest, int tag, const packed_skeleton_oarchive& ar) const; + +/** + * INTERNAL ONLY + */ +template<> +BOOST_MPI_DECL void +communicator::send(int dest, int tag, const content& c) const; + +/** + * INTERNAL ONLY + */ +template<> +BOOST_MPI_DECL status +communicator::recv(int source, int tag, + packed_iarchive& ar) const; + +/** + * INTERNAL ONLY + */ +template<> +BOOST_MPI_DECL status +communicator::recv + (int source, int tag, packed_skeleton_iarchive& ar) const; + +/** + * INTERNAL ONLY + */ +template<> +BOOST_MPI_DECL status +communicator::recv(int source, int tag, + const content& c) const; + +/** + * INTERNAL ONLY + */ +template<> +inline status +communicator::recv(int source, int tag, + content& c) const +{ + return recv(source,tag,c); +} + +/** + * INTERNAL ONLY + */ +template<> +BOOST_MPI_DECL request +communicator::isend(int dest, int tag, + const packed_oarchive& ar) const; + +/** + * INTERNAL ONLY + */ +template<> +BOOST_MPI_DECL request +communicator::isend + (int dest, int tag, const packed_skeleton_oarchive& ar) const; + +/** + * INTERNAL ONLY + */ +template<> +BOOST_MPI_DECL request +communicator::isend(int dest, int tag, const content& c) const; + +/** + * INTERNAL ONLY + */ +template<> +BOOST_MPI_DECL request +communicator::irecv + (int source, int tag, packed_skeleton_iarchive& ar) const; + +/** + * INTERNAL ONLY + */ +template<> +BOOST_MPI_DECL request +communicator::irecv(int source, int tag, + const content& c) const; + +/** + * INTERNAL ONLY + */ +template<> +inline request +communicator::irecv(int source, int tag, + content& c) const +{ + return irecv(source, tag, c); +} + // Count elements in a message template inline optional status::count() const @@ -1768,115 +1877,6 @@ request communicator::irecv(int source, int tag, T* values, int n) const return this->array_irecv_impl(source, tag, values, n, is_mpi_datatype()); } -/** - * INTERNAL ONLY - */ -template<> -BOOST_MPI_DECL void -communicator::send(int dest, int tag, - const packed_oarchive& ar) const; - -/** - * INTERNAL ONLY - */ -template<> -BOOST_MPI_DECL void -communicator::send - (int dest, int tag, const packed_skeleton_oarchive& ar) const; - -/** - * INTERNAL ONLY - */ -template<> -BOOST_MPI_DECL void -communicator::send(int dest, int tag, const content& c) const; - -/** - * INTERNAL ONLY - */ -template<> -BOOST_MPI_DECL status -communicator::recv(int source, int tag, - packed_iarchive& ar) const; - -/** - * INTERNAL ONLY - */ -template<> -BOOST_MPI_DECL status -communicator::recv - (int source, int tag, packed_skeleton_iarchive& ar) const; - -/** - * INTERNAL ONLY - */ -template<> -BOOST_MPI_DECL status -communicator::recv(int source, int tag, - const content& c) const; - -/** - * INTERNAL ONLY - */ -template<> -inline status -communicator::recv(int source, int tag, - content& c) const -{ - return recv(source,tag,c); -} - -/** - * INTERNAL ONLY - */ -template<> -BOOST_MPI_DECL request -communicator::isend(int dest, int tag, - const packed_oarchive& ar) const; - -/** - * INTERNAL ONLY - */ -template<> -BOOST_MPI_DECL request -communicator::isend - (int dest, int tag, const packed_skeleton_oarchive& ar) const; - -/** - * INTERNAL ONLY - */ -template<> -BOOST_MPI_DECL request -communicator::isend(int dest, int tag, const content& c) const; - -/** - * INTERNAL ONLY - */ -template<> -BOOST_MPI_DECL request -communicator::irecv - (int source, int tag, packed_skeleton_iarchive& ar) const; - -/** - * INTERNAL ONLY - */ -template<> -BOOST_MPI_DECL request -communicator::irecv(int source, int tag, - const content& c) const; - -/** - * INTERNAL ONLY - */ -template<> -inline request -communicator::irecv(int source, int tag, - content& c) const -{ - return irecv(source, tag, c); -} - - } } // end namespace boost::mpi // If the user has already included skeleton_and_content.hpp, include