Chris@16: // Chris@16: // bind/bind_mf_cc.hpp - support for different calling conventions Chris@16: // Chris@16: // Do not include this header directly. Chris@16: // Chris@16: // Copyright (c) 2001 Peter Dimov and Multi Media Ltd. Chris@16: // Chris@16: // Distributed under the Boost Software License, Version 1.0. (See Chris@16: // accompanying file LICENSE_1_0.txt or copy at Chris@16: // http://www.boost.org/LICENSE_1_0.txt) Chris@16: // Chris@16: // See http://www.boost.org/libs/bind/bind.html for documentation. Chris@16: // Chris@16: Chris@16: // 0 Chris@16: Chris@16: template Chris@16: _bi::bind_t, typename _bi::list_av_1::type> Chris@16: BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (), A1 a1) Chris@16: { Chris@16: typedef _mfi::BOOST_BIND_MF_NAME(mf0) F; Chris@16: typedef typename _bi::list_av_1::type list_type; Chris@16: return _bi::bind_t(F(f), list_type(a1)); Chris@16: } Chris@16: Chris@16: template Chris@16: _bi::bind_t, typename _bi::list_av_1::type> Chris@16: BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) () const, A1 a1) Chris@16: { Chris@16: typedef _mfi::BOOST_BIND_MF_NAME(cmf0) F; Chris@16: typedef typename _bi::list_av_1::type list_type; Chris@16: return _bi::bind_t(F(f), list_type(a1)); Chris@16: } Chris@16: Chris@101: template Chris@101: typename boost::enable_if_c::value, Chris@101: _bi::bind_t, typename _bi::list_av_1::type> Chris@101: >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (), A1 a1) Chris@101: { Chris@101: typedef _mfi::BOOST_BIND_MF_NAME(mf0) F; Chris@101: typedef typename _bi::list_av_1::type list_type; Chris@101: return _bi::bind_t(F(f), list_type(a1)); Chris@101: } Chris@101: Chris@101: template Chris@101: typename boost::enable_if_c::value, Chris@101: _bi::bind_t, typename _bi::list_av_1::type> Chris@101: >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) () const, A1 a1) Chris@101: { Chris@101: typedef _mfi::BOOST_BIND_MF_NAME(cmf0) F; Chris@101: typedef typename _bi::list_av_1::type list_type; Chris@101: return _bi::bind_t(F(f), list_type(a1)); Chris@101: } Chris@101: Chris@16: // 1 Chris@16: Chris@16: template Chris@16: _bi::bind_t, typename _bi::list_av_2::type> Chris@16: BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1), A1 a1, A2 a2) Chris@16: { Chris@16: typedef _mfi::BOOST_BIND_MF_NAME(mf1) F; Chris@16: typedef typename _bi::list_av_2::type list_type; Chris@16: return _bi::bind_t(F(f), list_type(a1, a2)); Chris@16: } Chris@16: Chris@16: template Chris@16: _bi::bind_t, typename _bi::list_av_2::type> Chris@16: BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1) const, A1 a1, A2 a2) Chris@16: { Chris@16: typedef _mfi::BOOST_BIND_MF_NAME(cmf1) F; Chris@16: typedef typename _bi::list_av_2::type list_type; Chris@16: return _bi::bind_t(F(f), list_type(a1, a2)); Chris@16: } Chris@16: Chris@101: template Chris@101: typename boost::enable_if_c::value, Chris@101: _bi::bind_t, typename _bi::list_av_2::type> Chris@101: >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1), A1 a1, A2 a2) Chris@101: { Chris@101: typedef _mfi::BOOST_BIND_MF_NAME(mf1) F; Chris@101: typedef typename _bi::list_av_2::type list_type; Chris@101: return _bi::bind_t(F(f), list_type(a1, a2)); Chris@101: } Chris@101: Chris@101: template Chris@101: typename boost::enable_if_c::value, Chris@101: _bi::bind_t, typename _bi::list_av_2::type> Chris@101: >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1) const, A1 a1, A2 a2) Chris@101: { Chris@101: typedef _mfi::BOOST_BIND_MF_NAME(cmf1) F; Chris@101: typedef typename _bi::list_av_2::type list_type; Chris@101: return _bi::bind_t(F(f), list_type(a1, a2)); Chris@101: } Chris@101: Chris@16: // 2 Chris@16: Chris@16: template Chris@16: _bi::bind_t, typename _bi::list_av_3::type> Chris@16: BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2), A1 a1, A2 a2, A3 a3) Chris@16: { Chris@16: typedef _mfi::BOOST_BIND_MF_NAME(mf2) F; Chris@16: typedef typename _bi::list_av_3::type list_type; Chris@16: return _bi::bind_t(F(f), list_type(a1, a2, a3)); Chris@16: } Chris@16: Chris@16: template Chris@16: _bi::bind_t, typename _bi::list_av_3::type> Chris@16: BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2) const, A1 a1, A2 a2, A3 a3) Chris@16: { Chris@16: typedef _mfi::BOOST_BIND_MF_NAME(cmf2) F; Chris@16: typedef typename _bi::list_av_3::type list_type; Chris@16: return _bi::bind_t(F(f), list_type(a1, a2, a3)); Chris@16: } Chris@16: Chris@101: template Chris@101: typename boost::enable_if_c::value, Chris@101: _bi::bind_t, typename _bi::list_av_3::type> Chris@101: >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2), A1 a1, A2 a2, A3 a3) Chris@101: { Chris@101: typedef _mfi::BOOST_BIND_MF_NAME(mf2) F; Chris@101: typedef typename _bi::list_av_3::type list_type; Chris@101: return _bi::bind_t(F(f), list_type(a1, a2, a3)); Chris@101: } Chris@101: Chris@101: template Chris@101: typename boost::enable_if_c::value, Chris@101: _bi::bind_t, typename _bi::list_av_3::type> Chris@101: >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2) const, A1 a1, A2 a2, A3 a3) Chris@101: { Chris@101: typedef _mfi::BOOST_BIND_MF_NAME(cmf2) F; Chris@101: typedef typename _bi::list_av_3::type list_type; Chris@101: return _bi::bind_t(F(f), list_type(a1, a2, a3)); Chris@101: } Chris@101: Chris@16: // 3 Chris@16: Chris@16: template Chris@16: _bi::bind_t, typename _bi::list_av_4::type> Chris@16: BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3), A1 a1, A2 a2, A3 a3, A4 a4) Chris@16: { Chris@16: typedef _mfi::BOOST_BIND_MF_NAME(mf3) F; Chris@16: typedef typename _bi::list_av_4::type list_type; Chris@16: return _bi::bind_t(F(f), list_type(a1, a2, a3, a4)); Chris@16: } Chris@16: Chris@16: template Chris@16: _bi::bind_t, typename _bi::list_av_4::type> Chris@16: BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) const, A1 a1, A2 a2, A3 a3, A4 a4) Chris@16: { Chris@16: typedef _mfi::BOOST_BIND_MF_NAME(cmf3) F; Chris@16: typedef typename _bi::list_av_4::type list_type; Chris@16: return _bi::bind_t(F(f), list_type(a1, a2, a3, a4)); Chris@16: } Chris@16: Chris@101: template Chris@101: typename boost::enable_if_c::value, Chris@101: _bi::bind_t, typename _bi::list_av_4::type> Chris@101: >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3), A1 a1, A2 a2, A3 a3, A4 a4) Chris@101: { Chris@101: typedef _mfi::BOOST_BIND_MF_NAME(mf3) F; Chris@101: typedef typename _bi::list_av_4::type list_type; Chris@101: return _bi::bind_t(F(f), list_type(a1, a2, a3, a4)); Chris@101: } Chris@101: Chris@101: template Chris@101: typename boost::enable_if_c::value, Chris@101: _bi::bind_t, typename _bi::list_av_4::type> Chris@101: >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) const, A1 a1, A2 a2, A3 a3, A4 a4) Chris@101: { Chris@101: typedef _mfi::BOOST_BIND_MF_NAME(cmf3) F; Chris@101: typedef typename _bi::list_av_4::type list_type; Chris@101: return _bi::bind_t(F(f), list_type(a1, a2, a3, a4)); Chris@101: } Chris@101: Chris@16: // 4 Chris@16: Chris@16: template Chris@16: _bi::bind_t, typename _bi::list_av_5::type> Chris@16: BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) Chris@16: { Chris@16: typedef _mfi::BOOST_BIND_MF_NAME(mf4) F; Chris@16: typedef typename _bi::list_av_5::type list_type; Chris@16: return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5)); Chris@16: } Chris@16: Chris@16: template Chris@16: _bi::bind_t, typename _bi::list_av_5::type> Chris@16: BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) Chris@16: { Chris@16: typedef _mfi::BOOST_BIND_MF_NAME(cmf4) F; Chris@16: typedef typename _bi::list_av_5::type list_type; Chris@16: return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5)); Chris@16: } Chris@16: Chris@101: template Chris@101: typename boost::enable_if_c::value, Chris@101: _bi::bind_t, typename _bi::list_av_5::type> Chris@101: >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) Chris@101: { Chris@101: typedef _mfi::BOOST_BIND_MF_NAME(mf4) F; Chris@101: typedef typename _bi::list_av_5::type list_type; Chris@101: return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5)); Chris@101: } Chris@101: Chris@101: template Chris@101: typename boost::enable_if_c::value, Chris@101: _bi::bind_t, typename _bi::list_av_5::type> Chris@101: >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) Chris@101: { Chris@101: typedef _mfi::BOOST_BIND_MF_NAME(cmf4) F; Chris@101: typedef typename _bi::list_av_5::type list_type; Chris@101: return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5)); Chris@101: } Chris@101: Chris@16: // 5 Chris@16: Chris@16: template Chris@16: _bi::bind_t, typename _bi::list_av_6::type> Chris@16: BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) Chris@16: { Chris@16: typedef _mfi::BOOST_BIND_MF_NAME(mf5) F; Chris@16: typedef typename _bi::list_av_6::type list_type; Chris@16: return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5, a6)); Chris@16: } Chris@16: Chris@16: template Chris@16: _bi::bind_t, typename _bi::list_av_6::type> Chris@16: BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) Chris@16: { Chris@16: typedef _mfi::BOOST_BIND_MF_NAME(cmf5) F; Chris@16: typedef typename _bi::list_av_6::type list_type; Chris@16: return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5, a6)); Chris@16: } Chris@16: Chris@101: template Chris@101: typename boost::enable_if_c::value, Chris@101: _bi::bind_t, typename _bi::list_av_6::type> Chris@101: >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) Chris@101: { Chris@101: typedef _mfi::BOOST_BIND_MF_NAME(mf5) F; Chris@101: typedef typename _bi::list_av_6::type list_type; Chris@101: return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5, a6)); Chris@101: } Chris@101: Chris@101: template Chris@101: typename boost::enable_if_c::value, Chris@101: _bi::bind_t, typename _bi::list_av_6::type> Chris@101: >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) Chris@101: { Chris@101: typedef _mfi::BOOST_BIND_MF_NAME(cmf5) F; Chris@101: typedef typename _bi::list_av_6::type list_type; Chris@101: return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5, a6)); Chris@101: } Chris@101: Chris@16: // 6 Chris@16: Chris@16: template Chris@16: _bi::bind_t, typename _bi::list_av_7::type> Chris@16: BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) Chris@16: { Chris@16: typedef _mfi::BOOST_BIND_MF_NAME(mf6) F; Chris@16: typedef typename _bi::list_av_7::type list_type; Chris@16: return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5, a6, a7)); Chris@16: } Chris@16: Chris@16: template Chris@16: _bi::bind_t, typename _bi::list_av_7::type> Chris@16: BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) Chris@16: { Chris@16: typedef _mfi::BOOST_BIND_MF_NAME(cmf6) F; Chris@16: typedef typename _bi::list_av_7::type list_type; Chris@16: return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5, a6, a7)); Chris@16: } Chris@16: Chris@101: template Chris@101: typename boost::enable_if_c::value, Chris@101: _bi::bind_t, typename _bi::list_av_7::type> Chris@101: >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) Chris@101: { Chris@101: typedef _mfi::BOOST_BIND_MF_NAME(mf6) F; Chris@101: typedef typename _bi::list_av_7::type list_type; Chris@101: return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5, a6, a7)); Chris@101: } Chris@101: Chris@101: template Chris@101: typename boost::enable_if_c::value, Chris@101: _bi::bind_t, typename _bi::list_av_7::type> Chris@101: >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) Chris@101: { Chris@101: typedef _mfi::BOOST_BIND_MF_NAME(cmf6) F; Chris@101: typedef typename _bi::list_av_7::type list_type; Chris@101: return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5, a6, a7)); Chris@101: } Chris@101: Chris@16: // 7 Chris@16: Chris@16: template Chris@16: _bi::bind_t, typename _bi::list_av_8::type> Chris@16: BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) Chris@16: { Chris@16: typedef _mfi::BOOST_BIND_MF_NAME(mf7) F; Chris@16: typedef typename _bi::list_av_8::type list_type; Chris@16: return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8)); Chris@16: } Chris@16: Chris@16: template Chris@16: _bi::bind_t, typename _bi::list_av_8::type> Chris@16: BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) Chris@16: { Chris@16: typedef _mfi::BOOST_BIND_MF_NAME(cmf7) F; Chris@16: typedef typename _bi::list_av_8::type list_type; Chris@16: return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8)); Chris@16: } Chris@16: Chris@101: template Chris@101: typename boost::enable_if_c::value, Chris@101: _bi::bind_t, typename _bi::list_av_8::type> Chris@101: >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) Chris@101: { Chris@101: typedef _mfi::BOOST_BIND_MF_NAME(mf7) F; Chris@101: typedef typename _bi::list_av_8::type list_type; Chris@101: return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8)); Chris@101: } Chris@101: Chris@101: template Chris@101: typename boost::enable_if_c::value, Chris@101: _bi::bind_t, typename _bi::list_av_8::type> Chris@101: >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) Chris@101: { Chris@101: typedef _mfi::BOOST_BIND_MF_NAME(cmf7) F; Chris@101: typedef typename _bi::list_av_8::type list_type; Chris@101: return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8)); Chris@101: } Chris@101: Chris@16: // 8 Chris@16: Chris@16: template Chris@16: _bi::bind_t, typename _bi::list_av_9::type> Chris@16: BOOST_BIND(R (BOOST_BIND_MF_CC T::*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, A9 a9) Chris@16: { Chris@16: typedef _mfi::BOOST_BIND_MF_NAME(mf8) F; Chris@16: typedef typename _bi::list_av_9::type list_type; Chris@16: return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9)); Chris@16: } Chris@16: Chris@16: template Chris@16: _bi::bind_t, typename _bi::list_av_9::type> Chris@16: BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) Chris@16: { Chris@16: typedef _mfi::BOOST_BIND_MF_NAME(cmf8) F; Chris@16: typedef typename _bi::list_av_9::type list_type; Chris@16: return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9)); Chris@16: } Chris@101: Chris@101: template Chris@101: typename boost::enable_if_c::value, Chris@101: _bi::bind_t, typename _bi::list_av_9::type> Chris@101: >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*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, A9 a9) Chris@101: { Chris@101: typedef _mfi::BOOST_BIND_MF_NAME(mf8) F; Chris@101: typedef typename _bi::list_av_9::type list_type; Chris@101: return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9)); Chris@101: } Chris@101: Chris@101: template Chris@101: typename boost::enable_if_c::value, Chris@101: _bi::bind_t, typename _bi::list_av_9::type> Chris@101: >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) Chris@101: { Chris@101: typedef _mfi::BOOST_BIND_MF_NAME(cmf8) F; Chris@101: typedef typename _bi::list_av_9::type list_type; Chris@101: return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9)); Chris@101: }