blob: ba530de30ef5bd4ddef7ef1e995ce96d864713a5 [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
22# include <ndnboost/function_types/detail/components_impl/arity10_0.hpp>
23template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10, typename L>
Jeff Thompson3d613fd2013-10-15 15:39:04 -070024struct components_impl<NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 NDNBOOST_FT_ell) NDNBOOST_FT_cv, L>
Jeff Thompsona28eed82013-08-22 16:21:10 -070025{
Jeff Thompson3d613fd2013-10-15 15:39:04 -070026typedef encode_bits<NDNBOOST_FT_flags,NDNBOOST_FT_cc_id> bits;
27typedef constant<NDNBOOST_FT_full_mask> mask;
28typedef function_types::components<NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 NDNBOOST_FT_ell) NDNBOOST_FT_cv, L> type;
Jeff Thompsona28eed82013-08-22 16:21:10 -070029typedef components_mpl_sequence_tag tag;
30typedef mpl::integral_c<std::size_t,11> function_arity;
31typedef mpl::vector12< R , T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 > types;
32};
33template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11, typename L>
Jeff Thompson3d613fd2013-10-15 15:39:04 -070034struct components_impl<NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 NDNBOOST_FT_ell) NDNBOOST_FT_cv, L>
Jeff Thompsona28eed82013-08-22 16:21:10 -070035{
Jeff Thompson3d613fd2013-10-15 15:39:04 -070036typedef encode_bits<NDNBOOST_FT_flags,NDNBOOST_FT_cc_id> bits;
37typedef constant<NDNBOOST_FT_full_mask> mask;
38typedef function_types::components<NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 NDNBOOST_FT_ell) NDNBOOST_FT_cv, L> type;
Jeff Thompsona28eed82013-08-22 16:21:10 -070039typedef components_mpl_sequence_tag tag;
40typedef mpl::integral_c<std::size_t,12> function_arity;
41typedef mpl::vector13< R , T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 > types;
42};
43template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12, typename L>
Jeff Thompson3d613fd2013-10-15 15:39:04 -070044struct components_impl<NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 NDNBOOST_FT_ell) NDNBOOST_FT_cv, L>
Jeff Thompsona28eed82013-08-22 16:21:10 -070045{
Jeff Thompson3d613fd2013-10-15 15:39:04 -070046typedef encode_bits<NDNBOOST_FT_flags,NDNBOOST_FT_cc_id> bits;
47typedef constant<NDNBOOST_FT_full_mask> mask;
48typedef function_types::components<NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 NDNBOOST_FT_ell) NDNBOOST_FT_cv, L> type;
Jeff Thompsona28eed82013-08-22 16:21:10 -070049typedef components_mpl_sequence_tag tag;
50typedef mpl::integral_c<std::size_t,13> function_arity;
51typedef mpl::vector14< R , T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 > types;
52};
53template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13, typename L>
Jeff Thompson3d613fd2013-10-15 15:39:04 -070054struct components_impl<NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 NDNBOOST_FT_ell) NDNBOOST_FT_cv, L>
Jeff Thompsona28eed82013-08-22 16:21:10 -070055{
Jeff Thompson3d613fd2013-10-15 15:39:04 -070056typedef encode_bits<NDNBOOST_FT_flags,NDNBOOST_FT_cc_id> bits;
57typedef constant<NDNBOOST_FT_full_mask> mask;
58typedef function_types::components<NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 NDNBOOST_FT_ell) NDNBOOST_FT_cv, L> type;
Jeff Thompsona28eed82013-08-22 16:21:10 -070059typedef components_mpl_sequence_tag tag;
60typedef mpl::integral_c<std::size_t,14> function_arity;
61typedef mpl::vector15< R , T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 > types;
62};
63template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14, typename L>
Jeff Thompson3d613fd2013-10-15 15:39:04 -070064struct components_impl<NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 NDNBOOST_FT_ell) NDNBOOST_FT_cv, L>
Jeff Thompsona28eed82013-08-22 16:21:10 -070065{
Jeff Thompson3d613fd2013-10-15 15:39:04 -070066typedef encode_bits<NDNBOOST_FT_flags,NDNBOOST_FT_cc_id> bits;
67typedef constant<NDNBOOST_FT_full_mask> mask;
68typedef function_types::components<NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 NDNBOOST_FT_ell) NDNBOOST_FT_cv, L> type;
Jeff Thompsona28eed82013-08-22 16:21:10 -070069typedef components_mpl_sequence_tag tag;
70typedef mpl::integral_c<std::size_t,15> function_arity;
71typedef mpl::vector16< R , T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 > types;
72};
73template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15, typename L>
Jeff Thompson3d613fd2013-10-15 15:39:04 -070074struct components_impl<NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 NDNBOOST_FT_ell) NDNBOOST_FT_cv, L>
Jeff Thompsona28eed82013-08-22 16:21:10 -070075{
Jeff Thompson3d613fd2013-10-15 15:39:04 -070076typedef encode_bits<NDNBOOST_FT_flags,NDNBOOST_FT_cc_id> bits;
77typedef constant<NDNBOOST_FT_full_mask> mask;
78typedef function_types::components<NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 NDNBOOST_FT_ell) NDNBOOST_FT_cv, L> type;
Jeff Thompsona28eed82013-08-22 16:21:10 -070079typedef components_mpl_sequence_tag tag;
80typedef mpl::integral_c<std::size_t,16> function_arity;
81typedef mpl::vector17< R , T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 > types;
82};
83template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16, typename L>
Jeff Thompson3d613fd2013-10-15 15:39:04 -070084struct components_impl<NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 NDNBOOST_FT_ell) NDNBOOST_FT_cv, L>
Jeff Thompsona28eed82013-08-22 16:21:10 -070085{
Jeff Thompson3d613fd2013-10-15 15:39:04 -070086typedef encode_bits<NDNBOOST_FT_flags,NDNBOOST_FT_cc_id> bits;
87typedef constant<NDNBOOST_FT_full_mask> mask;
88typedef function_types::components<NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 NDNBOOST_FT_ell) NDNBOOST_FT_cv, L> type;
Jeff Thompsona28eed82013-08-22 16:21:10 -070089typedef components_mpl_sequence_tag tag;
90typedef mpl::integral_c<std::size_t,17> function_arity;
91typedef mpl::vector18< R , T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 > types;
92};
93template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17, typename L>
Jeff Thompson3d613fd2013-10-15 15:39:04 -070094struct components_impl<NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 NDNBOOST_FT_ell) NDNBOOST_FT_cv, L>
Jeff Thompsona28eed82013-08-22 16:21:10 -070095{
Jeff Thompson3d613fd2013-10-15 15:39:04 -070096typedef encode_bits<NDNBOOST_FT_flags,NDNBOOST_FT_cc_id> bits;
97typedef constant<NDNBOOST_FT_full_mask> mask;
98typedef function_types::components<NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 NDNBOOST_FT_ell) NDNBOOST_FT_cv, L> type;
Jeff Thompsona28eed82013-08-22 16:21:10 -070099typedef components_mpl_sequence_tag tag;
100typedef mpl::integral_c<std::size_t,18> function_arity;
101typedef mpl::vector19< R , T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 > types;
102};
103template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18, typename L>
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700104struct components_impl<NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 NDNBOOST_FT_ell) NDNBOOST_FT_cv, L>
Jeff Thompsona28eed82013-08-22 16:21:10 -0700105{
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700106typedef encode_bits<NDNBOOST_FT_flags,NDNBOOST_FT_cc_id> bits;
107typedef constant<NDNBOOST_FT_full_mask> mask;
108typedef function_types::components<NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 NDNBOOST_FT_ell) NDNBOOST_FT_cv, L> type;
Jeff Thompsona28eed82013-08-22 16:21:10 -0700109typedef components_mpl_sequence_tag tag;
110typedef mpl::integral_c<std::size_t,19> function_arity;
111typedef mpl::vector20< R , T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 > types;
112};
113template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19, typename L>
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700114struct components_impl<NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 NDNBOOST_FT_ell) NDNBOOST_FT_cv, L>
Jeff Thompsona28eed82013-08-22 16:21:10 -0700115{
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700116typedef encode_bits<NDNBOOST_FT_flags,NDNBOOST_FT_cc_id> bits;
117typedef constant<NDNBOOST_FT_full_mask> mask;
118typedef function_types::components<NDNBOOST_FT_syntax(NDNBOOST_FT_cc, NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 NDNBOOST_FT_ell) NDNBOOST_FT_cv, L> type;
Jeff Thompsona28eed82013-08-22 16:21:10 -0700119typedef components_mpl_sequence_tag tag;
120typedef mpl::integral_c<std::size_t,20> function_arity;
121typedef mpl::vector21< R , T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 > types;
122};
123