// 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 |