You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and dots ('.'), can be up to 35 characters long. Letters must be lowercase.
28 lines
949 B
28 lines
949 B
// 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
|
|
|