diff options
Diffstat (limited to 'src/boost/libs/mpi/src/python/py_exception.cpp')
-rw-r--r-- | src/boost/libs/mpi/src/python/py_exception.cpp | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/boost/libs/mpi/src/python/py_exception.cpp b/src/boost/libs/mpi/src/python/py_exception.cpp new file mode 100644 index 00000000..fee48c4d --- /dev/null +++ b/src/boost/libs/mpi/src/python/py_exception.cpp @@ -0,0 +1,54 @@ +// Copyright (C) 2006 Douglas Gregor <doug.gregor -at- gmail.com> +// Copyright (C) 2005 The Trustees of Indiana University. + +// 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: Douglas Gregor + +/** @file exception.cpp + * + * This file reflects the Boost.MPI @c mpi_error class into + * Python. + */ +#include <boost/python.hpp> +#include <boost/mpi/exception.hpp> +#include <string> +#include <boost/lexical_cast.hpp> +#include "utility.hpp" + +using namespace boost::python; +using namespace boost::mpi; + +namespace boost { namespace mpi { namespace python { + +extern const char* exception_docstring; +extern const char* exception_what_docstring; +extern const char* exception_routine_docstring; +extern const char* exception_result_code_docstring; + +str exception_str(const exception& e) +{ + return str(std::string(e.what()) + + " (code " + lexical_cast<std::string>(e.result_code())+")"); +} + +void export_exception() +{ + using boost::python::arg; + using boost::python::object; + + object type = + class_<exception> + ("Exception", exception_docstring, no_init) + .add_property("what", &exception::what, exception_what_docstring) + .add_property("routine", &exception::what, exception_routine_docstring) + .add_property("result_code", &exception::result_code, + exception_result_code_docstring) + .def("__str__", &exception_str) + ; + translate_exception<exception>::declare(type); +} + +} } } // end namespace boost::mpi::python |