diff options
author | Anas Nashif <anas.nashif@intel.com> | 2012-10-30 12:57:26 -0700 |
---|---|---|
committer | Anas Nashif <anas.nashif@intel.com> | 2012-10-30 12:57:26 -0700 |
commit | 1a78a62555be32868418fe52f8e330c9d0f95d5a (patch) | |
tree | d3765a80e7d3b9640ec2e930743630cd6b9fce2b /boost/python/errors.hpp | |
download | boost-1a78a62555be32868418fe52f8e330c9d0f95d5a.tar.gz boost-1a78a62555be32868418fe52f8e330c9d0f95d5a.tar.bz2 boost-1a78a62555be32868418fe52f8e330c9d0f95d5a.zip |
Imported Upstream version 1.49.0upstream/1.49.0
Diffstat (limited to 'boost/python/errors.hpp')
-rw-r--r-- | boost/python/errors.hpp | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/boost/python/errors.hpp b/boost/python/errors.hpp new file mode 100644 index 0000000000..72960d9ea2 --- /dev/null +++ b/boost/python/errors.hpp @@ -0,0 +1,55 @@ +// (C) Copyright David Abrahams 2000. +// Distributed under 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) +// +// The author gratefully acknowleges the support of Dragon Systems, Inc., in +// producing this work. + +#ifndef ERRORS_DWA052500_H_ +# define ERRORS_DWA052500_H_ + +# include <boost/python/detail/prefix.hpp> +# include <boost/function/function0.hpp> + +namespace boost { namespace python { + +struct BOOST_PYTHON_DECL_EXCEPTION error_already_set +{ + virtual ~error_already_set(); +}; + +// Handles exceptions caught just before returning to Python code. +// Returns true iff an exception was caught. +BOOST_PYTHON_DECL bool handle_exception_impl(function0<void>); + +template <class T> +bool handle_exception(T f) +{ + return handle_exception_impl(function0<void>(boost::ref(f))); +} + +namespace detail { inline void rethrow() { throw; } } + +inline void handle_exception() +{ + handle_exception(detail::rethrow); +} + +BOOST_PYTHON_DECL void throw_error_already_set(); + +template <class T> +inline T* expect_non_null(T* x) +{ + if (x == 0) + throw_error_already_set(); + return x; +} + +// Return source if it is an instance of pytype; throw an appropriate +// exception otherwise. +BOOST_PYTHON_DECL PyObject* pytype_check(PyTypeObject* pytype, PyObject* source); + +}} // namespace boost::python + +#endif // ERRORS_DWA052500_H_ |