Added boost header
This commit is contained in:
104
test/external/boost/mpi/exception.hpp
vendored
Normal file
104
test/external/boost/mpi/exception.hpp
vendored
Normal file
@@ -0,0 +1,104 @@
|
||||
// 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)
|
||||
|
||||
/** @file exception.hpp
|
||||
*
|
||||
* This header provides exception classes that report MPI errors to
|
||||
* the user and macros that translate MPI error codes into Boost.MPI
|
||||
* exceptions.
|
||||
*/
|
||||
#ifndef BOOST_MPI_EXCEPTION_HPP
|
||||
#define BOOST_MPI_EXCEPTION_HPP
|
||||
|
||||
#include <boost/mpi/config.hpp>
|
||||
#include <exception>
|
||||
#include <string>
|
||||
#include <boost/config.hpp>
|
||||
#include <boost/throw_exception.hpp>
|
||||
|
||||
namespace boost { namespace mpi {
|
||||
|
||||
/** @brief Catch-all exception class for MPI errors.
|
||||
*
|
||||
* Instances of this class will be thrown when an MPI error
|
||||
* occurs. MPI failures that trigger these exceptions may or may not
|
||||
* be recoverable, depending on the underlying MPI
|
||||
* implementation. Consult the documentation for your MPI
|
||||
* implementation to determine the effect of MPI errors.
|
||||
*/
|
||||
class BOOST_MPI_DECL exception : public std::exception
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* Build a new @c exception exception.
|
||||
*
|
||||
* @param routine The MPI routine in which the error
|
||||
* occurred. This should be a pointer to a string constant: it
|
||||
* will not be copied.
|
||||
*
|
||||
* @param result_code The result code returned from the MPI
|
||||
* routine that aborted with an error.
|
||||
*/
|
||||
exception(const char* routine, int result_code);
|
||||
|
||||
virtual ~exception() throw();
|
||||
|
||||
/**
|
||||
* A description of the error that occurred.
|
||||
*/
|
||||
virtual const char * what () const throw ()
|
||||
{
|
||||
return this->message.c_str();
|
||||
}
|
||||
|
||||
/** Retrieve the name of the MPI routine that reported the error. */
|
||||
const char* routine() const { return routine_; }
|
||||
|
||||
/**
|
||||
* @brief Retrieve the result code returned from the MPI routine
|
||||
* that reported the error.
|
||||
*/
|
||||
int result_code() const { return result_code_; }
|
||||
|
||||
/**
|
||||
* @brief Returns the MPI error class associated with the error that
|
||||
* triggered this exception.
|
||||
*/
|
||||
int error_class() const
|
||||
{
|
||||
int result;
|
||||
MPI_Error_class(result_code_, &result);
|
||||
return result;
|
||||
}
|
||||
|
||||
protected:
|
||||
/// The MPI routine that triggered the error
|
||||
const char* routine_;
|
||||
|
||||
/// The failed result code reported by the MPI implementation.
|
||||
int result_code_;
|
||||
|
||||
/// The formatted error message
|
||||
std::string message;
|
||||
};
|
||||
|
||||
/**
|
||||
* Call the MPI routine MPIFunc with arguments Args (surrounded by
|
||||
* parentheses). If the result is not MPI_SUCCESS, use
|
||||
* boost::throw_exception to throw an exception or abort, depending on
|
||||
* BOOST_NO_EXCEPTIONS.
|
||||
*/
|
||||
#define BOOST_MPI_CHECK_RESULT( MPIFunc, Args ) \
|
||||
{ \
|
||||
int _check_result = MPIFunc Args; \
|
||||
if (_check_result != MPI_SUCCESS) \
|
||||
boost::throw_exception(boost::mpi::exception(#MPIFunc, \
|
||||
_check_result)); \
|
||||
}
|
||||
|
||||
} } // end namespace boost::mpi
|
||||
|
||||
#endif // BOOST_MPI_EXCEPTION_HPP
|
||||
Reference in New Issue
Block a user