| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 | // 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 BASES_DWA2002321_HPP# define BASES_DWA2002321_HPP# include <boost/python/detail/prefix.hpp># include <boost/python/detail/type_list.hpp># include <boost/python/detail/type_traits.hpp># include <boost/mpl/if.hpp># include <boost/mpl/bool.hpp># include <boost/preprocessor/enum_params_with_a_default.hpp># include <boost/preprocessor/enum_params.hpp>namespace boost { namespace python { # define BOOST_PYTHON_BASE_PARAMS BOOST_PP_ENUM_PARAMS_Z(1, BOOST_PYTHON_MAX_BASES, Base)  // A type list for specifying bases  template < BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(BOOST_PYTHON_MAX_BASES, typename Base, mpl::void_) >  struct bases : detail::type_list< BOOST_PYTHON_BASE_PARAMS >::type  {};  namespace detail  {    template <class T> struct specifies_bases        : mpl::false_    {    };        template < BOOST_PP_ENUM_PARAMS_Z(1, BOOST_PYTHON_MAX_BASES, class Base) >    struct specifies_bases< bases< BOOST_PYTHON_BASE_PARAMS > >        : mpl::true_    {    };    template <class T, class Prev = bases<> >    struct select_bases        : mpl::if_<                specifies_bases<T>                , T                , Prev          >    {    };  }# undef BOOST_PYTHON_BASE_PARAMS}} // namespace boost::python#endif // BASES_DWA2002321_HPP
 |