123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- // (C) Copyright Tobias Schwinger
- //
- // Use modification and distribution are subject to the boost Software License,
- // Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt).
- //------------------------------------------------------------------------------
- #ifndef BOOST_FT_DETAIL_COMPONENTS_AS_MPL_SEQUENCE_HPP_INCLUDED
- #define BOOST_FT_DETAIL_COMPONENTS_AS_MPL_SEQUENCE_HPP_INCLUDED
- #include <boost/mpl/size_fwd.hpp>
- #include <boost/mpl/empty_fwd.hpp>
- #include <boost/mpl/front_fwd.hpp>
- #include <boost/mpl/back_fwd.hpp>
- #include <boost/mpl/at_fwd.hpp>
- #include <boost/mpl/begin_end_fwd.hpp>
- #include <boost/mpl/clear_fwd.hpp>
- #include <boost/mpl/push_front_fwd.hpp>
- #include <boost/mpl/pop_front_fwd.hpp>
- #include <boost/mpl/push_back_fwd.hpp>
- #include <boost/mpl/pop_back_fwd.hpp>
- namespace boost { namespace mpl {
- template<> struct size_impl
- < function_types::detail::components_mpl_sequence_tag >
- {
- template< typename S > struct apply
- : mpl::size <typename S::types>
- { };
- };
- template<> struct empty_impl
- < function_types::detail::components_mpl_sequence_tag >
- {
- template< typename S > struct apply
- : mpl::empty <typename S::types>
- { };
- };
- template<> struct front_impl
- < function_types::detail::components_mpl_sequence_tag >
- {
- template< typename S > struct apply
- : mpl::front <typename S::types>
- { };
- };
- template<> struct back_impl
- < function_types::detail::components_mpl_sequence_tag >
- {
- template< typename S > struct apply
- : mpl::back <typename S::types>
- { };
- };
- template<> struct at_impl
- < function_types::detail::components_mpl_sequence_tag >
- {
- template< typename S, typename N > struct apply
- : mpl::at <typename S::types, N >
- { };
- };
- template<> struct begin_impl
- < function_types::detail::components_mpl_sequence_tag >
- {
- template< typename S > struct apply
- : mpl::begin <typename S::types>
- { };
- };
- template<> struct end_impl
- < function_types::detail::components_mpl_sequence_tag >
- {
- template< typename S > struct apply
- : mpl::end <typename S::types>
- { };
- };
- template<> struct clear_impl
- < function_types::detail::components_mpl_sequence_tag >
- {
- template< typename S >
- struct apply
- : S
- {
- typedef apply type;
- typedef typename mpl::clear< typename S::types >::type types;
- };
- };
- template<>
- struct push_front_impl
- < function_types::detail::components_mpl_sequence_tag >
- {
- template< typename S, typename T >
- struct apply
- : S
- {
- typedef apply type;
- typedef typename mpl::push_front< typename S::types, T >::type types;
- };
- };
- template<>
- struct pop_front_impl
- < function_types::detail::components_mpl_sequence_tag >
- {
- template< typename S >
- struct apply
- : S
- {
- typedef apply type;
- typedef typename mpl::pop_front< typename S::types >::type types;
- };
- };
- template<>
- struct push_back_impl
- < function_types::detail::components_mpl_sequence_tag >
- {
- template< typename S, typename T >
- struct apply
- : S
- {
- typedef apply type;
- typedef typename mpl::push_back< typename S::types, T >::type types;
- };
- };
- template<>
- struct pop_back_impl
- < function_types::detail::components_mpl_sequence_tag >
- {
- template< typename S >
- struct apply
- : S
- {
- typedef apply type;
- typedef typename mpl::pop_back< typename S::types >::type types;
- };
- };
- } } // namespace ::boost::mpl
- #endif
|