diff -r 000000000000 -r bde4ae8d615e os/ossrv/ossrv_pub/boost_apis/boost/python/bases.hpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/os/ossrv/ossrv_pub/boost_apis/boost/python/bases.hpp Fri Jun 15 03:10:57 2012 +0200 @@ -0,0 +1,68 @@ +// 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 +# include +# include +# include +# include +# include +# include + +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 + { +# ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION + template 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_ + { + }; +# else + template < BOOST_PP_ENUM_PARAMS(BOOST_PYTHON_MAX_BASES, class Base) > + static char is_bases_helper(bases< BOOST_PYTHON_BASE_PARAMS > const&); + + static char (& is_bases_helper(...) )[256]; + + template + struct specifies_bases + { + private: + static typename add_reference::type make(); + BOOST_STATIC_CONSTANT(bool, non_ref = !is_reference::value); + public: + BOOST_STATIC_CONSTANT(bool, value = non_ref & (sizeof(is_bases_helper(make())) == 1)); + typedef mpl::bool_ type; + }; +# endif + template > + struct select_bases + : mpl::if_< + specifies_bases + , T + , Prev + > + { + }; + } +# undef BOOST_PYTHON_BASE_PARAMS +}} // namespace boost::python + +#endif // BASES_DWA2002321_HPP