source: NonGTP/Boost/boost/python/manage_new_object.hpp @ 857

Revision 857, 1.1 KB checked in by igarcia, 18 years ago (diff)
Line 
1// Copyright David Abrahams 2002.
2// Distributed under the Boost Software License, Version 1.0. (See
3// accompanying file LICENSE_1_0.txt or copy at
4// http://www.boost.org/LICENSE_1_0.txt)
5#ifndef MANAGE_NEW_OBJECT_DWA200222_HPP
6# define MANAGE_NEW_OBJECT_DWA200222_HPP
7
8# include <boost/python/detail/prefix.hpp>
9# include <boost/python/detail/indirect_traits.hpp>
10# include <boost/mpl/if.hpp>
11# include <boost/python/to_python_indirect.hpp>
12# include <boost/type_traits/composite_traits.hpp>
13
14namespace boost { namespace python {
15
16namespace detail
17{
18  template <class R>
19  struct manage_new_object_requires_a_pointer_return_type
20# if defined(__GNUC__) && __GNUC__ >= 3 || defined(__EDG__)
21  {}
22# endif
23  ;
24}
25
26struct manage_new_object
27{
28    template <class T>
29    struct apply
30    {
31        typedef typename mpl::if_c<
32            boost::is_pointer<T>::value
33            , to_python_indirect<T, detail::make_owning_holder>
34            , detail::manage_new_object_requires_a_pointer_return_type<T>
35        >::type type;
36    };
37};
38
39}} // namespace boost::python
40
41#endif // MANAGE_NEW_OBJECT_DWA200222_HPP
Note: See TracBrowser for help on using the repository browser.