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 | |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 11 | // 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 Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 21 | |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 22 | # define NDNBOOST_FT_make_type(flags,cc,arity) NDNBOOST_FT_make_type_impl(flags,cc,arity) |
| 23 | # define NDNBOOST_FT_make_type_impl(flags,cc,arity) make_type_ ## flags ## _ ## cc ## _ ## arity |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 24 | template< typename R > |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 25 | struct NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,0) |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 26 | { |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 27 | typedef NDNBOOST_FT_syntax(NDNBOOST_FT_cc,type NDNBOOST_PP_EMPTY) (NDNBOOST_FT_nullary_param NDNBOOST_FT_ell) NDNBOOST_FT_cv ; |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 28 | }; |
| 29 | template< > |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 30 | struct synthesize_impl_o< NDNBOOST_FT_flags, NDNBOOST_FT_cc_id, 1 > |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 31 | { |
| 32 | template<typename S> struct synthesize_impl_i |
| 33 | { |
| 34 | private: |
| 35 | typedef typename mpl::begin<S> ::type iter_0; |
| 36 | public: |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 37 | typedef typename detail::NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,0) |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 38 | < typename mpl::deref< iter_0 > ::type |
| 39 | > ::type type; |
| 40 | }; |
| 41 | }; |
| 42 | template< typename R , typename T0 > |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 43 | struct NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,1) |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 44 | { |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 45 | typedef NDNBOOST_FT_syntax(NDNBOOST_FT_cc,type NDNBOOST_PP_EMPTY) (T0 NDNBOOST_FT_ell) NDNBOOST_FT_cv ; |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 46 | }; |
| 47 | template< > |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 48 | struct synthesize_impl_o< NDNBOOST_FT_flags, NDNBOOST_FT_cc_id, 2 > |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 49 | { |
| 50 | template<typename S> struct synthesize_impl_i |
| 51 | { |
| 52 | private: |
| 53 | typedef typename mpl::begin<S> ::type iter_0; |
| 54 | typedef typename mpl::next< iter_0 > ::type iter_1; |
| 55 | public: |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 56 | typedef typename detail::NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,1) |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 57 | < typename mpl::deref< iter_0 > ::type |
| 58 | , typename mpl::deref< iter_1 > ::type |
| 59 | > ::type type; |
| 60 | }; |
| 61 | }; |
| 62 | template< typename R , typename T0 , typename T1 > |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 63 | struct NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,2) |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 64 | { |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 65 | typedef NDNBOOST_FT_syntax(NDNBOOST_FT_cc,type NDNBOOST_PP_EMPTY) (T0 , T1 NDNBOOST_FT_ell) NDNBOOST_FT_cv ; |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 66 | }; |
| 67 | template< > |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 68 | struct synthesize_impl_o< NDNBOOST_FT_flags, NDNBOOST_FT_cc_id, 3 > |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 69 | { |
| 70 | template<typename S> struct synthesize_impl_i |
| 71 | { |
| 72 | private: |
| 73 | typedef typename mpl::begin<S> ::type iter_0; |
| 74 | typedef typename mpl::next< iter_0 > ::type iter_1; |
| 75 | typedef typename mpl::next< iter_1 > ::type iter_2; |
| 76 | public: |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 77 | typedef typename detail::NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,2) |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 78 | < typename mpl::deref< iter_0 > ::type |
| 79 | , typename mpl::deref< iter_1 > ::type |
| 80 | , typename mpl::deref< iter_2 > ::type |
| 81 | > ::type type; |
| 82 | }; |
| 83 | }; |
| 84 | template< typename R , typename T0 , typename T1 , typename T2 > |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 85 | struct NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,3) |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 86 | { |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 87 | typedef NDNBOOST_FT_syntax(NDNBOOST_FT_cc,type NDNBOOST_PP_EMPTY) (T0 , T1 , T2 NDNBOOST_FT_ell) NDNBOOST_FT_cv ; |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 88 | }; |
| 89 | template< > |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 90 | struct synthesize_impl_o< NDNBOOST_FT_flags, NDNBOOST_FT_cc_id, 4 > |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 91 | { |
| 92 | template<typename S> struct synthesize_impl_i |
| 93 | { |
| 94 | private: |
| 95 | typedef typename mpl::begin<S> ::type iter_0; |
| 96 | typedef typename mpl::next< iter_0 > ::type iter_1; |
| 97 | typedef typename mpl::next< iter_1 > ::type iter_2; |
| 98 | typedef typename mpl::next< iter_2 > ::type iter_3; |
| 99 | public: |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 100 | typedef typename detail::NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,3) |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 101 | < typename mpl::deref< iter_0 > ::type |
| 102 | , typename mpl::deref< iter_1 > ::type |
| 103 | , typename mpl::deref< iter_2 > ::type |
| 104 | , typename mpl::deref< iter_3 > ::type |
| 105 | > ::type type; |
| 106 | }; |
| 107 | }; |
| 108 | template< typename R , typename T0 , typename T1 , typename T2 , typename T3 > |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 109 | struct NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,4) |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 110 | { |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 111 | typedef NDNBOOST_FT_syntax(NDNBOOST_FT_cc,type NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 NDNBOOST_FT_ell) NDNBOOST_FT_cv ; |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 112 | }; |
| 113 | template< > |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 114 | struct synthesize_impl_o< NDNBOOST_FT_flags, NDNBOOST_FT_cc_id, 5 > |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 115 | { |
| 116 | template<typename S> struct synthesize_impl_i |
| 117 | { |
| 118 | private: |
| 119 | typedef typename mpl::begin<S> ::type iter_0; |
| 120 | typedef typename mpl::next< iter_0 > ::type iter_1; |
| 121 | typedef typename mpl::next< iter_1 > ::type iter_2; |
| 122 | typedef typename mpl::next< iter_2 > ::type iter_3; |
| 123 | typedef typename mpl::next< iter_3 > ::type iter_4; |
| 124 | public: |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 125 | typedef typename detail::NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,4) |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 126 | < typename mpl::deref< iter_0 > ::type |
| 127 | , typename mpl::deref< iter_1 > ::type |
| 128 | , typename mpl::deref< iter_2 > ::type |
| 129 | , typename mpl::deref< iter_3 > ::type |
| 130 | , typename mpl::deref< iter_4 > ::type |
| 131 | > ::type type; |
| 132 | }; |
| 133 | }; |
| 134 | template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 > |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 135 | struct NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,5) |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 136 | { |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 137 | typedef NDNBOOST_FT_syntax(NDNBOOST_FT_cc,type NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 NDNBOOST_FT_ell) NDNBOOST_FT_cv ; |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 138 | }; |
| 139 | template< > |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 140 | struct synthesize_impl_o< NDNBOOST_FT_flags, NDNBOOST_FT_cc_id, 6 > |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 141 | { |
| 142 | template<typename S> struct synthesize_impl_i |
| 143 | { |
| 144 | private: |
| 145 | typedef typename mpl::begin<S> ::type iter_0; |
| 146 | typedef typename mpl::next< iter_0 > ::type iter_1; |
| 147 | typedef typename mpl::next< iter_1 > ::type iter_2; |
| 148 | typedef typename mpl::next< iter_2 > ::type iter_3; |
| 149 | typedef typename mpl::next< iter_3 > ::type iter_4; |
| 150 | typedef typename mpl::next< iter_4 > ::type iter_5; |
| 151 | public: |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 152 | typedef typename detail::NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,5) |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 153 | < typename mpl::deref< iter_0 > ::type |
| 154 | , typename mpl::deref< iter_1 > ::type |
| 155 | , typename mpl::deref< iter_2 > ::type |
| 156 | , typename mpl::deref< iter_3 > ::type |
| 157 | , typename mpl::deref< iter_4 > ::type |
| 158 | , typename mpl::deref< iter_5 > ::type |
| 159 | > ::type type; |
| 160 | }; |
| 161 | }; |
| 162 | template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 > |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 163 | struct NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,6) |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 164 | { |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 165 | typedef NDNBOOST_FT_syntax(NDNBOOST_FT_cc,type NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 NDNBOOST_FT_ell) NDNBOOST_FT_cv ; |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 166 | }; |
| 167 | template< > |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 168 | struct synthesize_impl_o< NDNBOOST_FT_flags, NDNBOOST_FT_cc_id, 7 > |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 169 | { |
| 170 | template<typename S> struct synthesize_impl_i |
| 171 | { |
| 172 | private: |
| 173 | typedef typename mpl::begin<S> ::type iter_0; |
| 174 | typedef typename mpl::next< iter_0 > ::type iter_1; |
| 175 | typedef typename mpl::next< iter_1 > ::type iter_2; |
| 176 | typedef typename mpl::next< iter_2 > ::type iter_3; |
| 177 | typedef typename mpl::next< iter_3 > ::type iter_4; |
| 178 | typedef typename mpl::next< iter_4 > ::type iter_5; |
| 179 | typedef typename mpl::next< iter_5 > ::type iter_6; |
| 180 | public: |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 181 | typedef typename detail::NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,6) |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 182 | < typename mpl::deref< iter_0 > ::type |
| 183 | , typename mpl::deref< iter_1 > ::type |
| 184 | , typename mpl::deref< iter_2 > ::type |
| 185 | , typename mpl::deref< iter_3 > ::type |
| 186 | , typename mpl::deref< iter_4 > ::type |
| 187 | , typename mpl::deref< iter_5 > ::type |
| 188 | , typename mpl::deref< iter_6 > ::type |
| 189 | > ::type type; |
| 190 | }; |
| 191 | }; |
| 192 | template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 > |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 193 | struct NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,7) |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 194 | { |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 195 | typedef NDNBOOST_FT_syntax(NDNBOOST_FT_cc,type NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 NDNBOOST_FT_ell) NDNBOOST_FT_cv ; |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 196 | }; |
| 197 | template< > |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 198 | struct synthesize_impl_o< NDNBOOST_FT_flags, NDNBOOST_FT_cc_id, 8 > |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 199 | { |
| 200 | template<typename S> struct synthesize_impl_i |
| 201 | { |
| 202 | private: |
| 203 | typedef typename mpl::begin<S> ::type iter_0; |
| 204 | typedef typename mpl::next< iter_0 > ::type iter_1; |
| 205 | typedef typename mpl::next< iter_1 > ::type iter_2; |
| 206 | typedef typename mpl::next< iter_2 > ::type iter_3; |
| 207 | typedef typename mpl::next< iter_3 > ::type iter_4; |
| 208 | typedef typename mpl::next< iter_4 > ::type iter_5; |
| 209 | typedef typename mpl::next< iter_5 > ::type iter_6; |
| 210 | typedef typename mpl::next< iter_6 > ::type iter_7; |
| 211 | public: |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 212 | typedef typename detail::NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,7) |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 213 | < typename mpl::deref< iter_0 > ::type |
| 214 | , typename mpl::deref< iter_1 > ::type |
| 215 | , typename mpl::deref< iter_2 > ::type |
| 216 | , typename mpl::deref< iter_3 > ::type |
| 217 | , typename mpl::deref< iter_4 > ::type |
| 218 | , typename mpl::deref< iter_5 > ::type |
| 219 | , typename mpl::deref< iter_6 > ::type |
| 220 | , typename mpl::deref< iter_7 > ::type |
| 221 | > ::type type; |
| 222 | }; |
| 223 | }; |
| 224 | template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 > |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 225 | struct NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,8) |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 226 | { |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 227 | typedef NDNBOOST_FT_syntax(NDNBOOST_FT_cc,type NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 NDNBOOST_FT_ell) NDNBOOST_FT_cv ; |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 228 | }; |
| 229 | template< > |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 230 | struct synthesize_impl_o< NDNBOOST_FT_flags, NDNBOOST_FT_cc_id, 9 > |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 231 | { |
| 232 | template<typename S> struct synthesize_impl_i |
| 233 | { |
| 234 | private: |
| 235 | typedef typename mpl::begin<S> ::type iter_0; |
| 236 | typedef typename mpl::next< iter_0 > ::type iter_1; |
| 237 | typedef typename mpl::next< iter_1 > ::type iter_2; |
| 238 | typedef typename mpl::next< iter_2 > ::type iter_3; |
| 239 | typedef typename mpl::next< iter_3 > ::type iter_4; |
| 240 | typedef typename mpl::next< iter_4 > ::type iter_5; |
| 241 | typedef typename mpl::next< iter_5 > ::type iter_6; |
| 242 | typedef typename mpl::next< iter_6 > ::type iter_7; |
| 243 | typedef typename mpl::next< iter_7 > ::type iter_8; |
| 244 | public: |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 245 | typedef typename detail::NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,8) |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 246 | < typename mpl::deref< iter_0 > ::type |
| 247 | , typename mpl::deref< iter_1 > ::type |
| 248 | , typename mpl::deref< iter_2 > ::type |
| 249 | , typename mpl::deref< iter_3 > ::type |
| 250 | , typename mpl::deref< iter_4 > ::type |
| 251 | , typename mpl::deref< iter_5 > ::type |
| 252 | , typename mpl::deref< iter_6 > ::type |
| 253 | , typename mpl::deref< iter_7 > ::type |
| 254 | , typename mpl::deref< iter_8 > ::type |
| 255 | > ::type type; |
| 256 | }; |
| 257 | }; |
| 258 | template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 > |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 259 | struct NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,9) |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 260 | { |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 261 | typedef NDNBOOST_FT_syntax(NDNBOOST_FT_cc,type NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 NDNBOOST_FT_ell) NDNBOOST_FT_cv ; |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 262 | }; |
| 263 | template< > |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 264 | struct synthesize_impl_o< NDNBOOST_FT_flags, NDNBOOST_FT_cc_id, 10 > |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 265 | { |
| 266 | template<typename S> struct synthesize_impl_i |
| 267 | { |
| 268 | private: |
| 269 | typedef typename mpl::begin<S> ::type iter_0; |
| 270 | typedef typename mpl::next< iter_0 > ::type iter_1; |
| 271 | typedef typename mpl::next< iter_1 > ::type iter_2; |
| 272 | typedef typename mpl::next< iter_2 > ::type iter_3; |
| 273 | typedef typename mpl::next< iter_3 > ::type iter_4; |
| 274 | typedef typename mpl::next< iter_4 > ::type iter_5; |
| 275 | typedef typename mpl::next< iter_5 > ::type iter_6; |
| 276 | typedef typename mpl::next< iter_6 > ::type iter_7; |
| 277 | typedef typename mpl::next< iter_7 > ::type iter_8; |
| 278 | typedef typename mpl::next< iter_8 > ::type iter_9; |
| 279 | public: |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 280 | typedef typename detail::NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,9) |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 281 | < typename mpl::deref< iter_0 > ::type |
| 282 | , typename mpl::deref< iter_1 > ::type |
| 283 | , typename mpl::deref< iter_2 > ::type |
| 284 | , typename mpl::deref< iter_3 > ::type |
| 285 | , typename mpl::deref< iter_4 > ::type |
| 286 | , typename mpl::deref< iter_5 > ::type |
| 287 | , typename mpl::deref< iter_6 > ::type |
| 288 | , typename mpl::deref< iter_7 > ::type |
| 289 | , typename mpl::deref< iter_8 > ::type |
| 290 | , typename mpl::deref< iter_9 > ::type |
| 291 | > ::type type; |
| 292 | }; |
| 293 | }; |
| 294 | template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 > |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 295 | struct NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,10) |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 296 | { |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 297 | typedef NDNBOOST_FT_syntax(NDNBOOST_FT_cc,type NDNBOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 NDNBOOST_FT_ell) NDNBOOST_FT_cv ; |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 298 | }; |
| 299 | template< > |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 300 | struct synthesize_impl_o< NDNBOOST_FT_flags, NDNBOOST_FT_cc_id, 11 > |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 301 | { |
| 302 | template<typename S> struct synthesize_impl_i |
| 303 | { |
| 304 | private: |
| 305 | typedef typename mpl::begin<S> ::type iter_0; |
| 306 | typedef typename mpl::next< iter_0 > ::type iter_1; |
| 307 | typedef typename mpl::next< iter_1 > ::type iter_2; |
| 308 | typedef typename mpl::next< iter_2 > ::type iter_3; |
| 309 | typedef typename mpl::next< iter_3 > ::type iter_4; |
| 310 | typedef typename mpl::next< iter_4 > ::type iter_5; |
| 311 | typedef typename mpl::next< iter_5 > ::type iter_6; |
| 312 | typedef typename mpl::next< iter_6 > ::type iter_7; |
| 313 | typedef typename mpl::next< iter_7 > ::type iter_8; |
| 314 | typedef typename mpl::next< iter_8 > ::type iter_9; |
| 315 | typedef typename mpl::next< iter_9 > ::type iter_10; |
| 316 | public: |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 317 | typedef typename detail::NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,10) |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 318 | < typename mpl::deref< iter_0 > ::type |
| 319 | , typename mpl::deref< iter_1 > ::type |
| 320 | , typename mpl::deref< iter_2 > ::type |
| 321 | , typename mpl::deref< iter_3 > ::type |
| 322 | , typename mpl::deref< iter_4 > ::type |
| 323 | , typename mpl::deref< iter_5 > ::type |
| 324 | , typename mpl::deref< iter_6 > ::type |
| 325 | , typename mpl::deref< iter_7 > ::type |
| 326 | , typename mpl::deref< iter_8 > ::type |
| 327 | , typename mpl::deref< iter_9 > ::type |
| 328 | , typename mpl::deref< iter_10 > ::type |
| 329 | > ::type type; |
| 330 | }; |
| 331 | }; |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 332 | # undef NDNBOOST_FT_make_type |
| 333 | # undef NDNBOOST_FT_make_type_impl |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 334 | |