--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ossrv_pub/boost_apis/boost/python/bases.hpp Tue Feb 02 02:01:42 2010 +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 <boost/python/detail/prefix.hpp>
+# include <boost/type_traits/object_traits.hpp>
+# include <boost/python/detail/type_list.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
+ {
+# ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ 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_
+ {
+ };
+# 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 <class T>
+ struct specifies_bases
+ {
+ private:
+ static typename add_reference<T>::type make();
+ BOOST_STATIC_CONSTANT(bool, non_ref = !is_reference<T>::value);
+ public:
+ BOOST_STATIC_CONSTANT(bool, value = non_ref & (sizeof(is_bases_helper(make())) == 1));
+ typedef mpl::bool_<value> type;
+ };
+# endif
+ 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