blob: 7d177a2e7adf2525b55d74abf30145161e40aa34 [file] [log] [blame]
Jeff Thompsona28eed82013-08-22 16:21:10 -07001
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
Jeff Thompson3d613fd2013-10-15 15:39:04 -070011// input: NDNBOOST_FT_syntax type macro to use
12// input: NDNBOOST_FT_cc empty or cc specifier
13// input: NDNBOOST_FT_ell empty or "..."
14// input: NDNBOOST_FT_cv empty or cv qualifiers
15// input: NDNBOOST_FT_flags single decimal integer encoding the flags
16// output: NDNBOOST_FT_n number of component types (arity+1)
17// output: NDNBOOST_FT_arity current arity
18// output: NDNBOOST_FT_type macro that expands to the type
19// output: NDNBOOST_FT_tplargs(p) template arguments with given prefix
20// output: NDNBOOST_FT_params(p) parameters with given prefix
Jeff Thompsona28eed82013-08-22 16:21:10 -070021
22template< typename R >
Jeff Thompson3d613fd2013-10-15 15:39:04 -070023typename encode_charr<NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,0> ::type
24classifier_impl(NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (NDNBOOST_FT_nullary_param NDNBOOST_FT_ell) NDNBOOST_FT_cv);
Jeff Thompsona28eed82013-08-22 16:21:10 -070025template< typename R , typename T0 >
Jeff Thompson3d613fd2013-10-15 15:39:04 -070026typename encode_charr<NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,1> ::type
27classifier_impl(NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 NDNBOOST_FT_ell) NDNBOOST_FT_cv);
Jeff Thompsona28eed82013-08-22 16:21:10 -070028template< typename R , typename T0 , typename T1 >
Jeff Thompson3d613fd2013-10-15 15:39:04 -070029typename encode_charr<NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,2> ::type
30classifier_impl(NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 , T1 NDNBOOST_FT_ell) NDNBOOST_FT_cv);
Jeff Thompsona28eed82013-08-22 16:21:10 -070031template< typename R , typename T0 , typename T1 , typename T2 >
Jeff Thompson3d613fd2013-10-15 15:39:04 -070032typename encode_charr<NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,3> ::type
33classifier_impl(NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 , T1 , T2 NDNBOOST_FT_ell) NDNBOOST_FT_cv);
Jeff Thompsona28eed82013-08-22 16:21:10 -070034template< typename R , typename T0 , typename T1 , typename T2 , typename T3 >
Jeff Thompson3d613fd2013-10-15 15:39:04 -070035typename encode_charr<NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,4> ::type
36classifier_impl(NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 NDNBOOST_FT_ell) NDNBOOST_FT_cv);
Jeff Thompsona28eed82013-08-22 16:21:10 -070037template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 >
Jeff Thompson3d613fd2013-10-15 15:39:04 -070038typename encode_charr<NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,5> ::type
39classifier_impl(NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 NDNBOOST_FT_ell) NDNBOOST_FT_cv);
Jeff Thompsona28eed82013-08-22 16:21:10 -070040template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 >
Jeff Thompson3d613fd2013-10-15 15:39:04 -070041typename encode_charr<NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,6> ::type
42classifier_impl(NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 NDNBOOST_FT_ell) NDNBOOST_FT_cv);
Jeff Thompsona28eed82013-08-22 16:21:10 -070043template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 >
Jeff Thompson3d613fd2013-10-15 15:39:04 -070044typename encode_charr<NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,7> ::type
45classifier_impl(NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 NDNBOOST_FT_ell) NDNBOOST_FT_cv);
Jeff Thompsona28eed82013-08-22 16:21:10 -070046template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 >
Jeff Thompson3d613fd2013-10-15 15:39:04 -070047typename encode_charr<NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,8> ::type
48classifier_impl(NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 NDNBOOST_FT_ell) NDNBOOST_FT_cv);
Jeff Thompsona28eed82013-08-22 16:21:10 -070049template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 >
Jeff Thompson3d613fd2013-10-15 15:39:04 -070050typename encode_charr<NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,9> ::type
51classifier_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);
Jeff Thompsona28eed82013-08-22 16:21:10 -070052template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 >
Jeff Thompson3d613fd2013-10-15 15:39:04 -070053typename encode_charr<NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,10> ::type
54classifier_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);
Jeff Thompsona28eed82013-08-22 16:21:10 -070055