x
Yes
No
Do you want to visit DriveHQ English website?
Inicio
Características
Precios
Prueba gratuita
Software cliente
Acerca de nosotros
Servidor de archivos
|
Solución de copias de seguridad
|
Servidor FTP
|
Servidor de correo electrónico
|
Alojamiento web
|
Software cliente
Servidor de archivos
Solución de copia de seguridad
Servidor FTP
Servidor de correo electrónico
Alojamiento web
Software cliente
mpi_datatype_cache.hpp - Hosted on DriveHQ Cloud IT Platform
Arriba
Subir
Descargar
Compartir
Publicar
Nueva carpeta
Nuevo archivo
Copiar
Cortar
Eliminar
Pegar
Clasificación
Actualizar
Ruta de la carpeta: \\game3dprogramming\materials\GameFactory\GameFactoryDemo\references\boost_1_35_0\boost\mpi\detail\mpi_datatype_cache.hpp
Girar
Efecto
Propiedad
Historial
// (C) Copyright 2005 Matthias Troyer // 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) // Authors: Matthias Troyer #ifndef BOOST_MPI_DETAIL_TYPE_MPI_DATATYPE_CACHE_HPP #define BOOST_MPI_DETAIL_TYPE_MPI_DATATYPE_CACHE_HPP #include
#include
#include
#include
#include
#include
#include
#include
// The std::type_info::before function in Visual C++ 8.0 (and probably earlier) // incorrectly returns an "int" instead of a "bool". Then the compiler has the // audacity to complain when that "int" is converted to a "bool". Silence // this warning. #ifdef BOOST_MSVC # pragma warning(push) # pragma warning(disable : 4800) #endif namespace boost { namespace mpi { namespace detail { /// @brief comparison function object for two std::type_info pointers /// /// is implemented using the before() member function of the std::type_info /// class struct type_info_compare { bool operator()(std::type_info const* lhs, std::type_info const* rhs) const { return lhs->before(*rhs); } }; /// @brief a map of MPI data types, indexed by their type_info /// /// class BOOST_MPI_DECL mpi_datatype_map : private std::map
, public boost::noncopyable { public: mpi_datatype_map() {} ~mpi_datatype_map() { // do not free after call to MPI_FInalize int finalized=0; BOOST_MPI_CHECK_RESULT(MPI_Finalized,(&finalized)); if (!finalized) free(); } template
MPI_Datatype datatype(const T& x = T(), typename boost::enable_if
>::type* =0) { return get_mpi_datatype
(x); } template
MPI_Datatype datatype(const T& x =T(), typename boost::disable_if
>::type* =0 ) { BOOST_MPL_ASSERT((is_mpi_datatype
)); // check whether the type already exists std::type_info const* t = &typeid(T); const_iterator it = find(t); if(it ==end()) { // need to create a type mpi_datatype_oarchive ar(x); insert(std::make_pair(t,ar.get_mpi_datatype())); it = find(t); } return it->second; } private: // free all MPI data types void free() { // ignore errors in the destructor for (iterator it=begin(); it !=end(); ++it) MPI_Type_free(&(it->second)); } }; extern mpi_datatype_map mpi_datatype_cache; } } } // end namespace boost::mpi::detail #ifdef BOOST_MSVC # pragma warning(pop) #endif #endif // BOOST_MPI_DETAIL_TYPE_MPI_DATATYPE_CACHE_HPP
mpi_datatype_cache.hpp
Dirección de la página
Dirección del archivo
Anterior
12/18
Siguiente
Descargar
( 2 KB )
Comments
Total ratings:
0
Average rating:
No clasificado
of 10
Would you like to comment?
Join now
, or
Logon
if you are already a member.