summaryrefslogtreecommitdiffstats
path: root/contrib/restricted/boost/libs/python/src/errors.cpp
diff options
context:
space:
mode:
authorneksard <[email protected]>2022-02-10 16:45:33 +0300
committerDaniil Cherednik <[email protected]>2022-02-10 16:45:33 +0300
commit1d9c550e7c38e051d7961f576013a482003a70d9 (patch)
treeb2cc84ee7850122e7ccf51d0ea21e4fa7e7a5685 /contrib/restricted/boost/libs/python/src/errors.cpp
parent8f7cf138264e0caa318144bf8a2c950e0b0a8593 (diff)
Restoring authorship annotation for <[email protected]>. Commit 2 of 2.
Diffstat (limited to 'contrib/restricted/boost/libs/python/src/errors.cpp')
-rw-r--r--contrib/restricted/boost/libs/python/src/errors.cpp210
1 files changed, 105 insertions, 105 deletions
diff --git a/contrib/restricted/boost/libs/python/src/errors.cpp b/contrib/restricted/boost/libs/python/src/errors.cpp
index 4dff04e59c4..34ea22f43e9 100644
--- a/contrib/restricted/boost/libs/python/src/errors.cpp
+++ b/contrib/restricted/boost/libs/python/src/errors.cpp
@@ -1,105 +1,105 @@
-// Copyright David Abrahams 2001.
-// 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)
-
-#ifndef BOOST_PYTHON_SOURCE
-# define BOOST_PYTHON_SOURCE
-#endif
-
-#include <boost/python/errors.hpp>
-#include <boost/cast.hpp>
-#include <boost/python/detail/exception_handler.hpp>
-
-namespace boost { namespace python {
-
-error_already_set::~error_already_set() {}
-
-// IMPORTANT: this function may only be called from within a catch block!
-BOOST_PYTHON_DECL bool handle_exception_impl(function0<void> f)
-{
- try
- {
- if (detail::exception_handler::chain)
- return detail::exception_handler::chain->handle(f);
- f();
- return false;
- }
- catch(const boost::python::error_already_set&)
- {
- // The python error reporting has already been handled.
- }
- catch(const std::bad_alloc&)
- {
- PyErr_NoMemory();
- }
- catch(const bad_numeric_cast& x)
- {
- PyErr_SetString(PyExc_OverflowError, x.what());
- }
- catch(const std::out_of_range& x)
- {
- PyErr_SetString(PyExc_IndexError, x.what());
- }
- catch(const std::invalid_argument& x)
- {
- PyErr_SetString(PyExc_ValueError, x.what());
- }
- catch(const std::exception& x)
- {
- PyErr_SetString(PyExc_RuntimeError, x.what());
- }
- catch(...)
- {
- PyErr_SetString(PyExc_RuntimeError, "unidentifiable C++ exception");
- }
- return true;
-}
-
-void BOOST_PYTHON_DECL throw_error_already_set()
-{
- throw error_already_set();
-}
-
-namespace detail {
-
-bool exception_handler::operator()(function0<void> const& f) const
-{
- if (m_next)
- {
- return m_next->handle(f);
- }
- else
- {
- f();
- return false;
- }
-}
-
-exception_handler::exception_handler(handler_function const& impl)
- : m_impl(impl)
- , m_next(0)
-{
- if (chain != 0)
- tail->m_next = this;
- else
- chain = this;
- tail = this;
-}
-
-exception_handler* exception_handler::chain;
-exception_handler* exception_handler::tail;
-
-BOOST_PYTHON_DECL void register_exception_handler(handler_function const& f)
-{
- // the constructor links the new object into a handler chain, so
- // this object isn't actaully leaked (until, of course, the
- // interpreter exits).
- new exception_handler(f);
-}
-
-} // namespace boost::python::detail
-
-}} // namespace boost::python
-
-
+// Copyright David Abrahams 2001.
+// 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)
+
+#ifndef BOOST_PYTHON_SOURCE
+# define BOOST_PYTHON_SOURCE
+#endif
+
+#include <boost/python/errors.hpp>
+#include <boost/cast.hpp>
+#include <boost/python/detail/exception_handler.hpp>
+
+namespace boost { namespace python {
+
+error_already_set::~error_already_set() {}
+
+// IMPORTANT: this function may only be called from within a catch block!
+BOOST_PYTHON_DECL bool handle_exception_impl(function0<void> f)
+{
+ try
+ {
+ if (detail::exception_handler::chain)
+ return detail::exception_handler::chain->handle(f);
+ f();
+ return false;
+ }
+ catch(const boost::python::error_already_set&)
+ {
+ // The python error reporting has already been handled.
+ }
+ catch(const std::bad_alloc&)
+ {
+ PyErr_NoMemory();
+ }
+ catch(const bad_numeric_cast& x)
+ {
+ PyErr_SetString(PyExc_OverflowError, x.what());
+ }
+ catch(const std::out_of_range& x)
+ {
+ PyErr_SetString(PyExc_IndexError, x.what());
+ }
+ catch(const std::invalid_argument& x)
+ {
+ PyErr_SetString(PyExc_ValueError, x.what());
+ }
+ catch(const std::exception& x)
+ {
+ PyErr_SetString(PyExc_RuntimeError, x.what());
+ }
+ catch(...)
+ {
+ PyErr_SetString(PyExc_RuntimeError, "unidentifiable C++ exception");
+ }
+ return true;
+}
+
+void BOOST_PYTHON_DECL throw_error_already_set()
+{
+ throw error_already_set();
+}
+
+namespace detail {
+
+bool exception_handler::operator()(function0<void> const& f) const
+{
+ if (m_next)
+ {
+ return m_next->handle(f);
+ }
+ else
+ {
+ f();
+ return false;
+ }
+}
+
+exception_handler::exception_handler(handler_function const& impl)
+ : m_impl(impl)
+ , m_next(0)
+{
+ if (chain != 0)
+ tail->m_next = this;
+ else
+ chain = this;
+ tail = this;
+}
+
+exception_handler* exception_handler::chain;
+exception_handler* exception_handler::tail;
+
+BOOST_PYTHON_DECL void register_exception_handler(handler_function const& f)
+{
+ // the constructor links the new object into a handler chain, so
+ // this object isn't actaully leaked (until, of course, the
+ // interpreter exits).
+ new exception_handler(f);
+}
+
+} // namespace boost::python::detail
+
+}} // namespace boost::python
+
+