the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at main 68 lines 2.1 kB view raw
1// Copyright David Abrahams 2002. 2// Distributed under the Boost Software License, Version 1.0. (See 3// accompanying file LICENSE_1_0.txt or copy at 4// http://www.boost.org/LICENSE_1_0.txt) 5#ifndef BASES_DWA2002321_HPP 6# define BASES_DWA2002321_HPP 7 8# include <boost/python/detail/prefix.hpp> 9# include <boost/type_traits/object_traits.hpp> 10# include <boost/python/detail/type_list.hpp> 11# include <boost/mpl/if.hpp> 12# include <boost/mpl/bool.hpp> 13# include <boost/preprocessor/enum_params_with_a_default.hpp> 14# include <boost/preprocessor/enum_params.hpp> 15 16namespace boost { namespace python { 17 18# define BOOST_PYTHON_BASE_PARAMS BOOST_PP_ENUM_PARAMS_Z(1, BOOST_PYTHON_MAX_BASES, Base) 19 20 // A type list for specifying bases 21 template < BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(BOOST_PYTHON_MAX_BASES, typename Base, mpl::void_) > 22 struct bases : detail::type_list< BOOST_PYTHON_BASE_PARAMS >::type 23 {}; 24 25 namespace detail 26 { 27# ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION 28 template <class T> struct specifies_bases 29 : mpl::false_ 30 { 31 }; 32 33 template < BOOST_PP_ENUM_PARAMS_Z(1, BOOST_PYTHON_MAX_BASES, class Base) > 34 struct specifies_bases< bases< BOOST_PYTHON_BASE_PARAMS > > 35 : mpl::true_ 36 { 37 }; 38# else 39 template < BOOST_PP_ENUM_PARAMS(BOOST_PYTHON_MAX_BASES, class Base) > 40 static char is_bases_helper(bases< BOOST_PYTHON_BASE_PARAMS > const&); 41 42 static char (& is_bases_helper(...) )[256]; 43 44 template <class T> 45 struct specifies_bases 46 { 47 private: 48 static typename add_reference<T>::type make(); 49 BOOST_STATIC_CONSTANT(bool, non_ref = !is_reference<T>::value); 50 public: 51 BOOST_STATIC_CONSTANT(bool, value = non_ref & (sizeof(is_bases_helper(make())) == 1)); 52 typedef mpl::bool_<value> type; 53 }; 54# endif 55 template <class T, class Prev = bases<> > 56 struct select_bases 57 : mpl::if_< 58 specifies_bases<T> 59 , T 60 , Prev 61 > 62 { 63 }; 64 } 65# undef BOOST_PYTHON_BASE_PARAMS 66}} // namespace boost::python 67 68#endif // BASES_DWA2002321_HPP