Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame^] | 1 | |
| 2 | // (C) Copyright Tobias Schwinger |
| 3 | // |
| 4 | // Use modification and distribution are subject to the boost Software License, |
| 5 | // Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt). |
| 6 | |
| 7 | //------------------------------------------------------------------------------ |
| 8 | |
| 9 | // no include guards, this file is intended for multiple inclusion |
| 10 | |
| 11 | // input: BOOST_FT_syntax type macro to use |
| 12 | // input: BOOST_FT_cc empty or cc specifier |
| 13 | // input: BOOST_FT_ell empty or "..." |
| 14 | // input: BOOST_FT_cv empty or cv qualifiers |
| 15 | // input: BOOST_FT_flags single decimal integer encoding the flags |
| 16 | // output: BOOST_FT_n number of component types (arity+1) |
| 17 | // output: BOOST_FT_arity current arity |
| 18 | // output: BOOST_FT_type macro that expands to the type |
| 19 | // output: BOOST_FT_tplargs(p) template arguments with given prefix |
| 20 | // output: BOOST_FT_params(p) parameters with given prefix |
| 21 | |
| 22 | template< typename R > |
| 23 | typename encode_charr<BOOST_FT_flags,BOOST_FT_cc_id,0> ::type |
| 24 | classifier_impl(BOOST_FT_syntax(BOOST_FT_cc, BOOST_PP_EMPTY) (BOOST_FT_nullary_param BOOST_FT_ell) BOOST_FT_cv); |
| 25 | template< typename R , typename T0 > |
| 26 | typename encode_charr<BOOST_FT_flags,BOOST_FT_cc_id,1> ::type |
| 27 | classifier_impl(BOOST_FT_syntax(BOOST_FT_cc, BOOST_PP_EMPTY) (T0 BOOST_FT_ell) BOOST_FT_cv); |
| 28 | template< typename R , typename T0 , typename T1 > |
| 29 | typename encode_charr<BOOST_FT_flags,BOOST_FT_cc_id,2> ::type |
| 30 | classifier_impl(BOOST_FT_syntax(BOOST_FT_cc, BOOST_PP_EMPTY) (T0 , T1 BOOST_FT_ell) BOOST_FT_cv); |
| 31 | template< typename R , typename T0 , typename T1 , typename T2 > |
| 32 | typename encode_charr<BOOST_FT_flags,BOOST_FT_cc_id,3> ::type |
| 33 | classifier_impl(BOOST_FT_syntax(BOOST_FT_cc, BOOST_PP_EMPTY) (T0 , T1 , T2 BOOST_FT_ell) BOOST_FT_cv); |
| 34 | template< typename R , typename T0 , typename T1 , typename T2 , typename T3 > |
| 35 | typename encode_charr<BOOST_FT_flags,BOOST_FT_cc_id,4> ::type |
| 36 | classifier_impl(BOOST_FT_syntax(BOOST_FT_cc, BOOST_PP_EMPTY) (T0 , T1 , T2 , T3 BOOST_FT_ell) BOOST_FT_cv); |
| 37 | template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 > |
| 38 | typename encode_charr<BOOST_FT_flags,BOOST_FT_cc_id,5> ::type |
| 39 | classifier_impl(BOOST_FT_syntax(BOOST_FT_cc, BOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 BOOST_FT_ell) BOOST_FT_cv); |
| 40 | template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 > |
| 41 | typename encode_charr<BOOST_FT_flags,BOOST_FT_cc_id,6> ::type |
| 42 | classifier_impl(BOOST_FT_syntax(BOOST_FT_cc, BOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 BOOST_FT_ell) BOOST_FT_cv); |
| 43 | template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 > |
| 44 | typename encode_charr<BOOST_FT_flags,BOOST_FT_cc_id,7> ::type |
| 45 | classifier_impl(BOOST_FT_syntax(BOOST_FT_cc, BOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 BOOST_FT_ell) BOOST_FT_cv); |
| 46 | template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 > |
| 47 | typename encode_charr<BOOST_FT_flags,BOOST_FT_cc_id,8> ::type |
| 48 | classifier_impl(BOOST_FT_syntax(BOOST_FT_cc, BOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 BOOST_FT_ell) BOOST_FT_cv); |
| 49 | template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 > |
| 50 | typename encode_charr<BOOST_FT_flags,BOOST_FT_cc_id,9> ::type |
| 51 | classifier_impl(BOOST_FT_syntax(BOOST_FT_cc, BOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 BOOST_FT_ell) BOOST_FT_cv); |
| 52 | template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 > |
| 53 | typename encode_charr<BOOST_FT_flags,BOOST_FT_cc_id,10> ::type |
| 54 | classifier_impl(BOOST_FT_syntax(BOOST_FT_cc, BOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 BOOST_FT_ell) BOOST_FT_cv); |
| 55 | |