From a8ada68d2828c129e9132b412f443019f8ff4a43 Mon Sep 17 00:00:00 2001 From: Matthias Troyer Date: Thu, 10 Sep 2009 15:22:21 +0000 Subject: [PATCH] Templated string serialization on the char type [SVN r56138] --- include/boost/mpi/detail/binary_buffer_iprimitive.hpp | 3 ++- include/boost/mpi/detail/binary_buffer_oprimitive.hpp | 3 ++- include/boost/mpi/detail/packed_iprimitive.hpp | 5 +++-- include/boost/mpi/detail/packed_oprimitive.hpp | 5 +++-- include/boost/mpi/intercommunicator.hpp | 4 ++-- 5 files changed, 12 insertions(+), 8 deletions(-) diff --git a/include/boost/mpi/detail/binary_buffer_iprimitive.hpp b/include/boost/mpi/detail/binary_buffer_iprimitive.hpp index ccfae15..2bc028f 100644 --- a/include/boost/mpi/detail/binary_buffer_iprimitive.hpp +++ b/include/boost/mpi/detail/binary_buffer_iprimitive.hpp @@ -88,7 +88,8 @@ public: load_impl(&t, sizeof(T)); } - void load( std::string & s) + template + void load(std::basic_string & s) { unsigned int l; load(l); diff --git a/include/boost/mpi/detail/binary_buffer_oprimitive.hpp b/include/boost/mpi/detail/binary_buffer_oprimitive.hpp index 4d0d80e..facf360 100644 --- a/include/boost/mpi/detail/binary_buffer_oprimitive.hpp +++ b/include/boost/mpi/detail/binary_buffer_oprimitive.hpp @@ -79,7 +79,8 @@ public: save_impl(&t, sizeof(T)); } - void save(const std::string &s) + template + void save(const std::basic_string &s) { unsigned int l = static_cast(s.size()); save(l); diff --git a/include/boost/mpi/detail/packed_iprimitive.hpp b/include/boost/mpi/detail/packed_iprimitive.hpp index 58ba6bf..9471a00 100644 --- a/include/boost/mpi/detail/packed_iprimitive.hpp +++ b/include/boost/mpi/detail/packed_iprimitive.hpp @@ -86,7 +86,8 @@ public: load_impl(&t, get_mpi_datatype(t), 1); } - void load( std::string & s) + template + void load(std::basic_string & s) { unsigned int l; load(l); @@ -96,7 +97,7 @@ public: #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); + load_impl(const_cast(s.data()),get_mpi_datatype(CharType()),l); } private: diff --git a/include/boost/mpi/detail/packed_oprimitive.hpp b/include/boost/mpi/detail/packed_oprimitive.hpp index 84d06b5..eb7ba2f 100644 --- a/include/boost/mpi/detail/packed_oprimitive.hpp +++ b/include/boost/mpi/detail/packed_oprimitive.hpp @@ -77,11 +77,12 @@ public: save_impl(&t, get_mpi_datatype(t), 1); } - void save(const std::string &s) + template + void save(const std::basic_string &s) { unsigned int l = static_cast(s.size()); save(l); - save_impl(s.data(),MPI_CHAR,s.size()); + save_impl(s.data(),get_mpi_datatype(CharType()),s.size()); } private: diff --git a/include/boost/mpi/intercommunicator.hpp b/include/boost/mpi/intercommunicator.hpp index 8a1fd98..ad246b5 100644 --- a/include/boost/mpi/intercommunicator.hpp +++ b/include/boost/mpi/intercommunicator.hpp @@ -59,9 +59,9 @@ private: * underlying MPI_Comm. This operation is used for "casting" from a * communicator to an intercommunicator. */ - explicit intercommunicator(const shared_ptr& comm_ptr) + explicit intercommunicator(const shared_ptr& cp) { - this->comm_ptr = comm_ptr; + this->comm_ptr = cp; } public: