sl@0: // sl@0: // bind/bind_cc.hpp - support for different calling conventions sl@0: // sl@0: // Do not include this header directly. sl@0: // sl@0: // Copyright (c) 2001 Peter Dimov and Multi Media Ltd. sl@0: // sl@0: // Distributed under the Boost Software License, Version 1.0. (See sl@0: // accompanying file LICENSE_1_0.txt or copy at sl@0: // http://www.boost.org/LICENSE_1_0.txt) sl@0: // sl@0: // See http://www.boost.org/libs/bind/bind.html for documentation. sl@0: // sl@0: sl@0: template sl@0: _bi::bind_t sl@0: BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) ()) sl@0: { sl@0: typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (); sl@0: typedef _bi::list0 list_type; sl@0: return _bi::bind_t (f, list_type()); sl@0: } sl@0: sl@0: template sl@0: _bi::bind_t::type> sl@0: BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1), A1 a1) sl@0: { sl@0: typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1); sl@0: typedef typename _bi::list_av_1::type list_type; sl@0: return _bi::bind_t (f, list_type(a1)); sl@0: } sl@0: sl@0: template sl@0: _bi::bind_t::type> sl@0: BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2), A1 a1, A2 a2) sl@0: { sl@0: typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2); sl@0: typedef typename _bi::list_av_2::type list_type; sl@0: return _bi::bind_t (f, list_type(a1, a2)); sl@0: } sl@0: sl@0: template sl@0: _bi::bind_t::type> sl@0: BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3), A1 a1, A2 a2, A3 a3) sl@0: { sl@0: typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3); sl@0: typedef typename _bi::list_av_3::type list_type; sl@0: return _bi::bind_t(f, list_type(a1, a2, a3)); sl@0: } sl@0: sl@0: template sl@0: _bi::bind_t::type> sl@0: BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4), A1 a1, A2 a2, A3 a3, A4 a4) sl@0: { sl@0: typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4); sl@0: typedef typename _bi::list_av_4::type list_type; sl@0: return _bi::bind_t(f, list_type(a1, a2, a3, a4)); sl@0: } sl@0: sl@0: template sl@0: _bi::bind_t::type> sl@0: BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4, B5), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) sl@0: { sl@0: typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4, B5); sl@0: typedef typename _bi::list_av_5::type list_type; sl@0: return _bi::bind_t(f, list_type(a1, a2, a3, a4, a5)); sl@0: } sl@0: sl@0: template sl@0: _bi::bind_t::type> sl@0: BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4, B5, B6), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) sl@0: { sl@0: typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4, B5, B6); sl@0: typedef typename _bi::list_av_6::type list_type; sl@0: return _bi::bind_t(f, list_type(a1, a2, a3, a4, a5, a6)); sl@0: } sl@0: sl@0: template sl@0: _bi::bind_t::type> sl@0: BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4, B5, B6, B7), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) sl@0: { sl@0: typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4, B5, B6, B7); sl@0: typedef typename _bi::list_av_7::type list_type; sl@0: return _bi::bind_t(f, list_type(a1, a2, a3, a4, a5, a6, a7)); sl@0: } sl@0: sl@0: template sl@0: _bi::bind_t::type> sl@0: BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4, B5, B6, B7, B8), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) sl@0: { sl@0: typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4, B5, B6, B7, B8); sl@0: typedef typename _bi::list_av_8::type list_type; sl@0: return _bi::bind_t(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8)); sl@0: } sl@0: sl@0: template sl@0: _bi::bind_t::type> sl@0: BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4, B5, B6, B7, B8, B9), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) sl@0: { sl@0: typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4, B5, B6, B7, B8, B9); sl@0: typedef typename _bi::list_av_9::type list_type; sl@0: return _bi::bind_t(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9)); sl@0: }