/extlibs/Boost/include/boost/mpl/aux_/preprocessed/bcc/bind.hpp
C++ Header | 397 lines | 321 code | 46 blank | 30 comment | 0 complexity | c4db8a906a581c2a4b3b54c86a66357f MD5 | raw file
1 2// Copyright Peter Dimov 2001 3// Copyright Aleksey Gurtovoy 2001-2004 4// 5// Distributed under the Boost Software License, Version 1.0. 6// (See accompanying file LICENSE_1_0.txt or copy at 7// http://www.boost.org/LICENSE_1_0.txt) 8// 9 10// *Preprocessed* version of the main "bind.hpp" header 11// -- DO NOT modify by hand! 12 13namespace boost { namespace mpl { 14 15namespace aux { 16 17template< 18 typename T, typename U1, typename U2, typename U3, typename U4 19 , typename U5 20 > 21struct resolve_bind_arg 22{ 23 typedef T type; 24}; 25 26template< 27 typename T 28 , typename Arg 29 > 30struct replace_unnamed_arg 31{ 32 typedef Arg next; 33 typedef T type; 34}; 35 36template< 37 typename Arg 38 > 39struct replace_unnamed_arg< arg< -1 >, Arg > 40{ 41 typedef typename Arg::next next; 42 typedef Arg type; 43}; 44 45template< 46 int N, typename U1, typename U2, typename U3, typename U4, typename U5 47 > 48struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 > 49{ 50 typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type; 51}; 52 53} // namespace aux 54 55template< 56 typename F 57 > 58struct bind0 59{ 60 template< 61 typename U1, typename U2, typename U3, typename U4, typename U5 62 > 63 struct apply 64 { 65 private: 66 typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0; 67 typedef typename r0::type a0; 68 typedef typename r0::next n1; 69 typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_; 70 /// 71 public: 72 typedef typename apply_wrap0< 73 f_ 74 >::type type; 75 76 }; 77}; 78 79namespace aux { 80 81template< 82 typename F, typename U1, typename U2, typename U3, typename U4 83 , typename U5 84 > 85struct resolve_bind_arg< 86 bind0<F>, U1, U2, U3, U4, U5 87 > 88{ 89 typedef bind0<F> f_; 90 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type; 91}; 92 93} // namespace aux 94 95BOOST_MPL_AUX_ARITY_SPEC(1, bind0) 96BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0) 97 98template< 99 typename F, typename T1 100 > 101struct bind1 102{ 103 template< 104 typename U1, typename U2, typename U3, typename U4, typename U5 105 > 106 struct apply 107 { 108 private: 109 typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0; 110 typedef typename r0::type a0; 111 typedef typename r0::next n1; 112 typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_; 113 /// 114 typedef aux::replace_unnamed_arg< T1,n1 > r1; 115 typedef typename r1::type a1; 116 typedef typename r1::next n2; 117 typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1; 118 /// 119 public: 120 typedef typename apply_wrap1< 121 f_ 122 , typename t1::type 123 >::type type; 124 125 }; 126}; 127 128namespace aux { 129 130template< 131 typename F, typename T1, typename U1, typename U2, typename U3 132 , typename U4, typename U5 133 > 134struct resolve_bind_arg< 135 bind1< F,T1 >, U1, U2, U3, U4, U5 136 > 137{ 138 typedef bind1< F,T1 > f_; 139 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type; 140}; 141 142} // namespace aux 143 144BOOST_MPL_AUX_ARITY_SPEC(2, bind1) 145BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1) 146 147template< 148 typename F, typename T1, typename T2 149 > 150struct bind2 151{ 152 template< 153 typename U1, typename U2, typename U3, typename U4, typename U5 154 > 155 struct apply 156 { 157 private: 158 typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0; 159 typedef typename r0::type a0; 160 typedef typename r0::next n1; 161 typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_; 162 /// 163 typedef aux::replace_unnamed_arg< T1,n1 > r1; 164 typedef typename r1::type a1; 165 typedef typename r1::next n2; 166 typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1; 167 /// 168 typedef aux::replace_unnamed_arg< T2,n2 > r2; 169 typedef typename r2::type a2; 170 typedef typename r2::next n3; 171 typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2; 172 /// 173 public: 174 typedef typename apply_wrap2< 175 f_ 176 , typename t1::type, typename t2::type 177 >::type type; 178 179 }; 180}; 181 182namespace aux { 183 184template< 185 typename F, typename T1, typename T2, typename U1, typename U2 186 , typename U3, typename U4, typename U5 187 > 188struct resolve_bind_arg< 189 bind2< F,T1,T2 >, U1, U2, U3, U4, U5 190 > 191{ 192 typedef bind2< F,T1,T2 > f_; 193 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type; 194}; 195 196} // namespace aux 197 198BOOST_MPL_AUX_ARITY_SPEC(3, bind2) 199BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2) 200 201template< 202 typename F, typename T1, typename T2, typename T3 203 > 204struct bind3 205{ 206 template< 207 typename U1, typename U2, typename U3, typename U4, typename U5 208 > 209 struct apply 210 { 211 private: 212 typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0; 213 typedef typename r0::type a0; 214 typedef typename r0::next n1; 215 typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_; 216 /// 217 typedef aux::replace_unnamed_arg< T1,n1 > r1; 218 typedef typename r1::type a1; 219 typedef typename r1::next n2; 220 typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1; 221 /// 222 typedef aux::replace_unnamed_arg< T2,n2 > r2; 223 typedef typename r2::type a2; 224 typedef typename r2::next n3; 225 typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2; 226 /// 227 typedef aux::replace_unnamed_arg< T3,n3 > r3; 228 typedef typename r3::type a3; 229 typedef typename r3::next n4; 230 typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3; 231 /// 232 public: 233 typedef typename apply_wrap3< 234 f_ 235 , typename t1::type, typename t2::type, typename t3::type 236 >::type type; 237 238 }; 239}; 240 241namespace aux { 242 243template< 244 typename F, typename T1, typename T2, typename T3, typename U1 245 , typename U2, typename U3, typename U4, typename U5 246 > 247struct resolve_bind_arg< 248 bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5 249 > 250{ 251 typedef bind3< F,T1,T2,T3 > f_; 252 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type; 253}; 254 255} // namespace aux 256 257BOOST_MPL_AUX_ARITY_SPEC(4, bind3) 258BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3) 259 260template< 261 typename F, typename T1, typename T2, typename T3, typename T4 262 > 263struct bind4 264{ 265 template< 266 typename U1, typename U2, typename U3, typename U4, typename U5 267 > 268 struct apply 269 { 270 private: 271 typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0; 272 typedef typename r0::type a0; 273 typedef typename r0::next n1; 274 typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_; 275 /// 276 typedef aux::replace_unnamed_arg< T1,n1 > r1; 277 typedef typename r1::type a1; 278 typedef typename r1::next n2; 279 typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1; 280 /// 281 typedef aux::replace_unnamed_arg< T2,n2 > r2; 282 typedef typename r2::type a2; 283 typedef typename r2::next n3; 284 typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2; 285 /// 286 typedef aux::replace_unnamed_arg< T3,n3 > r3; 287 typedef typename r3::type a3; 288 typedef typename r3::next n4; 289 typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3; 290 /// 291 typedef aux::replace_unnamed_arg< T4,n4 > r4; 292 typedef typename r4::type a4; 293 typedef typename r4::next n5; 294 typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4; 295 /// 296 public: 297 typedef typename apply_wrap4< 298 f_ 299 , typename t1::type, typename t2::type, typename t3::type 300 , typename t4::type 301 >::type type; 302 303 }; 304}; 305 306namespace aux { 307 308template< 309 typename F, typename T1, typename T2, typename T3, typename T4 310 , typename U1, typename U2, typename U3, typename U4, typename U5 311 > 312struct resolve_bind_arg< 313 bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5 314 > 315{ 316 typedef bind4< F,T1,T2,T3,T4 > f_; 317 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type; 318}; 319 320} // namespace aux 321 322BOOST_MPL_AUX_ARITY_SPEC(5, bind4) 323BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4) 324 325template< 326 typename F, typename T1, typename T2, typename T3, typename T4 327 , typename T5 328 > 329struct bind5 330{ 331 template< 332 typename U1, typename U2, typename U3, typename U4, typename U5 333 > 334 struct apply 335 { 336 private: 337 typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0; 338 typedef typename r0::type a0; 339 typedef typename r0::next n1; 340 typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_; 341 /// 342 typedef aux::replace_unnamed_arg< T1,n1 > r1; 343 typedef typename r1::type a1; 344 typedef typename r1::next n2; 345 typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1; 346 /// 347 typedef aux::replace_unnamed_arg< T2,n2 > r2; 348 typedef typename r2::type a2; 349 typedef typename r2::next n3; 350 typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2; 351 /// 352 typedef aux::replace_unnamed_arg< T3,n3 > r3; 353 typedef typename r3::type a3; 354 typedef typename r3::next n4; 355 typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3; 356 /// 357 typedef aux::replace_unnamed_arg< T4,n4 > r4; 358 typedef typename r4::type a4; 359 typedef typename r4::next n5; 360 typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4; 361 /// 362 typedef aux::replace_unnamed_arg< T5,n5 > r5; 363 typedef typename r5::type a5; 364 typedef typename r5::next n6; 365 typedef aux::resolve_bind_arg< a5,U1,U2,U3,U4,U5 > t5; 366 /// 367 public: 368 typedef typename apply_wrap5< 369 f_ 370 , typename t1::type, typename t2::type, typename t3::type 371 , typename t4::type, typename t5::type 372 >::type type; 373 374 }; 375}; 376 377namespace aux { 378 379template< 380 typename F, typename T1, typename T2, typename T3, typename T4 381 , typename T5, typename U1, typename U2, typename U3, typename U4 382 , typename U5 383 > 384struct resolve_bind_arg< 385 bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5 386 > 387{ 388 typedef bind5< F,T1,T2,T3,T4,T5 > f_; 389 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type; 390}; 391 392} // namespace aux 393 394BOOST_MPL_AUX_ARITY_SPEC(6, bind5) 395BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5) 396}} 397