// Copyright David Abrahams 2002. | |
// 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 REGISTERED_POINTEE_DWA2002710_HPP | |
# define REGISTERED_POINTEE_DWA2002710_HPP | |
# include <boost/python/converter/registered.hpp> | |
# include <boost/python/converter/pointer_type_id.hpp> | |
# include <boost/python/converter/registry.hpp> | |
# include <boost/type_traits/transform_traits.hpp> | |
# include <boost/type_traits/cv_traits.hpp> | |
namespace boost { namespace python { namespace converter { | |
struct registration; | |
# ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION | |
template <class T> | |
struct registered_pointee | |
: registered< | |
typename remove_pointer< | |
typename remove_cv< | |
typename remove_reference<T>::type | |
>::type | |
>::type | |
> | |
{ | |
}; | |
# else | |
namespace detail | |
{ | |
template <class T> | |
struct registered_pointee_base | |
{ | |
static registration const& converters; | |
}; | |
} | |
template <class T> | |
struct registered_pointee | |
: detail::registered_pointee_base< | |
typename add_reference< | |
typename add_cv<T>::type | |
>::type | |
> | |
{ | |
}; | |
// | |
// implementations | |
// | |
namespace detail | |
{ | |
template <class T> | |
registration const& registered_pointee_base<T>::converters | |
= registry::lookup(pointer_type_id<T>()); | |
} | |
# endif | |
}}} // namespace boost::python::converter | |
#endif // REGISTERED_POINTEE_DWA2002710_HPP |