// Copyright Gottfried Ganßauge 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) /* * Generic Return value converter generator for opaque C++-pointers */ # ifndef RETURN_OPAQUE_POINTER_HPP_ # define RETURN_OPAQUE_POINTER_HPP_ # include # include # include # include # include # include namespace boost { namespace python { namespace detail { template static void opaque_pointee(Pointee const volatile*) { force_instantiate(opaque::instance); } } struct return_opaque_pointer { template struct apply { BOOST_MPL_ASSERT_MSG( is_pointer::value, RETURN_OPAQUE_POINTER_EXPECTS_A_POINTER_TYPE, (R)); struct type : boost::python::to_python_value< typename detail::value_arg::type > { type() { detail::opaque_pointee(R()); } }; }; }; }} // namespace boost::python # endif // RETURN_OPAQUE_POINTER_HPP_