| // Copyright David Abrahams 2003. |
| // 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 SHARED_PTR_TO_PYTHON_DWA2003224_HPP |
| # define SHARED_PTR_TO_PYTHON_DWA2003224_HPP |
| |
| # include <boost/python/refcount.hpp> |
| # include <boost/python/converter/shared_ptr_deleter.hpp> |
| # include <boost/shared_ptr.hpp> |
| # include <boost/get_pointer.hpp> |
| |
| namespace boost { namespace python { namespace converter { |
| |
| template <class T> |
| PyObject* shared_ptr_to_python(shared_ptr<T> const& x) |
| { |
| if (!x) |
| return python::detail::none(); |
| else if (shared_ptr_deleter* d = boost::get_deleter<shared_ptr_deleter>(x)) |
| return incref( get_pointer( d->owner ) ); |
| else |
| return converter::registered<shared_ptr<T> const&>::converters.to_python(&x); |
| } |
| |
| }}} // namespace boost::python::converter |
| |
| #endif // SHARED_PTR_TO_PYTHON_DWA2003224_HPP |