| |
| // (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). |
| |
| //------------------------------------------------------------------------------ |
| |
| // no include guards, this file is intended for multiple inclusion |
| |
| // input: NDNBOOST_FT_syntax type macro to use |
| // input: NDNBOOST_FT_cc empty or cc specifier |
| // input: NDNBOOST_FT_ell empty or "..." |
| // input: NDNBOOST_FT_cv empty or cv qualifiers |
| // input: NDNBOOST_FT_flags single decimal integer encoding the flags |
| // output: NDNBOOST_FT_n number of component types (arity+1) |
| // output: NDNBOOST_FT_arity current arity |
| // output: NDNBOOST_FT_type macro that expands to the type |
| // output: NDNBOOST_FT_tplargs(p) template arguments with given prefix |
| // output: NDNBOOST_FT_params(p) parameters with given prefix |
| |
| template< typename R, typename L> |
| struct components_impl<NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (NDNBOOST_FT_nullary_param NDNBOOST_FT_ell) NDNBOOST_FT_cv, L> |
| { |
| typedef encode_bits<NDNBOOST_FT_flags,NDNBOOST_FT_cc_id> bits; |
| typedef constant<NDNBOOST_FT_full_mask> mask; |
| typedef function_types::components<NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (NDNBOOST_FT_nullary_param NDNBOOST_FT_ell) NDNBOOST_FT_cv, L> type; |
| typedef components_mpl_sequence_tag tag; |
| typedef mpl::integral_c<std::size_t,0> function_arity; |
| typedef mpl::vector1< R NDNBOOST_FT_nullary_param > types; |
| }; |
| template< typename R , typename T0, typename L> |
| struct components_impl<NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 NDNBOOST_FT_ell) NDNBOOST_FT_cv, L> |
| { |
| typedef encode_bits<NDNBOOST_FT_flags,NDNBOOST_FT_cc_id> bits; |
| typedef constant<NDNBOOST_FT_full_mask> mask; |
| typedef function_types::components<NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 NDNBOOST_FT_ell) NDNBOOST_FT_cv, L> type; |
| typedef components_mpl_sequence_tag tag; |
| typedef mpl::integral_c<std::size_t,1> function_arity; |
| typedef mpl::vector2< R , T0 > types; |
| }; |
| template< typename R , typename T0 , typename T1, typename L> |
| struct components_impl<NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 , T1 NDNBOOST_FT_ell) NDNBOOST_FT_cv, L> |
| { |
| typedef encode_bits<NDNBOOST_FT_flags,NDNBOOST_FT_cc_id> bits; |
| typedef constant<NDNBOOST_FT_full_mask> mask; |
| typedef function_types::components<NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 , T1 NDNBOOST_FT_ell) NDNBOOST_FT_cv, L> type; |
| typedef components_mpl_sequence_tag tag; |
| typedef mpl::integral_c<std::size_t,2> function_arity; |
| typedef mpl::vector3< R , T0 , T1 > types; |
| }; |
| template< typename R , typename T0 , typename T1 , typename T2, typename L> |
| struct components_impl<NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 , T1 , T2 NDNBOOST_FT_ell) NDNBOOST_FT_cv, L> |
| { |
| typedef encode_bits<NDNBOOST_FT_flags,NDNBOOST_FT_cc_id> bits; |
| typedef constant<NDNBOOST_FT_full_mask> mask; |
| typedef function_types::components<NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 , T1 , T2 NDNBOOST_FT_ell) NDNBOOST_FT_cv, L> type; |
| typedef components_mpl_sequence_tag tag; |
| typedef mpl::integral_c<std::size_t,3> function_arity; |
| typedef mpl::vector4< R , T0 , T1 , T2 > types; |
| }; |
| template< typename R , typename T0 , typename T1 , typename T2 , typename T3, typename L> |
| struct components_impl<NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 NDNBOOST_FT_ell) NDNBOOST_FT_cv, L> |
| { |
| typedef encode_bits<NDNBOOST_FT_flags,NDNBOOST_FT_cc_id> bits; |
| typedef constant<NDNBOOST_FT_full_mask> mask; |
| typedef function_types::components<NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 NDNBOOST_FT_ell) NDNBOOST_FT_cv, L> type; |
| typedef components_mpl_sequence_tag tag; |
| typedef mpl::integral_c<std::size_t,4> function_arity; |
| typedef mpl::vector5< R , T0 , T1 , T2 , T3 > types; |
| }; |
| template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4, typename L> |
| struct components_impl<NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 NDNBOOST_FT_ell) NDNBOOST_FT_cv, L> |
| { |
| typedef encode_bits<NDNBOOST_FT_flags,NDNBOOST_FT_cc_id> bits; |
| typedef constant<NDNBOOST_FT_full_mask> mask; |
| typedef function_types::components<NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 NDNBOOST_FT_ell) NDNBOOST_FT_cv, L> type; |
| typedef components_mpl_sequence_tag tag; |
| typedef mpl::integral_c<std::size_t,5> function_arity; |
| typedef mpl::vector6< R , T0 , T1 , T2 , T3 , T4 > types; |
| }; |
| template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5, typename L> |
| struct components_impl<NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 NDNBOOST_FT_ell) NDNBOOST_FT_cv, L> |
| { |
| typedef encode_bits<NDNBOOST_FT_flags,NDNBOOST_FT_cc_id> bits; |
| typedef constant<NDNBOOST_FT_full_mask> mask; |
| typedef function_types::components<NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 NDNBOOST_FT_ell) NDNBOOST_FT_cv, L> type; |
| typedef components_mpl_sequence_tag tag; |
| typedef mpl::integral_c<std::size_t,6> function_arity; |
| typedef mpl::vector7< R , T0 , T1 , T2 , T3 , T4 , T5 > types; |
| }; |
| template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6, typename L> |
| struct components_impl<NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 NDNBOOST_FT_ell) NDNBOOST_FT_cv, L> |
| { |
| typedef encode_bits<NDNBOOST_FT_flags,NDNBOOST_FT_cc_id> bits; |
| typedef constant<NDNBOOST_FT_full_mask> mask; |
| typedef function_types::components<NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 NDNBOOST_FT_ell) NDNBOOST_FT_cv, L> type; |
| typedef components_mpl_sequence_tag tag; |
| typedef mpl::integral_c<std::size_t,7> function_arity; |
| typedef mpl::vector8< R , T0 , T1 , T2 , T3 , T4 , T5 , T6 > types; |
| }; |
| template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7, typename L> |
| struct components_impl<NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 NDNBOOST_FT_ell) NDNBOOST_FT_cv, L> |
| { |
| typedef encode_bits<NDNBOOST_FT_flags,NDNBOOST_FT_cc_id> bits; |
| typedef constant<NDNBOOST_FT_full_mask> mask; |
| typedef function_types::components<NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 NDNBOOST_FT_ell) NDNBOOST_FT_cv, L> type; |
| typedef components_mpl_sequence_tag tag; |
| typedef mpl::integral_c<std::size_t,8> function_arity; |
| typedef mpl::vector9< R , T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 > types; |
| }; |
| template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8, typename L> |
| struct components_impl<NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 NDNBOOST_FT_ell) NDNBOOST_FT_cv, L> |
| { |
| typedef encode_bits<NDNBOOST_FT_flags,NDNBOOST_FT_cc_id> bits; |
| typedef constant<NDNBOOST_FT_full_mask> mask; |
| typedef function_types::components<NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 NDNBOOST_FT_ell) NDNBOOST_FT_cv, L> type; |
| typedef components_mpl_sequence_tag tag; |
| typedef mpl::integral_c<std::size_t,9> function_arity; |
| typedef mpl::vector10< R , T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 > types; |
| }; |
| template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9, typename L> |
| struct components_impl<NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 NDNBOOST_FT_ell) NDNBOOST_FT_cv, L> |
| { |
| typedef encode_bits<NDNBOOST_FT_flags,NDNBOOST_FT_cc_id> bits; |
| typedef constant<NDNBOOST_FT_full_mask> mask; |
| typedef function_types::components<NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 NDNBOOST_FT_ell) NDNBOOST_FT_cv, L> type; |
| typedef components_mpl_sequence_tag tag; |
| typedef mpl::integral_c<std::size_t,10> function_arity; |
| typedef mpl::vector11< R , T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 > types; |
| }; |
| |