/* * Copyright 2015, Mozilla Foundation and contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "RefCounted.h" // 0 arguments -- template class gmp_task_args_nm_0 : public gmp_task_args_base { public: explicit gmp_task_args_nm_0(M m) : m_(m) {} void Run() { m_(); } private: M m_; }; // 0 arguments -- template class gmp_task_args_nm_0_ret : public gmp_task_args_base { public: explicit gmp_task_args_nm_0_ret(M m, R *r) : m_(m), r_(r) {} virtual bool returns_value() const { return true; } void Run() { *r_ = m_(); } private: M m_; R* r_; }; // 0 arguments -- template class gmp_task_args_m_0 : public gmp_task_args_base { public: explicit gmp_task_args_m_0(C o, M m) : o_(o), m_(m) {} void Run() { ((*o_).*m_)(); } private: C o_; M m_; }; // 0 arguments -- template class gmp_task_args_m_0_ret : public gmp_task_args_base { public: explicit gmp_task_args_m_0_ret(C o, M m, R *r) : o_(o), m_(m), r_(r) {} virtual bool returns_value() const { return true; } void Run() { *r_ = ((*o_).*m_)(); } private: C o_; M m_; R* r_; }; // 1 arguments -- template class gmp_task_args_nm_1 : public gmp_task_args_base { public: explicit gmp_task_args_nm_1(M m, A0 a0) : m_(m), a0_(a0) {} void Run() { m_(a0_); } private: M m_; A0 a0_; }; // 1 arguments -- template class gmp_task_args_nm_1_ret : public gmp_task_args_base { public: explicit gmp_task_args_nm_1_ret(M m, A0 a0, R *r) : m_(m), r_(r), a0_(a0) {} virtual bool returns_value() const { return true; } void Run() { *r_ = m_(a0_); } private: M m_; R* r_; A0 a0_; }; // 1 arguments -- template class gmp_task_args_m_1 : public gmp_task_args_base { public: explicit gmp_task_args_m_1(C o, M m, A0 a0) : o_(o), m_(m), a0_(a0) {} void Run() { ((*o_).*m_)(a0_); } private: C o_; M m_; A0 a0_; }; // 1 arguments -- template class gmp_task_args_m_1_ret : public gmp_task_args_base { public: explicit gmp_task_args_m_1_ret(C o, M m, A0 a0, R *r) : o_(o), m_(m), r_(r), a0_(a0) {} virtual bool returns_value() const { return true; } void Run() { *r_ = ((*o_).*m_)(a0_); } private: C o_; M m_; R* r_; A0 a0_; }; // 2 arguments -- template class gmp_task_args_nm_2 : public gmp_task_args_base { public: explicit gmp_task_args_nm_2(M m, A0 a0, A1 a1) : m_(m), a0_(a0), a1_(a1) {} void Run() { m_(a0_, a1_); } private: M m_; A0 a0_; A1 a1_; }; // 2 arguments -- template class gmp_task_args_nm_2_ret : public gmp_task_args_base { public: explicit gmp_task_args_nm_2_ret(M m, A0 a0, A1 a1, R *r) : m_(m), r_(r), a0_(a0), a1_(a1) {} virtual bool returns_value() const { return true; } void Run() { *r_ = m_(a0_, a1_); } private: M m_; R* r_; A0 a0_; A1 a1_; }; // 2 arguments -- template class gmp_task_args_m_2 : public gmp_task_args_base { public: explicit gmp_task_args_m_2(C o, M m, A0 a0, A1 a1) : o_(o), m_(m), a0_(a0), a1_(a1) {} void Run() { ((*o_).*m_)(a0_, a1_); } private: C o_; M m_; A0 a0_; A1 a1_; }; // 2 arguments -- template class gmp_task_args_m_2_ret : public gmp_task_args_base { public: explicit gmp_task_args_m_2_ret(C o, M m, A0 a0, A1 a1, R *r) : o_(o), m_(m), r_(r), a0_(a0), a1_(a1) {} virtual bool returns_value() const { return true; } void Run() { *r_ = ((*o_).*m_)(a0_, a1_); } private: C o_; M m_; R* r_; A0 a0_; A1 a1_; }; // 3 arguments -- template class gmp_task_args_nm_3 : public gmp_task_args_base { public: explicit gmp_task_args_nm_3(M m, A0 a0, A1 a1, A2 a2) : m_(m), a0_(a0), a1_(a1), a2_(a2) {} void Run() { m_(a0_, a1_, a2_); } private: M m_; A0 a0_; A1 a1_; A2 a2_; }; // 3 arguments -- template class gmp_task_args_nm_3_ret : public gmp_task_args_base { public: explicit gmp_task_args_nm_3_ret(M m, A0 a0, A1 a1, A2 a2, R *r) : m_(m), r_(r), a0_(a0), a1_(a1), a2_(a2) {} virtual bool returns_value() const { return true; } void Run() { *r_ = m_(a0_, a1_, a2_); } private: M m_; R* r_; A0 a0_; A1 a1_; A2 a2_; }; // 3 arguments -- template class gmp_task_args_m_3 : public gmp_task_args_base { public: explicit gmp_task_args_m_3(C o, M m, A0 a0, A1 a1, A2 a2) : o_(o), m_(m), a0_(a0), a1_(a1), a2_(a2) {} void Run() { ((*o_).*m_)(a0_, a1_, a2_); } private: C o_; M m_; A0 a0_; A1 a1_; A2 a2_; }; // 3 arguments -- template class gmp_task_args_m_3_ret : public gmp_task_args_base { public: explicit gmp_task_args_m_3_ret(C o, M m, A0 a0, A1 a1, A2 a2, R *r) : o_(o), m_(m), r_(r), a0_(a0), a1_(a1), a2_(a2) {} virtual bool returns_value() const { return true; } void Run() { *r_ = ((*o_).*m_)(a0_, a1_, a2_); } private: C o_; M m_; R* r_; A0 a0_; A1 a1_; A2 a2_; }; // 4 arguments -- template class gmp_task_args_nm_4 : public gmp_task_args_base { public: explicit gmp_task_args_nm_4(M m, A0 a0, A1 a1, A2 a2, A3 a3) : m_(m), a0_(a0), a1_(a1), a2_(a2), a3_(a3) {} void Run() { m_(a0_, a1_, a2_, a3_); } private: M m_; A0 a0_; A1 a1_; A2 a2_; A3 a3_; }; // 4 arguments -- template class gmp_task_args_nm_4_ret : public gmp_task_args_base { public: explicit gmp_task_args_nm_4_ret(M m, A0 a0, A1 a1, A2 a2, A3 a3, R *r) : m_(m), r_(r), a0_(a0), a1_(a1), a2_(a2), a3_(a3) {} virtual bool returns_value() const { return true; } void Run() { *r_ = m_(a0_, a1_, a2_, a3_); } private: M m_; R* r_; A0 a0_; A1 a1_; A2 a2_; A3 a3_; }; // 4 arguments -- template class gmp_task_args_m_4 : public gmp_task_args_base { public: explicit gmp_task_args_m_4(C o, M m, A0 a0, A1 a1, A2 a2, A3 a3) : o_(o), m_(m), a0_(a0), a1_(a1), a2_(a2), a3_(a3) {} void Run() { ((*o_).*m_)(a0_, a1_, a2_, a3_); } private: C o_; M m_; A0 a0_; A1 a1_; A2 a2_; A3 a3_; }; // 4 arguments -- template class gmp_task_args_m_4_ret : public gmp_task_args_base { public: explicit gmp_task_args_m_4_ret(C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, R *r) : o_(o), m_(m), r_(r), a0_(a0), a1_(a1), a2_(a2), a3_(a3) {} virtual bool returns_value() const { return true; } void Run() { *r_ = ((*o_).*m_)(a0_, a1_, a2_, a3_); } private: C o_; M m_; R* r_; A0 a0_; A1 a1_; A2 a2_; A3 a3_; }; // 5 arguments -- template class gmp_task_args_nm_5 : public gmp_task_args_base { public: explicit gmp_task_args_nm_5(M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4) : m_(m), a0_(a0), a1_(a1), a2_(a2), a3_(a3), a4_(a4) {} void Run() { m_(a0_, a1_, a2_, a3_, a4_); } private: M m_; A0 a0_; A1 a1_; A2 a2_; A3 a3_; A4 a4_; }; // 5 arguments -- template class gmp_task_args_nm_5_ret : public gmp_task_args_base { public: explicit gmp_task_args_nm_5_ret(M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, R *r) : m_(m), r_(r), a0_(a0), a1_(a1), a2_(a2), a3_(a3), a4_(a4) {} virtual bool returns_value() const { return true; } void Run() { *r_ = m_(a0_, a1_, a2_, a3_, a4_); } private: M m_; R* r_; A0 a0_; A1 a1_; A2 a2_; A3 a3_; A4 a4_; }; // 5 arguments -- template class gmp_task_args_m_5 : public gmp_task_args_base { public: explicit gmp_task_args_m_5(C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4) : o_(o), m_(m), a0_(a0), a1_(a1), a2_(a2), a3_(a3), a4_(a4) {} void Run() { ((*o_).*m_)(a0_, a1_, a2_, a3_, a4_); } private: C o_; M m_; A0 a0_; A1 a1_; A2 a2_; A3 a3_; A4 a4_; }; // 5 arguments -- template class gmp_task_args_m_5_ret : public gmp_task_args_base { public: explicit gmp_task_args_m_5_ret(C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, R *r) : o_(o), m_(m), r_(r), a0_(a0), a1_(a1), a2_(a2), a3_(a3), a4_(a4) {} virtual bool returns_value() const { return true; } void Run() { *r_ = ((*o_).*m_)(a0_, a1_, a2_, a3_, a4_); } private: C o_; M m_; R* r_; A0 a0_; A1 a1_; A2 a2_; A3 a3_; A4 a4_; }; // 6 arguments -- template class gmp_task_args_nm_6 : public gmp_task_args_base { public: explicit gmp_task_args_nm_6(M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) : m_(m), a0_(a0), a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5) {} void Run() { m_(a0_, a1_, a2_, a3_, a4_, a5_); } private: M m_; A0 a0_; A1 a1_; A2 a2_; A3 a3_; A4 a4_; A5 a5_; }; // 6 arguments -- template class gmp_task_args_nm_6_ret : public gmp_task_args_base { public: explicit gmp_task_args_nm_6_ret(M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, R *r) : m_(m), r_(r), a0_(a0), a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5) {} virtual bool returns_value() const { return true; } void Run() { *r_ = m_(a0_, a1_, a2_, a3_, a4_, a5_); } private: M m_; R* r_; A0 a0_; A1 a1_; A2 a2_; A3 a3_; A4 a4_; A5 a5_; }; // 6 arguments -- template class gmp_task_args_m_6 : public gmp_task_args_base { public: explicit gmp_task_args_m_6(C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) : o_(o), m_(m), a0_(a0), a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5) {} void Run() { ((*o_).*m_)(a0_, a1_, a2_, a3_, a4_, a5_); } private: C o_; M m_; A0 a0_; A1 a1_; A2 a2_; A3 a3_; A4 a4_; A5 a5_; }; // 6 arguments -- template class gmp_task_args_m_6_ret : public gmp_task_args_base { public: explicit gmp_task_args_m_6_ret(C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, R *r) : o_(o), m_(m), r_(r), a0_(a0), a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5) {} virtual bool returns_value() const { return true; } void Run() { *r_ = ((*o_).*m_)(a0_, a1_, a2_, a3_, a4_, a5_); } private: C o_; M m_; R* r_; A0 a0_; A1 a1_; A2 a2_; A3 a3_; A4 a4_; A5 a5_; }; // 7 arguments -- template class gmp_task_args_nm_7 : public gmp_task_args_base { public: explicit gmp_task_args_nm_7(M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) : m_(m), a0_(a0), a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5), a6_(a6) {} void Run() { m_(a0_, a1_, a2_, a3_, a4_, a5_, a6_); } private: M m_; A0 a0_; A1 a1_; A2 a2_; A3 a3_; A4 a4_; A5 a5_; A6 a6_; }; // 7 arguments -- template class gmp_task_args_nm_7_ret : public gmp_task_args_base { public: explicit gmp_task_args_nm_7_ret(M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, R *r) : m_(m), r_(r), a0_(a0), a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5), a6_(a6) {} virtual bool returns_value() const { return true; } void Run() { *r_ = m_(a0_, a1_, a2_, a3_, a4_, a5_, a6_); } private: M m_; R* r_; A0 a0_; A1 a1_; A2 a2_; A3 a3_; A4 a4_; A5 a5_; A6 a6_; }; // 7 arguments -- template class gmp_task_args_m_7 : public gmp_task_args_base { public: explicit gmp_task_args_m_7(C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) : o_(o), m_(m), a0_(a0), a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5), a6_(a6) {} void Run() { ((*o_).*m_)(a0_, a1_, a2_, a3_, a4_, a5_, a6_); } private: C o_; M m_; A0 a0_; A1 a1_; A2 a2_; A3 a3_; A4 a4_; A5 a5_; A6 a6_; }; // 7 arguments -- template class gmp_task_args_m_7_ret : public gmp_task_args_base { public: explicit gmp_task_args_m_7_ret(C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, R *r) : o_(o), m_(m), r_(r), a0_(a0), a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5), a6_(a6) {} virtual bool returns_value() const { return true; } void Run() { *r_ = ((*o_).*m_)(a0_, a1_, a2_, a3_, a4_, a5_, a6_); } private: C o_; M m_; R* r_; A0 a0_; A1 a1_; A2 a2_; A3 a3_; A4 a4_; A5 a5_; A6 a6_; }; // 8 arguments -- template class gmp_task_args_nm_8 : public gmp_task_args_base { public: explicit gmp_task_args_nm_8(M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) : m_(m), a0_(a0), a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5), a6_(a6), a7_(a7) {} void Run() { m_(a0_, a1_, a2_, a3_, a4_, a5_, a6_, a7_); } private: M m_; A0 a0_; A1 a1_; A2 a2_; A3 a3_; A4 a4_; A5 a5_; A6 a6_; A7 a7_; }; // 8 arguments -- template class gmp_task_args_nm_8_ret : public gmp_task_args_base { public: explicit gmp_task_args_nm_8_ret(M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, R *r) : m_(m), r_(r), a0_(a0), a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5), a6_(a6), a7_(a7) {} virtual bool returns_value() const { return true; } void Run() { *r_ = m_(a0_, a1_, a2_, a3_, a4_, a5_, a6_, a7_); } private: M m_; R* r_; A0 a0_; A1 a1_; A2 a2_; A3 a3_; A4 a4_; A5 a5_; A6 a6_; A7 a7_; }; // 8 arguments -- template class gmp_task_args_m_8 : public gmp_task_args_base { public: explicit gmp_task_args_m_8(C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) : o_(o), m_(m), a0_(a0), a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5), a6_(a6), a7_(a7) {} void Run() { ((*o_).*m_)(a0_, a1_, a2_, a3_, a4_, a5_, a6_, a7_); } private: C o_; M m_; A0 a0_; A1 a1_; A2 a2_; A3 a3_; A4 a4_; A5 a5_; A6 a6_; A7 a7_; }; // 8 arguments -- template class gmp_task_args_m_8_ret : public gmp_task_args_base { public: explicit gmp_task_args_m_8_ret(C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, R *r) : o_(o), m_(m), r_(r), a0_(a0), a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5), a6_(a6), a7_(a7) {} virtual bool returns_value() const { return true; } void Run() { *r_ = ((*o_).*m_)(a0_, a1_, a2_, a3_, a4_, a5_, a6_, a7_); } private: C o_; M m_; R* r_; A0 a0_; A1 a1_; A2 a2_; A3 a3_; A4 a4_; A5 a5_; A6 a6_; A7 a7_; }; // 9 arguments -- template class gmp_task_args_nm_9 : public gmp_task_args_base { public: explicit gmp_task_args_nm_9(M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) : m_(m), a0_(a0), a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5), a6_(a6), a7_(a7), a8_(a8) {} void Run() { m_(a0_, a1_, a2_, a3_, a4_, a5_, a6_, a7_, a8_); } private: M m_; A0 a0_; A1 a1_; A2 a2_; A3 a3_; A4 a4_; A5 a5_; A6 a6_; A7 a7_; A8 a8_; }; // 9 arguments -- template class gmp_task_args_nm_9_ret : public gmp_task_args_base { public: explicit gmp_task_args_nm_9_ret(M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, R *r) : m_(m), r_(r), a0_(a0), a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5), a6_(a6), a7_(a7), a8_(a8) {} virtual bool returns_value() const { return true; } void Run() { *r_ = m_(a0_, a1_, a2_, a3_, a4_, a5_, a6_, a7_, a8_); } private: M m_; R* r_; A0 a0_; A1 a1_; A2 a2_; A3 a3_; A4 a4_; A5 a5_; A6 a6_; A7 a7_; A8 a8_; }; // 9 arguments -- template class gmp_task_args_m_9 : public gmp_task_args_base { public: explicit gmp_task_args_m_9(C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) : o_(o), m_(m), a0_(a0), a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5), a6_(a6), a7_(a7), a8_(a8) {} void Run() { ((*o_).*m_)(a0_, a1_, a2_, a3_, a4_, a5_, a6_, a7_, a8_); } private: C o_; M m_; A0 a0_; A1 a1_; A2 a2_; A3 a3_; A4 a4_; A5 a5_; A6 a6_; A7 a7_; A8 a8_; }; // 9 arguments -- template class gmp_task_args_m_9_ret : public gmp_task_args_base { public: explicit gmp_task_args_m_9_ret(C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, R *r) : o_(o), m_(m), r_(r), a0_(a0), a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5), a6_(a6), a7_(a7), a8_(a8) {} virtual bool returns_value() const { return true; } void Run() { *r_ = ((*o_).*m_)(a0_, a1_, a2_, a3_, a4_, a5_, a6_, a7_, a8_); } private: C o_; M m_; R* r_; A0 a0_; A1 a1_; A2 a2_; A3 a3_; A4 a4_; A5 a5_; A6 a6_; A7 a7_; A8 a8_; }; // 10 arguments -- template class gmp_task_args_nm_10 : public gmp_task_args_base { public: explicit gmp_task_args_nm_10(M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) : m_(m), a0_(a0), a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5), a6_(a6), a7_(a7), a8_(a8), a9_(a9) {} void Run() { m_(a0_, a1_, a2_, a3_, a4_, a5_, a6_, a7_, a8_, a9_); } private: M m_; A0 a0_; A1 a1_; A2 a2_; A3 a3_; A4 a4_; A5 a5_; A6 a6_; A7 a7_; A8 a8_; A9 a9_; }; // 10 arguments -- template class gmp_task_args_nm_10_ret : public gmp_task_args_base { public: explicit gmp_task_args_nm_10_ret(M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, R *r) : m_(m), r_(r), a0_(a0), a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5), a6_(a6), a7_(a7), a8_(a8), a9_(a9) {} virtual bool returns_value() const { return true; } void Run() { *r_ = m_(a0_, a1_, a2_, a3_, a4_, a5_, a6_, a7_, a8_, a9_); } private: M m_; R* r_; A0 a0_; A1 a1_; A2 a2_; A3 a3_; A4 a4_; A5 a5_; A6 a6_; A7 a7_; A8 a8_; A9 a9_; }; // 10 arguments -- template class gmp_task_args_m_10 : public gmp_task_args_base { public: explicit gmp_task_args_m_10(C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) : o_(o), m_(m), a0_(a0), a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5), a6_(a6), a7_(a7), a8_(a8), a9_(a9) {} void Run() { ((*o_).*m_)(a0_, a1_, a2_, a3_, a4_, a5_, a6_, a7_, a8_, a9_); } private: C o_; M m_; A0 a0_; A1 a1_; A2 a2_; A3 a3_; A4 a4_; A5 a5_; A6 a6_; A7 a7_; A8 a8_; A9 a9_; }; // 10 arguments -- template class gmp_task_args_m_10_ret : public gmp_task_args_base { public: explicit gmp_task_args_m_10_ret(C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, R *r) : o_(o), m_(m), r_(r), a0_(a0), a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5), a6_(a6), a7_(a7), a8_(a8), a9_(a9) {} virtual bool returns_value() const { return true; } void Run() { *r_ = ((*o_).*m_)(a0_, a1_, a2_, a3_, a4_, a5_, a6_, a7_, a8_, a9_); } private: C o_; M m_; R* r_; A0 a0_; A1 a1_; A2 a2_; A3 a3_; A4 a4_; A5 a5_; A6 a6_; A7 a7_; A8 a8_; A9 a9_; }; // 11 arguments -- template class gmp_task_args_nm_11 : public gmp_task_args_base { public: explicit gmp_task_args_nm_11(M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10) : m_(m), a0_(a0), a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5), a6_(a6), a7_(a7), a8_(a8), a9_(a9), a10_(a10) {} void Run() { m_(a0_, a1_, a2_, a3_, a4_, a5_, a6_, a7_, a8_, a9_, a10_); } private: M m_; A0 a0_; A1 a1_; A2 a2_; A3 a3_; A4 a4_; A5 a5_; A6 a6_; A7 a7_; A8 a8_; A9 a9_; A10 a10_; }; // 11 arguments -- template class gmp_task_args_nm_11_ret : public gmp_task_args_base { public: explicit gmp_task_args_nm_11_ret(M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, R *r) : m_(m), r_(r), a0_(a0), a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5), a6_(a6), a7_(a7), a8_(a8), a9_(a9), a10_(a10) {} virtual bool returns_value() const { return true; } void Run() { *r_ = m_(a0_, a1_, a2_, a3_, a4_, a5_, a6_, a7_, a8_, a9_, a10_); } private: M m_; R* r_; A0 a0_; A1 a1_; A2 a2_; A3 a3_; A4 a4_; A5 a5_; A6 a6_; A7 a7_; A8 a8_; A9 a9_; A10 a10_; }; // 11 arguments -- template class gmp_task_args_m_11 : public gmp_task_args_base { public: explicit gmp_task_args_m_11(C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10) : o_(o), m_(m), a0_(a0), a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5), a6_(a6), a7_(a7), a8_(a8), a9_(a9), a10_(a10) {} void Run() { ((*o_).*m_)(a0_, a1_, a2_, a3_, a4_, a5_, a6_, a7_, a8_, a9_, a10_); } private: C o_; M m_; A0 a0_; A1 a1_; A2 a2_; A3 a3_; A4 a4_; A5 a5_; A6 a6_; A7 a7_; A8 a8_; A9 a9_; A10 a10_; }; // 11 arguments -- template class gmp_task_args_m_11_ret : public gmp_task_args_base { public: explicit gmp_task_args_m_11_ret(C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, R *r) : o_(o), m_(m), r_(r), a0_(a0), a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5), a6_(a6), a7_(a7), a8_(a8), a9_(a9), a10_(a10) {} virtual bool returns_value() const { return true; } void Run() { *r_ = ((*o_).*m_)(a0_, a1_, a2_, a3_, a4_, a5_, a6_, a7_, a8_, a9_, a10_); } private: C o_; M m_; R* r_; A0 a0_; A1 a1_; A2 a2_; A3 a3_; A4 a4_; A5 a5_; A6 a6_; A7 a7_; A8 a8_; A9 a9_; A10 a10_; }; // 12 arguments -- template class gmp_task_args_nm_12 : public gmp_task_args_base { public: explicit gmp_task_args_nm_12(M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11) : m_(m), a0_(a0), a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5), a6_(a6), a7_(a7), a8_(a8), a9_(a9), a10_(a10), a11_(a11) {} void Run() { m_(a0_, a1_, a2_, a3_, a4_, a5_, a6_, a7_, a8_, a9_, a10_, a11_); } private: M m_; A0 a0_; A1 a1_; A2 a2_; A3 a3_; A4 a4_; A5 a5_; A6 a6_; A7 a7_; A8 a8_; A9 a9_; A10 a10_; A11 a11_; }; // 12 arguments -- template class gmp_task_args_nm_12_ret : public gmp_task_args_base { public: explicit gmp_task_args_nm_12_ret(M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, R *r) : m_(m), r_(r), a0_(a0), a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5), a6_(a6), a7_(a7), a8_(a8), a9_(a9), a10_(a10), a11_(a11) {} virtual bool returns_value() const { return true; } void Run() { *r_ = m_(a0_, a1_, a2_, a3_, a4_, a5_, a6_, a7_, a8_, a9_, a10_, a11_); } private: M m_; R* r_; A0 a0_; A1 a1_; A2 a2_; A3 a3_; A4 a4_; A5 a5_; A6 a6_; A7 a7_; A8 a8_; A9 a9_; A10 a10_; A11 a11_; }; // 12 arguments -- template class gmp_task_args_m_12 : public gmp_task_args_base { public: explicit gmp_task_args_m_12(C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11) : o_(o), m_(m), a0_(a0), a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5), a6_(a6), a7_(a7), a8_(a8), a9_(a9), a10_(a10), a11_(a11) {} void Run() { ((*o_).*m_)(a0_, a1_, a2_, a3_, a4_, a5_, a6_, a7_, a8_, a9_, a10_, a11_); } private: C o_; M m_; A0 a0_; A1 a1_; A2 a2_; A3 a3_; A4 a4_; A5 a5_; A6 a6_; A7 a7_; A8 a8_; A9 a9_; A10 a10_; A11 a11_; }; // 12 arguments -- template class gmp_task_args_m_12_ret : public gmp_task_args_base { public: explicit gmp_task_args_m_12_ret(C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, R *r) : o_(o), m_(m), r_(r), a0_(a0), a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5), a6_(a6), a7_(a7), a8_(a8), a9_(a9), a10_(a10), a11_(a11) {} virtual bool returns_value() const { return true; } void Run() { *r_ = ((*o_).*m_)(a0_, a1_, a2_, a3_, a4_, a5_, a6_, a7_, a8_, a9_, a10_, a11_); } private: C o_; M m_; R* r_; A0 a0_; A1 a1_; A2 a2_; A3 a3_; A4 a4_; A5 a5_; A6 a6_; A7 a7_; A8 a8_; A9 a9_; A10 a10_; A11 a11_; }; // 13 arguments -- template class gmp_task_args_nm_13 : public gmp_task_args_base { public: explicit gmp_task_args_nm_13(M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12) : m_(m), a0_(a0), a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5), a6_(a6), a7_(a7), a8_(a8), a9_(a9), a10_(a10), a11_(a11), a12_(a12) {} void Run() { m_(a0_, a1_, a2_, a3_, a4_, a5_, a6_, a7_, a8_, a9_, a10_, a11_, a12_); } private: M m_; A0 a0_; A1 a1_; A2 a2_; A3 a3_; A4 a4_; A5 a5_; A6 a6_; A7 a7_; A8 a8_; A9 a9_; A10 a10_; A11 a11_; A12 a12_; }; // 13 arguments -- template class gmp_task_args_nm_13_ret : public gmp_task_args_base { public: explicit gmp_task_args_nm_13_ret(M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, R *r) : m_(m), r_(r), a0_(a0), a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5), a6_(a6), a7_(a7), a8_(a8), a9_(a9), a10_(a10), a11_(a11), a12_(a12) {} virtual bool returns_value() const { return true; } void Run() { *r_ = m_(a0_, a1_, a2_, a3_, a4_, a5_, a6_, a7_, a8_, a9_, a10_, a11_, a12_); } private: M m_; R* r_; A0 a0_; A1 a1_; A2 a2_; A3 a3_; A4 a4_; A5 a5_; A6 a6_; A7 a7_; A8 a8_; A9 a9_; A10 a10_; A11 a11_; A12 a12_; }; // 13 arguments -- template class gmp_task_args_m_13 : public gmp_task_args_base { public: explicit gmp_task_args_m_13(C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12) : o_(o), m_(m), a0_(a0), a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5), a6_(a6), a7_(a7), a8_(a8), a9_(a9), a10_(a10), a11_(a11), a12_(a12) {} void Run() { ((*o_).*m_)(a0_, a1_, a2_, a3_, a4_, a5_, a6_, a7_, a8_, a9_, a10_, a11_, a12_); } private: C o_; M m_; A0 a0_; A1 a1_; A2 a2_; A3 a3_; A4 a4_; A5 a5_; A6 a6_; A7 a7_; A8 a8_; A9 a9_; A10 a10_; A11 a11_; A12 a12_; }; // 13 arguments -- template class gmp_task_args_m_13_ret : public gmp_task_args_base { public: explicit gmp_task_args_m_13_ret(C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, R *r) : o_(o), m_(m), r_(r), a0_(a0), a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5), a6_(a6), a7_(a7), a8_(a8), a9_(a9), a10_(a10), a11_(a11), a12_(a12) {} virtual bool returns_value() const { return true; } void Run() { *r_ = ((*o_).*m_)(a0_, a1_, a2_, a3_, a4_, a5_, a6_, a7_, a8_, a9_, a10_, a11_, a12_); } private: C o_; M m_; R* r_; A0 a0_; A1 a1_; A2 a2_; A3 a3_; A4 a4_; A5 a5_; A6 a6_; A7 a7_; A8 a8_; A9 a9_; A10 a10_; A11 a11_; A12 a12_; }; // 14 arguments -- template class gmp_task_args_nm_14 : public gmp_task_args_base { public: explicit gmp_task_args_nm_14(M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13) : m_(m), a0_(a0), a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5), a6_(a6), a7_(a7), a8_(a8), a9_(a9), a10_(a10), a11_(a11), a12_(a12), a13_(a13) {} void Run() { m_(a0_, a1_, a2_, a3_, a4_, a5_, a6_, a7_, a8_, a9_, a10_, a11_, a12_, a13_); } private: M m_; A0 a0_; A1 a1_; A2 a2_; A3 a3_; A4 a4_; A5 a5_; A6 a6_; A7 a7_; A8 a8_; A9 a9_; A10 a10_; A11 a11_; A12 a12_; A13 a13_; }; // 14 arguments -- template class gmp_task_args_nm_14_ret : public gmp_task_args_base { public: explicit gmp_task_args_nm_14_ret(M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, R *r) : m_(m), r_(r), a0_(a0), a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5), a6_(a6), a7_(a7), a8_(a8), a9_(a9), a10_(a10), a11_(a11), a12_(a12), a13_(a13) {} virtual bool returns_value() const { return true; } void Run() { *r_ = m_(a0_, a1_, a2_, a3_, a4_, a5_, a6_, a7_, a8_, a9_, a10_, a11_, a12_, a13_); } private: M m_; R* r_; A0 a0_; A1 a1_; A2 a2_; A3 a3_; A4 a4_; A5 a5_; A6 a6_; A7 a7_; A8 a8_; A9 a9_; A10 a10_; A11 a11_; A12 a12_; A13 a13_; }; // 14 arguments -- template class gmp_task_args_m_14 : public gmp_task_args_base { public: explicit gmp_task_args_m_14(C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13) : o_(o), m_(m), a0_(a0), a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5), a6_(a6), a7_(a7), a8_(a8), a9_(a9), a10_(a10), a11_(a11), a12_(a12), a13_(a13) {} void Run() { ((*o_).*m_)(a0_, a1_, a2_, a3_, a4_, a5_, a6_, a7_, a8_, a9_, a10_, a11_, a12_, a13_); } private: C o_; M m_; A0 a0_; A1 a1_; A2 a2_; A3 a3_; A4 a4_; A5 a5_; A6 a6_; A7 a7_; A8 a8_; A9 a9_; A10 a10_; A11 a11_; A12 a12_; A13 a13_; }; // 14 arguments -- template class gmp_task_args_m_14_ret : public gmp_task_args_base { public: explicit gmp_task_args_m_14_ret(C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, R *r) : o_(o), m_(m), r_(r), a0_(a0), a1_(a1), a2_(a2), a3_(a3), a4_(a4), a5_(a5), a6_(a6), a7_(a7), a8_(a8), a9_(a9), a10_(a10), a11_(a11), a12_(a12), a13_(a13) {} virtual bool returns_value() const { return true; } void Run() { *r_ = ((*o_).*m_)(a0_, a1_, a2_, a3_, a4_, a5_, a6_, a7_, a8_, a9_, a10_, a11_, a12_, a13_); } private: C o_; M m_; R* r_; A0 a0_; A1 a1_; A2 a2_; A3 a3_; A4 a4_; A5 a5_; A6 a6_; A7 a7_; A8 a8_; A9 a9_; A10 a10_; A11 a11_; A12 a12_; A13 a13_; }; // 0 arguments -- template gmp_task_args_nm_0* WrapTaskNM(M m) { return new gmp_task_args_nm_0 (m); } // 0 arguments -- template gmp_task_args_nm_0_ret* WrapTaskNMRet(M m, R* r) { return new gmp_task_args_nm_0_ret (m, r); } // 0 arguments -- template gmp_task_args_m_0* WrapTask(C o, M m) { return new gmp_task_args_m_0 (o, m); } // 0 arguments -- template gmp_task_args_m_0_ret* WrapTaskRet(C o, M m, R* r) { return new gmp_task_args_m_0_ret (o, m, r); } // 1 arguments -- template gmp_task_args_nm_1* WrapTaskNM(M m, A0 a0) { return new gmp_task_args_nm_1 (m, a0); } // 1 arguments -- template gmp_task_args_nm_1_ret* WrapTaskNMRet(M m, A0 a0, R* r) { return new gmp_task_args_nm_1_ret (m, a0, r); } // 1 arguments -- template gmp_task_args_m_1* WrapTask(C o, M m, A0 a0) { return new gmp_task_args_m_1 (o, m, a0); } // 1 arguments -- template gmp_task_args_m_1_ret* WrapTaskRet(C o, M m, A0 a0, R* r) { return new gmp_task_args_m_1_ret (o, m, a0, r); } // 2 arguments -- template gmp_task_args_nm_2* WrapTaskNM(M m, A0 a0, A1 a1) { return new gmp_task_args_nm_2 (m, a0, a1); } // 2 arguments -- template gmp_task_args_nm_2_ret* WrapTaskNMRet(M m, A0 a0, A1 a1, R* r) { return new gmp_task_args_nm_2_ret (m, a0, a1, r); } // 2 arguments -- template gmp_task_args_m_2* WrapTask(C o, M m, A0 a0, A1 a1) { return new gmp_task_args_m_2 (o, m, a0, a1); } // 2 arguments -- template gmp_task_args_m_2_ret* WrapTaskRet(C o, M m, A0 a0, A1 a1, R* r) { return new gmp_task_args_m_2_ret (o, m, a0, a1, r); } // 3 arguments -- template gmp_task_args_nm_3* WrapTaskNM(M m, A0 a0, A1 a1, A2 a2) { return new gmp_task_args_nm_3 (m, a0, a1, a2); } // 3 arguments -- template gmp_task_args_nm_3_ret* WrapTaskNMRet(M m, A0 a0, A1 a1, A2 a2, R* r) { return new gmp_task_args_nm_3_ret (m, a0, a1, a2, r); } // 3 arguments -- template gmp_task_args_m_3* WrapTask(C o, M m, A0 a0, A1 a1, A2 a2) { return new gmp_task_args_m_3 (o, m, a0, a1, a2); } // 3 arguments -- template gmp_task_args_m_3_ret* WrapTaskRet(C o, M m, A0 a0, A1 a1, A2 a2, R* r) { return new gmp_task_args_m_3_ret (o, m, a0, a1, a2, r); } // 4 arguments -- template gmp_task_args_nm_4* WrapTaskNM(M m, A0 a0, A1 a1, A2 a2, A3 a3) { return new gmp_task_args_nm_4 (m, a0, a1, a2, a3); } // 4 arguments -- template gmp_task_args_nm_4_ret* WrapTaskNMRet(M m, A0 a0, A1 a1, A2 a2, A3 a3, R* r) { return new gmp_task_args_nm_4_ret (m, a0, a1, a2, a3, r); } // 4 arguments -- template gmp_task_args_m_4* WrapTask(C o, M m, A0 a0, A1 a1, A2 a2, A3 a3) { return new gmp_task_args_m_4 (o, m, a0, a1, a2, a3); } // 4 arguments -- template gmp_task_args_m_4_ret* WrapTaskRet(C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, R* r) { return new gmp_task_args_m_4_ret (o, m, a0, a1, a2, a3, r); } // 5 arguments -- template gmp_task_args_nm_5* WrapTaskNM(M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4) { return new gmp_task_args_nm_5 (m, a0, a1, a2, a3, a4); } // 5 arguments -- template gmp_task_args_nm_5_ret* WrapTaskNMRet(M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, R* r) { return new gmp_task_args_nm_5_ret (m, a0, a1, a2, a3, a4, r); } // 5 arguments -- template gmp_task_args_m_5* WrapTask(C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4) { return new gmp_task_args_m_5 (o, m, a0, a1, a2, a3, a4); } // 5 arguments -- template gmp_task_args_m_5_ret* WrapTaskRet(C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, R* r) { return new gmp_task_args_m_5_ret (o, m, a0, a1, a2, a3, a4, r); } // 6 arguments -- template gmp_task_args_nm_6* WrapTaskNM(M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) { return new gmp_task_args_nm_6 (m, a0, a1, a2, a3, a4, a5); } // 6 arguments -- template gmp_task_args_nm_6_ret* WrapTaskNMRet(M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, R* r) { return new gmp_task_args_nm_6_ret (m, a0, a1, a2, a3, a4, a5, r); } // 6 arguments -- template gmp_task_args_m_6* WrapTask(C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) { return new gmp_task_args_m_6 (o, m, a0, a1, a2, a3, a4, a5); } // 6 arguments -- template gmp_task_args_m_6_ret* WrapTaskRet(C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, R* r) { return new gmp_task_args_m_6_ret (o, m, a0, a1, a2, a3, a4, a5, r); } // 7 arguments -- template gmp_task_args_nm_7* WrapTaskNM(M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) { return new gmp_task_args_nm_7 (m, a0, a1, a2, a3, a4, a5, a6); } // 7 arguments -- template gmp_task_args_nm_7_ret* WrapTaskNMRet(M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, R* r) { return new gmp_task_args_nm_7_ret (m, a0, a1, a2, a3, a4, a5, a6, r); } // 7 arguments -- template gmp_task_args_m_7* WrapTask(C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) { return new gmp_task_args_m_7 (o, m, a0, a1, a2, a3, a4, a5, a6); } // 7 arguments -- template gmp_task_args_m_7_ret* WrapTaskRet(C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, R* r) { return new gmp_task_args_m_7_ret (o, m, a0, a1, a2, a3, a4, a5, a6, r); } // 8 arguments -- template gmp_task_args_nm_8* WrapTaskNM(M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) { return new gmp_task_args_nm_8 (m, a0, a1, a2, a3, a4, a5, a6, a7); } // 8 arguments -- template gmp_task_args_nm_8_ret* WrapTaskNMRet(M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, R* r) { return new gmp_task_args_nm_8_ret (m, a0, a1, a2, a3, a4, a5, a6, a7, r); } // 8 arguments -- template gmp_task_args_m_8* WrapTask(C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) { return new gmp_task_args_m_8 (o, m, a0, a1, a2, a3, a4, a5, a6, a7); } // 8 arguments -- template gmp_task_args_m_8_ret* WrapTaskRet(C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, R* r) { return new gmp_task_args_m_8_ret (o, m, a0, a1, a2, a3, a4, a5, a6, a7, r); } // 9 arguments -- template gmp_task_args_nm_9* WrapTaskNM(M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) { return new gmp_task_args_nm_9 (m, a0, a1, a2, a3, a4, a5, a6, a7, a8); } // 9 arguments -- template gmp_task_args_nm_9_ret* WrapTaskNMRet(M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, R* r) { return new gmp_task_args_nm_9_ret (m, a0, a1, a2, a3, a4, a5, a6, a7, a8, r); } // 9 arguments -- template gmp_task_args_m_9* WrapTask(C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) { return new gmp_task_args_m_9 (o, m, a0, a1, a2, a3, a4, a5, a6, a7, a8); } // 9 arguments -- template gmp_task_args_m_9_ret* WrapTaskRet(C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, R* r) { return new gmp_task_args_m_9_ret (o, m, a0, a1, a2, a3, a4, a5, a6, a7, a8, r); } // 10 arguments -- template gmp_task_args_nm_10* WrapTaskNM(M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) { return new gmp_task_args_nm_10 (m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); } // 10 arguments -- template gmp_task_args_nm_10_ret* WrapTaskNMRet(M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, R* r) { return new gmp_task_args_nm_10_ret (m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, r); } // 10 arguments -- template gmp_task_args_m_10* WrapTask(C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) { return new gmp_task_args_m_10 (o, m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); } // 10 arguments -- template gmp_task_args_m_10_ret* WrapTaskRet(C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, R* r) { return new gmp_task_args_m_10_ret (o, m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, r); } // 11 arguments -- template gmp_task_args_nm_11* WrapTaskNM(M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10) { return new gmp_task_args_nm_11 (m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10); } // 11 arguments -- template gmp_task_args_nm_11_ret* WrapTaskNMRet(M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, R* r) { return new gmp_task_args_nm_11_ret (m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, r); } // 11 arguments -- template gmp_task_args_m_11* WrapTask(C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10) { return new gmp_task_args_m_11 (o, m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10); } // 11 arguments -- template gmp_task_args_m_11_ret* WrapTaskRet(C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, R* r) { return new gmp_task_args_m_11_ret (o, m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, r); } // 12 arguments -- template gmp_task_args_nm_12* WrapTaskNM(M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11) { return new gmp_task_args_nm_12 (m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11); } // 12 arguments -- template gmp_task_args_nm_12_ret* WrapTaskNMRet(M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, R* r) { return new gmp_task_args_nm_12_ret (m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, r); } // 12 arguments -- template gmp_task_args_m_12* WrapTask(C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11) { return new gmp_task_args_m_12 (o, m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11); } // 12 arguments -- template gmp_task_args_m_12_ret* WrapTaskRet(C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, R* r) { return new gmp_task_args_m_12_ret (o, m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, r); } // 13 arguments -- template gmp_task_args_nm_13* WrapTaskNM(M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12) { return new gmp_task_args_nm_13 (m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12); } // 13 arguments -- template gmp_task_args_nm_13_ret* WrapTaskNMRet(M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, R* r) { return new gmp_task_args_nm_13_ret (m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, r); } // 13 arguments -- template gmp_task_args_m_13* WrapTask(C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12) { return new gmp_task_args_m_13 (o, m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12); } // 13 arguments -- template gmp_task_args_m_13_ret* WrapTaskRet(C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, R* r) { return new gmp_task_args_m_13_ret (o, m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, r); } // 14 arguments -- template gmp_task_args_nm_14* WrapTaskNM(M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13) { return new gmp_task_args_nm_14 (m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13); } // 14 arguments -- template gmp_task_args_nm_14_ret* WrapTaskNMRet(M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, R* r) { return new gmp_task_args_nm_14_ret (m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, r); } // 14 arguments -- template gmp_task_args_m_14* WrapTask(C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13) { return new gmp_task_args_m_14 (o, m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13); } // 14 arguments -- template gmp_task_args_m_14_ret* WrapTaskRet(C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, R* r) { return new gmp_task_args_m_14_ret (o, m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, r); } class RefCountTaskWrapper : public gmp_task_args_base { public: RefCountTaskWrapper(GMPTask* aTask, RefCounted* aRefCounted) : mTask(aTask) , mRefCounted(aRefCounted) {} virtual void Run() override { mTask->Run(); } virtual void Destroy() override { mTask->Destroy(); gmp_task_args_base::Destroy(); } private: ~RefCountTaskWrapper() {} GMPTask* mTask; RefPtr mRefCounted; }; template GMPTask* WrapTaskRefCounted(Type* aType, Method aMethod, Args&&... args) { GMPTask* t = WrapTask(aType, aMethod, std::forward(args)...); return new RefCountTaskWrapper(t, aType); }