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