File indexing completed on 2025-02-23 09:48:22
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 template <>
0015 struct member_function_ptr_impl<1>
0016 {
0017 template <typename RT, typename FP>
0018 struct impl
0019 {
0020 typedef RT result_type;
0021 impl(FP fp_)
0022 : fp(fp_) {}
0023 template <typename Class, typename A0>
0024 RT operator()(Class& obj, A0 & a0) const
0025 {
0026 BOOST_PROTO_USE_GET_POINTER();
0027 typedef typename proto::detail::class_member_traits<FP>::class_type class_type;
0028 return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0);
0029 }
0030 template <typename Class, typename A0>
0031 RT operator()(Class* obj, A0 & a0) const
0032 {
0033 return (obj->*fp)(a0);
0034 }
0035 FP fp;
0036 };
0037 };
0038
0039
0040
0041
0042
0043
0044
0045 template <>
0046 struct member_function_ptr_impl<2>
0047 {
0048 template <typename RT, typename FP>
0049 struct impl
0050 {
0051 typedef RT result_type;
0052 impl(FP fp_)
0053 : fp(fp_) {}
0054 template <typename Class, typename A0 , typename A1>
0055 RT operator()(Class& obj, A0 & a0 , A1 & a1) const
0056 {
0057 BOOST_PROTO_USE_GET_POINTER();
0058 typedef typename proto::detail::class_member_traits<FP>::class_type class_type;
0059 return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0 , a1);
0060 }
0061 template <typename Class, typename A0 , typename A1>
0062 RT operator()(Class* obj, A0 & a0 , A1 & a1) const
0063 {
0064 return (obj->*fp)(a0 , a1);
0065 }
0066 FP fp;
0067 };
0068 };
0069
0070
0071
0072
0073
0074
0075
0076 template <>
0077 struct member_function_ptr_impl<3>
0078 {
0079 template <typename RT, typename FP>
0080 struct impl
0081 {
0082 typedef RT result_type;
0083 impl(FP fp_)
0084 : fp(fp_) {}
0085 template <typename Class, typename A0 , typename A1 , typename A2>
0086 RT operator()(Class& obj, A0 & a0 , A1 & a1 , A2 & a2) const
0087 {
0088 BOOST_PROTO_USE_GET_POINTER();
0089 typedef typename proto::detail::class_member_traits<FP>::class_type class_type;
0090 return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0 , a1 , a2);
0091 }
0092 template <typename Class, typename A0 , typename A1 , typename A2>
0093 RT operator()(Class* obj, A0 & a0 , A1 & a1 , A2 & a2) const
0094 {
0095 return (obj->*fp)(a0 , a1 , a2);
0096 }
0097 FP fp;
0098 };
0099 };
0100
0101
0102
0103
0104
0105
0106
0107 template <>
0108 struct member_function_ptr_impl<4>
0109 {
0110 template <typename RT, typename FP>
0111 struct impl
0112 {
0113 typedef RT result_type;
0114 impl(FP fp_)
0115 : fp(fp_) {}
0116 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3>
0117 RT operator()(Class& obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3) const
0118 {
0119 BOOST_PROTO_USE_GET_POINTER();
0120 typedef typename proto::detail::class_member_traits<FP>::class_type class_type;
0121 return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0 , a1 , a2 , a3);
0122 }
0123 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3>
0124 RT operator()(Class* obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3) const
0125 {
0126 return (obj->*fp)(a0 , a1 , a2 , a3);
0127 }
0128 FP fp;
0129 };
0130 };
0131
0132
0133
0134
0135
0136
0137
0138 template <>
0139 struct member_function_ptr_impl<5>
0140 {
0141 template <typename RT, typename FP>
0142 struct impl
0143 {
0144 typedef RT result_type;
0145 impl(FP fp_)
0146 : fp(fp_) {}
0147 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
0148 RT operator()(Class& obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4) const
0149 {
0150 BOOST_PROTO_USE_GET_POINTER();
0151 typedef typename proto::detail::class_member_traits<FP>::class_type class_type;
0152 return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0 , a1 , a2 , a3 , a4);
0153 }
0154 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
0155 RT operator()(Class* obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4) const
0156 {
0157 return (obj->*fp)(a0 , a1 , a2 , a3 , a4);
0158 }
0159 FP fp;
0160 };
0161 };
0162
0163
0164
0165
0166
0167
0168
0169 template <>
0170 struct member_function_ptr_impl<6>
0171 {
0172 template <typename RT, typename FP>
0173 struct impl
0174 {
0175 typedef RT result_type;
0176 impl(FP fp_)
0177 : fp(fp_) {}
0178 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
0179 RT operator()(Class& obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5) const
0180 {
0181 BOOST_PROTO_USE_GET_POINTER();
0182 typedef typename proto::detail::class_member_traits<FP>::class_type class_type;
0183 return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0 , a1 , a2 , a3 , a4 , a5);
0184 }
0185 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
0186 RT operator()(Class* obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5) const
0187 {
0188 return (obj->*fp)(a0 , a1 , a2 , a3 , a4 , a5);
0189 }
0190 FP fp;
0191 };
0192 };
0193
0194
0195
0196
0197
0198
0199
0200 template <>
0201 struct member_function_ptr_impl<7>
0202 {
0203 template <typename RT, typename FP>
0204 struct impl
0205 {
0206 typedef RT result_type;
0207 impl(FP fp_)
0208 : fp(fp_) {}
0209 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
0210 RT operator()(Class& obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6) const
0211 {
0212 BOOST_PROTO_USE_GET_POINTER();
0213 typedef typename proto::detail::class_member_traits<FP>::class_type class_type;
0214 return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6);
0215 }
0216 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
0217 RT operator()(Class* obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6) const
0218 {
0219 return (obj->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6);
0220 }
0221 FP fp;
0222 };
0223 };
0224
0225
0226
0227
0228
0229
0230
0231 template <>
0232 struct member_function_ptr_impl<8>
0233 {
0234 template <typename RT, typename FP>
0235 struct impl
0236 {
0237 typedef RT result_type;
0238 impl(FP fp_)
0239 : fp(fp_) {}
0240 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
0241 RT operator()(Class& obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7) const
0242 {
0243 BOOST_PROTO_USE_GET_POINTER();
0244 typedef typename proto::detail::class_member_traits<FP>::class_type class_type;
0245 return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
0246 }
0247 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
0248 RT operator()(Class* obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7) const
0249 {
0250 return (obj->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
0251 }
0252 FP fp;
0253 };
0254 };
0255
0256
0257
0258
0259
0260
0261
0262 template <>
0263 struct member_function_ptr_impl<9>
0264 {
0265 template <typename RT, typename FP>
0266 struct impl
0267 {
0268 typedef RT result_type;
0269 impl(FP fp_)
0270 : fp(fp_) {}
0271 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
0272 RT operator()(Class& obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8) const
0273 {
0274 BOOST_PROTO_USE_GET_POINTER();
0275 typedef typename proto::detail::class_member_traits<FP>::class_type class_type;
0276 return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
0277 }
0278 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
0279 RT operator()(Class* obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8) const
0280 {
0281 return (obj->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
0282 }
0283 FP fp;
0284 };
0285 };
0286
0287
0288
0289
0290
0291
0292
0293 template <>
0294 struct member_function_ptr_impl<10>
0295 {
0296 template <typename RT, typename FP>
0297 struct impl
0298 {
0299 typedef RT result_type;
0300 impl(FP fp_)
0301 : fp(fp_) {}
0302 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
0303 RT operator()(Class& obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9) const
0304 {
0305 BOOST_PROTO_USE_GET_POINTER();
0306 typedef typename proto::detail::class_member_traits<FP>::class_type class_type;
0307 return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);
0308 }
0309 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
0310 RT operator()(Class* obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9) const
0311 {
0312 return (obj->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);
0313 }
0314 FP fp;
0315 };
0316 };