Chris@16: // Copyright David Abrahams 2002. Chris@16: // Distributed under the Boost Software License, Version 1.0. (See Chris@16: // accompanying file LICENSE_1_0.txt or copy at Chris@16: // http://www.boost.org/LICENSE_1_0.txt) Chris@16: #ifndef EXCEPTION_HANDLER_DWA2002810_HPP Chris@16: # define EXCEPTION_HANDLER_DWA2002810_HPP Chris@16: Chris@16: # include Chris@16: # include Chris@16: # include Chris@16: Chris@16: namespace boost { namespace python { namespace detail { Chris@16: Chris@16: struct BOOST_PYTHON_DECL_FORWARD exception_handler; Chris@16: Chris@16: typedef function2 const&> handler_function; Chris@16: Chris@16: struct BOOST_PYTHON_DECL exception_handler Chris@16: { Chris@16: private: // types Chris@16: Chris@16: public: Chris@16: explicit exception_handler(handler_function const& impl); Chris@16: Chris@16: inline bool handle(function0 const& f) const; Chris@16: Chris@16: bool operator()(function0 const& f) const; Chris@16: Chris@16: static exception_handler* chain; Chris@16: Chris@16: private: Chris@16: static exception_handler* tail; Chris@16: Chris@16: handler_function m_impl; Chris@16: exception_handler* m_next; Chris@16: }; Chris@16: Chris@16: Chris@16: inline bool exception_handler::handle(function0 const& f) const Chris@16: { Chris@16: return this->m_impl(*this, f); Chris@16: } Chris@16: Chris@16: BOOST_PYTHON_DECL void register_exception_handler(handler_function const& f); Chris@16: Chris@16: }}} // namespace boost::python::detail Chris@16: Chris@16: #endif // EXCEPTION_HANDLER_DWA2002810_HPP