ref: a4bddf417e51c94ec29845d565090e46f856d2be
parent: 13080273773867f5aaf9b13b8c6856acd1e27e48
author: Ethan Hugg <ehugg@cisco.com>
date: Mon Jul 6 05:48:50 EDT 2015
Change GMP code to RefCount instead of deleting on enc/decode complete.
--- /dev/null
+++ b/module/RefCounted.h
@@ -1,0 +1,141 @@
+/*
+ * 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.
+ */
+
+#ifndef __RefCount_h__
+#define __RefCount_h__
+
+#include <stdint.h>
+#include <assert.h>
+
+extern GMPPlatformAPI* g_platform_api;
+
+inline GMPMutex* GMPCreateMutex() {
+ GMPMutex* mutex;
+ if (!g_platform_api) {
+ return nullptr;
+ }
+ GMPErr err = g_platform_api->createmutex(&mutex);
+ assert(mutex);
+ return GMP_FAILED(err) ? nullptr : mutex;
+}
+
+class AutoLock {
+public:
+ explicit AutoLock(GMPMutex* aMutex)
+ : mMutex(aMutex)
+ {
+ assert(aMutex);
+ if (mMutex) {
+ mMutex->Acquire();
+ }
+ }
+ ~AutoLock() {
+ if (mMutex) {
+ mMutex->Release();
+ }
+ }
+private:
+ GMPMutex* mMutex;
+};
+
+class AtomicRefCount {
+public:
+ explicit AtomicRefCount(uint32_t aValue)
+ : mCount(aValue)
+ , mMutex(GMPCreateMutex())
+ {
+ assert(mMutex);
+ }
+ ~AtomicRefCount()
+ {
+ if (mMutex) {
+ mMutex->Destroy();
+ }
+ }
+ uint32_t operator--() {
+ AutoLock lock(mMutex);
+ return --mCount;
+ }
+ uint32_t operator++() {
+ AutoLock lock(mMutex);
+ return ++mCount;
+ }
+ operator uint32_t() {
+ AutoLock lock(mMutex);
+ return mCount;
+ }
+private:
+ uint32_t mCount;
+ GMPMutex* mMutex;
+};
+
+// Note: Thread safe.
+class RefCounted {
+public:
+ void AddRef() {
+ ++mRefCount;
+ }
+
+ uint32_t Release() {
+ uint32_t newCount = --mRefCount;
+ if (!newCount) {
+ delete this;
+ }
+ return newCount;
+ }
+
+protected:
+ RefCounted()
+ : mRefCount(0)
+ {
+ }
+ virtual ~RefCounted()
+ {
+ assert(!mRefCount);
+ }
+ AtomicRefCount mRefCount;
+};
+
+template<class T>
+class RefPtr {
+public:
+ explicit RefPtr(T* aPtr) : mPtr(nullptr) {
+ Assign(aPtr);
+ }
+ ~RefPtr() {
+ Assign(nullptr);
+ }
+ T* operator->() const { return mPtr; }
+
+ RefPtr& operator=(T* aVal) {
+ Assign(aVal);
+ return *this;
+ }
+
+private:
+ void Assign(T* aPtr) {
+ if (mPtr) {
+ mPtr->Release();
+ }
+ mPtr = aPtr;
+ if (mPtr) {
+ aPtr->AddRef();
+ }
+ }
+ T* mPtr;
+};
+
+#endif // __RefCount_h__
--- a/module/gmp-openh264.cpp
+++ b/module/gmp-openh264.cpp
@@ -53,8 +53,6 @@
#include "codec_app_def.h"
#include "codec_api.h"
-#include "task_utils.h"
-
#if defined(_MSC_VER)
#define PUBLIC_FUNC __declspec(dllexport)
#else
@@ -91,6 +89,8 @@
# define nullptr __null
#endif
+#include "task_utils.h"
+
static int g_log_level = 0;
#define GMPLOG(l, x) do { \
@@ -116,7 +116,7 @@
};
-static GMPPlatformAPI* g_platform_api = nullptr;
+GMPPlatformAPI* g_platform_api = nullptr;
class OpenH264VideoEncoder;
@@ -179,7 +179,7 @@
const std::string type_;
};
-class OpenH264VideoEncoder : public GMPVideoEncoder {
+class OpenH264VideoEncoder : public GMPVideoEncoder, public RefCounted {
public:
OpenH264VideoEncoder (GMPVideoHost* hostAPI) :
host_ (hostAPI),
@@ -187,12 +187,10 @@
encoder_ (nullptr),
max_payload_size_ (0),
callback_ (nullptr),
- stats_ ("Encoder") {}
+ stats_ ("Encoder") {
+ AddRef();
+ }
- virtual ~OpenH264VideoEncoder() {
- worker_thread_->Join();
- }
-
virtual void InitEncode (const GMPVideoCodec& codecSettings,
const uint8_t* aCodecSpecific,
uint32_t aCodecSpecificSize,
@@ -285,7 +283,7 @@
assert (aFrameTypesLength != 0);
- worker_thread_->Post (WrapTask (
+ worker_thread_->Post (WrapTaskRefCounted (
this, &OpenH264VideoEncoder::Encode_w,
inputImage,
(aFrameTypes)[0]));
@@ -363,10 +361,14 @@
}
virtual void EncodingComplete() {
- delete this;
+ Release();
}
private:
+ virtual ~OpenH264VideoEncoder() {
+ worker_thread_->Join();
+ }
+
void Error (GMPErr error) {
if (callback_) {
callback_->Error (error);
@@ -560,7 +562,7 @@
out.insert(out.end(), in, in + size);
}
-class OpenH264VideoDecoder : public GMPVideoDecoder {
+class OpenH264VideoDecoder : public GMPVideoDecoder, public RefCounted {
public:
OpenH264VideoDecoder (GMPVideoHost* hostAPI) :
host_ (hostAPI),
@@ -567,11 +569,10 @@
worker_thread_ (nullptr),
callback_ (nullptr),
decoder_ (nullptr),
- stats_ ("Decoder") {}
+ stats_ ("Decoder") {
+ AddRef();
+ }
- virtual ~OpenH264VideoDecoder() {
- }
-
virtual void InitDecode (const GMPVideoCodec& codecSettings,
const uint8_t* aCodecSpecific,
uint32_t aCodecSpecificSize,
@@ -691,7 +692,7 @@
break;
}
DECODING_STATE dState = dsErrorFree;
- worker_thread_->Post (WrapTask (
+ worker_thread_->Post (WrapTaskRefCounted (
this, &OpenH264VideoDecoder::Decode_w,
inputFrame,
missingFrames,
@@ -715,10 +716,13 @@
}
virtual void DecodingComplete() {
- delete this;
+ Release();
}
private:
+ virtual ~OpenH264VideoDecoder() {
+ }
+
void Error (GMPErr error) {
if (callback_) {
callback_->Error (error);
--- a/module/task_utils.py
+++ b/module/task_utils.py
@@ -7,6 +7,29 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this\n\
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */\n"
+includes = "#include \"RefCounted.h\"\n"
+
+refcountclass = "class RefCountTaskWrapper : public gmp_args_base {\n\
+public:\n\
+ RefCountTaskWrapper(GMPTask* aTask, RefCounted* aRefCounted)\n\
+ : mTask(aTask)\n\
+ , mRefCounted(aRefCounted)\n\
+ {}\n\
+ virtual void Run() {\n\
+ mTask->Run();\n\
+ }\n\
+ virtual void Destroy() {\n\
+ mTask->Destroy();\n\
+ gmp_args_base::Destroy();\n\
+ }\n\
+private:\n\
+ ~RefCountTaskWrapper() {}\n\
+\n\
+ GMPTask* mTask;\n\
+ RefPtr<RefCounted> mRefCounted;\n\
+};\n"
+
+
def gen_args_type(args, member):
if member:
ret = ["C o"]
@@ -35,16 +58,16 @@
def gen_init(args, r = False, member = False):
if member:
- ret = ["o_(o)"]
+ ret = ["o_ (o)"]
else:
ret = []
- ret.append("m_(m)")
+ ret.append("m_ (m)")
if r:
- ret.append("r_(r)")
+ ret.append("r_ (r)")
for arg in range(0, args):
- ret.append("a%d_(a%d)"%(arg, arg))
+ ret.append("a%d_ (a%d)"%(arg, arg))
return ", ".join(ret)
def gen_typenames(args, member):
@@ -84,12 +107,12 @@
print " public:"
if not ret:
- print " gmp_args_%s_%d("%(nm, args) + gen_args_type(args, member) + ") :"
+ print " gmp_args_%s_%d ("%(nm, args) + gen_args_type(args, member) + ") :"
print " " + gen_init(args, False, member) + " {}"
else:
- print " gmp_args_%s_%d_ret("%(nm, args) + gen_args_type(args, member) + ", R *r) :"
+ print " gmp_args_%s_%d_ret ("%(nm, args) + gen_args_type(args, member) + ", R* r) :"
print " " + gen_init(args, True, member) + " {}"
- print " virtual bool returns_value() const { return true; }"
+ print " virtual bool returns_value() const {\n return true;\n }"
print " void Run() {"
if ret:
@@ -97,9 +120,9 @@
else:
print " ",
if member:
- print "((*o_).*m_)(" + gen_args_(args) + ");"
+ print "((*o_).*m_) (" + gen_args_(args) + ");"
else:
- print "m_(" + gen_args_(args) + ");"
+ print "m_ (" + gen_args_(args) + ");"
print " }"
print " private:"
@@ -125,11 +148,19 @@
print "// %d arguments --"%args
print "template<" + gen_typenames(args, member) + ">"
- print "gmp_args_%s_%d<"%(nm, args) + gen_types(args, member) + ">* WrapTask%s("%NM + gen_args_type(args, member) + ") {"
+ print "gmp_args_%s_%d<"%(nm, args) + gen_types(args, member) + ">* WrapTask%s ("%NM + gen_args_type(args, member) + ") {"
print " return new gmp_args_%s_%d<"%(nm, args) + gen_types(args, member) + ">"
print " (" + gen_args(args, member) + ");"
print "}"
+ if member:
+ print "template<" + gen_typenames(args, member) + ">"
+ print "GMPTask*"
+ print "WrapTaskRefCounted%s ("%NM + gen_args_type(args, member) + ") {"
+ print " GMPTask *t = WrapTask%s ("%NM + gen_args(args, member) + ");"
+ print " return new RefCountTaskWrapper(t, o);"
+ print "}"
def generate_function_template_ret(args, member):
if member:
@@ -140,7 +171,7 @@
NM = "NM";
print "// %d arguments --"%args
print "template<" + gen_typenames(args, member) + ", typename R>"
- print "gmp_args_%s_%d_ret<"%(nm, args) + gen_types(args, member) + ", R>* WrapTask%sRet("%NM + gen_args_type(args, member) + ", R* r) {"
+ print "gmp_args_%s_%d_ret<"%(nm, args) + gen_types(args, member) + ", R>* WrapTask%sRet ("%NM + gen_args_type(args, member) + ", R* r) {"
print " return new gmp_args_%s_%d_ret<"%(nm, args) + gen_types(args, member) + ", R>"
print " (" + gen_args(args, member) + ", r);"
print "}"
@@ -147,7 +178,12 @@
+
print boilerplate
+print includes
+print refcountclass
for num_args in range (0, MAX_ARGS):
--- a/module/task_utils_generated.h
+++ b/module/task_utils_generated.h
@@ -3,6 +3,30 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+#include "RefCounted.h"
+
+
+class RefCountTaskWrapper : public gmp_args_base {
+public:
+ RefCountTaskWrapper(GMPTask* aTask, RefCounted* aRefCounted)
+ : mTask(aTask)
+ , mRefCounted(aRefCounted)
+ {}
+ virtual void Run() {
+ mTask->Run();
+ }
+ virtual void Destroy() {
+ mTask->Destroy();
+ gmp_args_base::Destroy();
+ }
+private:
+ ~RefCountTaskWrapper() {}
+
+ GMPTask* mTask;
+ RefPtr<RefCounted> mRefCounted;
+};
+
+
// 0 arguments --
template<typename M> class gmp_args_nm_0 : public gmp_args_base {
public:
@@ -10,7 +34,7 @@
m_ (m) {}
void Run() {
- m_();
+ m_ ();
}
private:
@@ -29,7 +53,7 @@
}
void Run() {
- *r_ = m_();
+ *r_ = m_ ();
}
private:
@@ -46,7 +70,7 @@
o_ (o), m_ (m) {}
void Run() {
- ((*o_).*m_)();
+ ((*o_).*m_) ();
}
private:
@@ -66,7 +90,7 @@
}
void Run() {
- *r_ = ((*o_).*m_)();
+ *r_ = ((*o_).*m_) ();
}
private:
@@ -300,8 +324,7 @@
// 3 arguments --
-template<typename C, typename M, typename A0, typename A1, typename A2, typename R> class gmp_args_m_3_ret : public
- gmp_args_base {
+template<typename C, typename M, typename A0, typename A1, typename A2, typename R> class gmp_args_m_3_ret : public gmp_args_base {
public:
gmp_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) {}
@@ -345,8 +368,7 @@
// 4 arguments --
-template<typename M, typename A0, typename A1, typename A2, typename A3, typename R> class gmp_args_nm_4_ret : public
- gmp_args_base {
+template<typename M, typename A0, typename A1, typename A2, typename A3, typename R> class gmp_args_nm_4_ret : public gmp_args_base {
public:
gmp_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) {}
@@ -370,8 +392,7 @@
// 4 arguments --
-template<typename C, typename M, typename A0, typename A1, typename A2, typename A3> class gmp_args_m_4 : public
- gmp_args_base {
+template<typename C, typename M, typename A0, typename A1, typename A2, typename A3> class gmp_args_m_4 : public gmp_args_base {
public:
gmp_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) {}
@@ -392,8 +413,7 @@
// 4 arguments --
-template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename R> class
- gmp_args_m_4_ret : public gmp_args_base {
+template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename R> class gmp_args_m_4_ret : public gmp_args_base {
public:
gmp_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) {}
@@ -418,8 +438,7 @@
// 5 arguments --
-template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4> class gmp_args_nm_5 : public
- gmp_args_base {
+template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4> class gmp_args_nm_5 : public gmp_args_base {
public:
gmp_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) {}
@@ -440,8 +459,7 @@
// 5 arguments --
-template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename R> class
- gmp_args_nm_5_ret : public gmp_args_base {
+template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename R> class gmp_args_nm_5_ret : public gmp_args_base {
public:
gmp_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) {}
@@ -466,8 +484,7 @@
// 5 arguments --
-template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4> class gmp_args_m_5 :
- public gmp_args_base {
+template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4> class gmp_args_m_5 : public gmp_args_base {
public:
gmp_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) {}
@@ -489,8 +506,7 @@
// 5 arguments --
-template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename R> class
- gmp_args_m_5_ret : public gmp_args_base {
+template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename R> class gmp_args_m_5_ret : public gmp_args_base {
public:
gmp_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) {}
@@ -516,8 +532,7 @@
// 6 arguments --
-template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5> class gmp_args_nm_6 :
- public gmp_args_base {
+template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5> class gmp_args_nm_6 : public gmp_args_base {
public:
gmp_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) {}
@@ -539,8 +554,7 @@
// 6 arguments --
-template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename R> class
- gmp_args_nm_6_ret : public gmp_args_base {
+template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename R> class gmp_args_nm_6_ret : public gmp_args_base {
public:
gmp_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) {}
@@ -566,8 +580,7 @@
// 6 arguments --
-template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5> class
- gmp_args_m_6 : public gmp_args_base {
+template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5> class gmp_args_m_6 : public gmp_args_base {
public:
gmp_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) {}
@@ -590,8 +603,7 @@
// 6 arguments --
-template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename R>
-class gmp_args_m_6_ret : public gmp_args_base {
+template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename R> class gmp_args_m_6_ret : public gmp_args_base {
public:
gmp_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) {}
@@ -618,8 +630,7 @@
// 7 arguments --
-template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6> class
- gmp_args_nm_7 : public gmp_args_base {
+template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6> class gmp_args_nm_7 : public gmp_args_base {
public:
gmp_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) {}
@@ -642,8 +653,7 @@
// 7 arguments --
-template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename R>
-class gmp_args_nm_7_ret : public gmp_args_base {
+template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename R> class gmp_args_nm_7_ret : public gmp_args_base {
public:
gmp_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) {}
@@ -670,8 +680,7 @@
// 7 arguments --
-template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
-class gmp_args_m_7 : public gmp_args_base {
+template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6> class gmp_args_m_7 : public gmp_args_base {
public:
gmp_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) {}
@@ -695,8 +704,7 @@
// 7 arguments --
-template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename R>
-class gmp_args_m_7_ret : public gmp_args_base {
+template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename R> class gmp_args_m_7_ret : public gmp_args_base {
public:
gmp_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) {}
@@ -724,8 +732,7 @@
// 8 arguments --
-template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
-class gmp_args_nm_8 : public gmp_args_base {
+template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7> class gmp_args_nm_8 : public gmp_args_base {
public:
gmp_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) {}
@@ -749,8 +756,7 @@
// 8 arguments --
-template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename R>
-class gmp_args_nm_8_ret : public gmp_args_base {
+template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename R> class gmp_args_nm_8_ret : public gmp_args_base {
public:
gmp_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) {}
@@ -778,8 +784,7 @@
// 8 arguments --
-template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
-class gmp_args_m_8 : public gmp_args_base {
+template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7> class gmp_args_m_8 : public gmp_args_base {
public:
gmp_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) {}
@@ -804,8 +809,7 @@
// 8 arguments --
-template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename R>
-class gmp_args_m_8_ret : public gmp_args_base {
+template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename R> class gmp_args_m_8_ret : public gmp_args_base {
public:
gmp_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) {}
@@ -834,8 +838,7 @@
// 9 arguments --
-template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
-class gmp_args_nm_9 : public gmp_args_base {
+template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8> class gmp_args_nm_9 : public gmp_args_base {
public:
gmp_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) {}
@@ -860,8 +863,7 @@
// 9 arguments --
-template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename R>
-class gmp_args_nm_9_ret : public gmp_args_base {
+template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename R> class gmp_args_nm_9_ret : public gmp_args_base {
public:
gmp_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) {}
@@ -890,8 +892,7 @@
// 9 arguments --
-template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
-class gmp_args_m_9 : public gmp_args_base {
+template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8> class gmp_args_m_9 : public gmp_args_base {
public:
gmp_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) {}
@@ -917,8 +918,7 @@
// 9 arguments --
-template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename R>
-class gmp_args_m_9_ret : public gmp_args_base {
+template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename R> class gmp_args_m_9_ret : public gmp_args_base {
public:
gmp_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) {}
@@ -948,8 +948,7 @@
// 10 arguments --
-template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
-class gmp_args_nm_10 : public gmp_args_base {
+template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9> class gmp_args_nm_10 : public gmp_args_base {
public:
gmp_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) {}
@@ -975,8 +974,7 @@
// 10 arguments --
-template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename R>
-class gmp_args_nm_10_ret : public gmp_args_base {
+template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename R> class gmp_args_nm_10_ret : public gmp_args_base {
public:
gmp_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) {}
@@ -1006,8 +1004,7 @@
// 10 arguments --
-template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
-class gmp_args_m_10 : public gmp_args_base {
+template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9> class gmp_args_m_10 : public gmp_args_base {
public:
gmp_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) {}
@@ -1034,12 +1031,10 @@
// 10 arguments --
-template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename R>
-class gmp_args_m_10_ret : public gmp_args_base {
+template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename R> class gmp_args_m_10_ret : public gmp_args_base {
public:
gmp_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) {}
+ 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;
}
@@ -1067,12 +1062,10 @@
// 11 arguments --
-template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
-class gmp_args_nm_11 : public gmp_args_base {
+template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10> class gmp_args_nm_11 : public gmp_args_base {
public:
gmp_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) {}
+ 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_);
@@ -1096,12 +1089,10 @@
// 11 arguments --
-template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename R>
-class gmp_args_nm_11_ret : public gmp_args_base {
+template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename R> class gmp_args_nm_11_ret : public gmp_args_base {
public:
gmp_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) {}
+ 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;
}
@@ -1129,12 +1120,10 @@
// 11 arguments --
-template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
-class gmp_args_m_11 : public gmp_args_base {
+template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10> class gmp_args_m_11 : public gmp_args_base {
public:
gmp_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) {}
+ 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_);
@@ -1159,12 +1148,10 @@
// 11 arguments --
-template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename R>
-class gmp_args_m_11_ret : public gmp_args_base {
+template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename R> class gmp_args_m_11_ret : public gmp_args_base {
public:
gmp_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) {}
+ 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;
}
@@ -1193,12 +1180,10 @@
// 12 arguments --
-template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
-class gmp_args_nm_12 : public gmp_args_base {
+template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11> class gmp_args_nm_12 : public gmp_args_base {
public:
gmp_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) {}
+ 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_);
@@ -1223,12 +1208,10 @@
// 12 arguments --
-template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename R>
-class gmp_args_nm_12_ret : public gmp_args_base {
+template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename R> class gmp_args_nm_12_ret : public gmp_args_base {
public:
gmp_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) {}
+ 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;
}
@@ -1257,12 +1240,10 @@
// 12 arguments --
-template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
-class gmp_args_m_12 : public gmp_args_base {
+template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11> class gmp_args_m_12 : public gmp_args_base {
public:
gmp_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) {}
+ 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_);
@@ -1288,13 +1269,10 @@
// 12 arguments --
-template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename R>
-class gmp_args_m_12_ret : public gmp_args_base {
+template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename R> class gmp_args_m_12_ret : public gmp_args_base {
public:
- gmp_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) {}
+ gmp_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;
}
@@ -1324,12 +1302,10 @@
// 13 arguments --
-template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
-class gmp_args_nm_13 : public gmp_args_base {
+template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12> class gmp_args_nm_13 : public gmp_args_base {
public:
gmp_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) {}
+ 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_);
@@ -1355,13 +1331,10 @@
// 13 arguments --
-template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename R>
-class gmp_args_nm_13_ret : public gmp_args_base {
+template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename R> class gmp_args_nm_13_ret : public gmp_args_base {
public:
- gmp_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) {}
+ gmp_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;
}
@@ -1391,13 +1364,10 @@
// 13 arguments --
-template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
-class gmp_args_m_13 : public gmp_args_base {
+template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12> class gmp_args_m_13 : public gmp_args_base {
public:
- gmp_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) {}
+ gmp_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_);
@@ -1424,13 +1394,10 @@
// 13 arguments --
-template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename R>
-class gmp_args_m_13_ret : public gmp_args_base {
+template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename R> class gmp_args_m_13_ret : public gmp_args_base {
public:
- gmp_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) {}
+ gmp_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;
}
@@ -1461,13 +1428,10 @@
// 14 arguments --
-template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
-class gmp_args_nm_14 : public gmp_args_base {
+template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13> class gmp_args_nm_14 : public gmp_args_base {
public:
- gmp_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) {}
+ gmp_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_);
@@ -1494,13 +1458,10 @@
// 14 arguments --
-template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename R>
-class gmp_args_nm_14_ret : public gmp_args_base {
+template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename R> class gmp_args_nm_14_ret : public gmp_args_base {
public:
- gmp_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) {}
+ gmp_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;
}
@@ -1531,13 +1492,10 @@
// 14 arguments --
-template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
-class gmp_args_m_14 : public gmp_args_base {
+template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13> class gmp_args_m_14 : public gmp_args_base {
public:
- gmp_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) {}
+ gmp_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_);
@@ -1565,13 +1523,10 @@
// 14 arguments --
-template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename R>
-class gmp_args_m_14_ret : public gmp_args_base {
+template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename R> class gmp_args_m_14_ret : public gmp_args_base {
public:
- gmp_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) {}
+ gmp_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;
}
@@ -1609,7 +1564,7 @@
template<typename M>
gmp_args_nm_0<M>* WrapTaskNM (M m) {
return new gmp_args_nm_0<M>
- (m);
+ (m);
}
// 0 arguments --
@@ -1616,7 +1571,7 @@
template<typename M, typename R>
gmp_args_nm_0_ret<M, R>* WrapTaskNMRet (M m, R* r) {
return new gmp_args_nm_0_ret<M, R>
- (m, r);
+ (m, r);
}
// 0 arguments --
@@ -1623,14 +1578,21 @@
template<typename C, typename M>
gmp_args_m_0<C, M>* WrapTask (C o, M m) {
return new gmp_args_m_0<C, M>
- (o, m);
+ (o, m);
}
+template<typename C, typename M>
+GMPTask*
+WrapTaskRefCounted (C o, M m) {
+ GMPTask *t = WrapTask (o, m);
+ return new RefCountTaskWrapper(t, o);
+}
+
// 0 arguments --
template<typename C, typename M, typename R>
gmp_args_m_0_ret<C, M, R>* WrapTaskRet (C o, M m, R* r) {
return new gmp_args_m_0_ret<C, M, R>
- (o, m, r);
+ (o, m, r);
}
// 1 arguments --
@@ -1637,7 +1599,7 @@
template<typename M, typename A0>
gmp_args_nm_1<M, A0>* WrapTaskNM (M m, A0 a0) {
return new gmp_args_nm_1<M, A0>
- (m, a0);
+ (m, a0);
}
// 1 arguments --
@@ -1644,7 +1606,7 @@
template<typename M, typename A0, typename R>
gmp_args_nm_1_ret<M, A0, R>* WrapTaskNMRet (M m, A0 a0, R* r) {
return new gmp_args_nm_1_ret<M, A0, R>
- (m, a0, r);
+ (m, a0, r);
}
// 1 arguments --
@@ -1651,14 +1613,21 @@
template<typename C, typename M, typename A0>
gmp_args_m_1<C, M, A0>* WrapTask (C o, M m, A0 a0) {
return new gmp_args_m_1<C, M, A0>
- (o, m, a0);
+ (o, m, a0);
}
+template<typename C, typename M, typename A0>
+GMPTask*
+WrapTaskRefCounted (C o, M m, A0 a0) {
+ GMPTask *t = WrapTask (o, m, a0);
+ return new RefCountTaskWrapper(t, o);
+}
+
// 1 arguments --
template<typename C, typename M, typename A0, typename R>
gmp_args_m_1_ret<C, M, A0, R>* WrapTaskRet (C o, M m, A0 a0, R* r) {
return new gmp_args_m_1_ret<C, M, A0, R>
- (o, m, a0, r);
+ (o, m, a0, r);
}
// 2 arguments --
@@ -1665,7 +1634,7 @@
template<typename M, typename A0, typename A1>
gmp_args_nm_2<M, A0, A1>* WrapTaskNM (M m, A0 a0, A1 a1) {
return new gmp_args_nm_2<M, A0, A1>
- (m, a0, a1);
+ (m, a0, a1);
}
// 2 arguments --
@@ -1672,7 +1641,7 @@
template<typename M, typename A0, typename A1, typename R>
gmp_args_nm_2_ret<M, A0, A1, R>* WrapTaskNMRet (M m, A0 a0, A1 a1, R* r) {
return new gmp_args_nm_2_ret<M, A0, A1, R>
- (m, a0, a1, r);
+ (m, a0, a1, r);
}
// 2 arguments --
@@ -1679,14 +1648,21 @@
template<typename C, typename M, typename A0, typename A1>
gmp_args_m_2<C, M, A0, A1>* WrapTask (C o, M m, A0 a0, A1 a1) {
return new gmp_args_m_2<C, M, A0, A1>
- (o, m, a0, a1);
+ (o, m, a0, a1);
}
+template<typename C, typename M, typename A0, typename A1>
+GMPTask*
+WrapTaskRefCounted (C o, M m, A0 a0, A1 a1) {
+ GMPTask *t = WrapTask (o, m, a0, a1);
+ return new RefCountTaskWrapper(t, o);
+}
+
// 2 arguments --
template<typename C, typename M, typename A0, typename A1, typename R>
gmp_args_m_2_ret<C, M, A0, A1, R>* WrapTaskRet (C o, M m, A0 a0, A1 a1, R* r) {
return new gmp_args_m_2_ret<C, M, A0, A1, R>
- (o, m, a0, a1, r);
+ (o, m, a0, a1, r);
}
// 3 arguments --
@@ -1693,7 +1669,7 @@
template<typename M, typename A0, typename A1, typename A2>
gmp_args_nm_3<M, A0, A1, A2>* WrapTaskNM (M m, A0 a0, A1 a1, A2 a2) {
return new gmp_args_nm_3<M, A0, A1, A2>
- (m, a0, a1, a2);
+ (m, a0, a1, a2);
}
// 3 arguments --
@@ -1700,7 +1676,7 @@
template<typename M, typename A0, typename A1, typename A2, typename R>
gmp_args_nm_3_ret<M, A0, A1, A2, R>* WrapTaskNMRet (M m, A0 a0, A1 a1, A2 a2, R* r) {
return new gmp_args_nm_3_ret<M, A0, A1, A2, R>
- (m, a0, a1, a2, r);
+ (m, a0, a1, a2, r);
}
// 3 arguments --
@@ -1707,14 +1683,21 @@
template<typename C, typename M, typename A0, typename A1, typename A2>
gmp_args_m_3<C, M, A0, A1, A2>* WrapTask (C o, M m, A0 a0, A1 a1, A2 a2) {
return new gmp_args_m_3<C, M, A0, A1, A2>
- (o, m, a0, a1, a2);
+ (o, m, a0, a1, a2);
}
+template<typename C, typename M, typename A0, typename A1, typename A2>
+GMPTask*
+WrapTaskRefCounted (C o, M m, A0 a0, A1 a1, A2 a2) {
+ GMPTask *t = WrapTask (o, m, a0, a1, a2);
+ return new RefCountTaskWrapper(t, o);
+}
+
// 3 arguments --
template<typename C, typename M, typename A0, typename A1, typename A2, typename R>
gmp_args_m_3_ret<C, M, A0, A1, A2, R>* WrapTaskRet (C o, M m, A0 a0, A1 a1, A2 a2, R* r) {
return new gmp_args_m_3_ret<C, M, A0, A1, A2, R>
- (o, m, a0, a1, a2, r);
+ (o, m, a0, a1, a2, r);
}
// 4 arguments --
@@ -1721,7 +1704,7 @@
template<typename M, typename A0, typename A1, typename A2, typename A3>
gmp_args_nm_4<M, A0, A1, A2, A3>* WrapTaskNM (M m, A0 a0, A1 a1, A2 a2, A3 a3) {
return new gmp_args_nm_4<M, A0, A1, A2, A3>
- (m, a0, a1, a2, a3);
+ (m, a0, a1, a2, a3);
}
// 4 arguments --
@@ -1728,7 +1711,7 @@
template<typename M, typename A0, typename A1, typename A2, typename A3, typename R>
gmp_args_nm_4_ret<M, A0, A1, A2, A3, R>* WrapTaskNMRet (M m, A0 a0, A1 a1, A2 a2, A3 a3, R* r) {
return new gmp_args_nm_4_ret<M, A0, A1, A2, A3, R>
- (m, a0, a1, a2, a3, r);
+ (m, a0, a1, a2, a3, r);
}
// 4 arguments --
@@ -1735,14 +1718,21 @@
template<typename C, typename M, typename A0, typename A1, typename A2, typename A3>
gmp_args_m_4<C, M, A0, A1, A2, A3>* WrapTask (C o, M m, A0 a0, A1 a1, A2 a2, A3 a3) {
return new gmp_args_m_4<C, M, A0, A1, A2, A3>
- (o, m, a0, a1, a2, a3);
+ (o, m, a0, a1, a2, a3);
}
+template<typename C, typename M, typename A0, typename A1, typename A2, typename A3>
+GMPTask*
+WrapTaskRefCounted (C o, M m, A0 a0, A1 a1, A2 a2, A3 a3) {
+ GMPTask *t = WrapTask (o, m, a0, a1, a2, a3);
+ return new RefCountTaskWrapper(t, o);
+}
+
// 4 arguments --
template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename R>
gmp_args_m_4_ret<C, M, A0, A1, A2, A3, R>* WrapTaskRet (C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, R* r) {
return new gmp_args_m_4_ret<C, M, A0, A1, A2, A3, R>
- (o, m, a0, a1, a2, a3, r);
+ (o, m, a0, a1, a2, a3, r);
}
// 5 arguments --
@@ -1749,7 +1739,7 @@
template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4>
gmp_args_nm_5<M, A0, A1, A2, A3, A4>* WrapTaskNM (M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4) {
return new gmp_args_nm_5<M, A0, A1, A2, A3, A4>
- (m, a0, a1, a2, a3, a4);
+ (m, a0, a1, a2, a3, a4);
}
// 5 arguments --
@@ -1756,7 +1746,7 @@
template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename R>
gmp_args_nm_5_ret<M, A0, A1, A2, A3, A4, R>* WrapTaskNMRet (M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, R* r) {
return new gmp_args_nm_5_ret<M, A0, A1, A2, A3, A4, R>
- (m, a0, a1, a2, a3, a4, r);
+ (m, a0, a1, a2, a3, a4, r);
}
// 5 arguments --
@@ -1763,14 +1753,21 @@
template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4>
gmp_args_m_5<C, M, A0, A1, A2, A3, A4>* WrapTask (C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4) {
return new gmp_args_m_5<C, M, A0, A1, A2, A3, A4>
- (o, m, a0, a1, a2, a3, a4);
+ (o, m, a0, a1, a2, a3, a4);
}
+template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4>
+GMPTask*
+WrapTaskRefCounted (C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4) {
+ GMPTask *t = WrapTask (o, m, a0, a1, a2, a3, a4);
+ return new RefCountTaskWrapper(t, o);
+}
+
// 5 arguments --
template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename R>
gmp_args_m_5_ret<C, M, A0, A1, A2, A3, A4, R>* WrapTaskRet (C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, R* r) {
return new gmp_args_m_5_ret<C, M, A0, A1, A2, A3, A4, R>
- (o, m, a0, a1, a2, a3, a4, r);
+ (o, m, a0, a1, a2, a3, a4, r);
}
// 6 arguments --
@@ -1777,7 +1774,7 @@
template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
gmp_args_nm_6<M, A0, A1, A2, A3, A4, A5>* WrapTaskNM (M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) {
return new gmp_args_nm_6<M, A0, A1, A2, A3, A4, A5>
- (m, a0, a1, a2, a3, a4, a5);
+ (m, a0, a1, a2, a3, a4, a5);
}
// 6 arguments --
@@ -1784,7 +1781,7 @@
template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename R>
gmp_args_nm_6_ret<M, A0, A1, A2, A3, A4, A5, R>* WrapTaskNMRet (M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, R* r) {
return new gmp_args_nm_6_ret<M, A0, A1, A2, A3, A4, A5, R>
- (m, a0, a1, a2, a3, a4, a5, r);
+ (m, a0, a1, a2, a3, a4, a5, r);
}
// 6 arguments --
@@ -1791,15 +1788,21 @@
template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
gmp_args_m_6<C, M, A0, A1, A2, A3, A4, A5>* WrapTask (C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) {
return new gmp_args_m_6<C, M, A0, A1, A2, A3, A4, A5>
- (o, m, a0, a1, a2, a3, a4, a5);
+ (o, m, a0, a1, a2, a3, a4, a5);
}
+template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
+GMPTask*
+WrapTaskRefCounted (C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) {
+ GMPTask *t = WrapTask (o, m, a0, a1, a2, a3, a4, a5);
+ return new RefCountTaskWrapper(t, o);
+}
+
// 6 arguments --
template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename R>
-gmp_args_m_6_ret<C, M, A0, A1, A2, A3, A4, A5, R>* WrapTaskRet (C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5,
- R* r) {
+gmp_args_m_6_ret<C, M, A0, A1, A2, A3, A4, A5, R>* WrapTaskRet (C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, R* r) {
return new gmp_args_m_6_ret<C, M, A0, A1, A2, A3, A4, A5, R>
- (o, m, a0, a1, a2, a3, a4, a5, r);
+ (o, m, a0, a1, a2, a3, a4, a5, r);
}
// 7 arguments --
@@ -1806,15 +1809,14 @@
template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
gmp_args_nm_7<M, A0, A1, A2, A3, A4, A5, A6>* WrapTaskNM (M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) {
return new gmp_args_nm_7<M, A0, A1, A2, A3, A4, A5, A6>
- (m, a0, a1, a2, a3, a4, a5, a6);
+ (m, a0, a1, a2, a3, a4, a5, a6);
}
// 7 arguments --
template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename R>
-gmp_args_nm_7_ret<M, A0, A1, A2, A3, A4, A5, A6, R>* WrapTaskNMRet (M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5,
- A6 a6, R* r) {
+gmp_args_nm_7_ret<M, A0, A1, A2, A3, A4, A5, A6, R>* WrapTaskNMRet (M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, R* r) {
return new gmp_args_nm_7_ret<M, A0, A1, A2, A3, A4, A5, A6, R>
- (m, a0, a1, a2, a3, a4, a5, a6, r);
+ (m, a0, a1, a2, a3, a4, a5, a6, r);
}
// 7 arguments --
@@ -1821,238 +1823,265 @@
template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
gmp_args_m_7<C, M, A0, A1, A2, A3, A4, A5, A6>* WrapTask (C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) {
return new gmp_args_m_7<C, M, A0, A1, A2, A3, A4, A5, A6>
- (o, m, a0, a1, a2, a3, a4, a5, a6);
+ (o, m, a0, a1, a2, a3, a4, a5, a6);
}
+template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
+GMPTask*
+WrapTaskRefCounted (C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) {
+ GMPTask *t = WrapTask (o, m, a0, a1, a2, a3, a4, a5, a6);
+ return new RefCountTaskWrapper(t, o);
+}
+
// 7 arguments --
template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename R>
-gmp_args_m_7_ret<C, M, A0, A1, A2, A3, A4, A5, A6, R>* WrapTaskRet (C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5,
- A6 a6, R* r) {
+gmp_args_m_7_ret<C, M, A0, A1, A2, A3, A4, A5, A6, R>* WrapTaskRet (C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, R* r) {
return new gmp_args_m_7_ret<C, M, A0, A1, A2, A3, A4, A5, A6, R>
- (o, m, a0, a1, a2, a3, a4, a5, a6, r);
+ (o, m, a0, a1, a2, a3, a4, a5, a6, r);
}
// 8 arguments --
template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
-gmp_args_nm_8<M, A0, A1, A2, A3, A4, A5, A6, A7>* WrapTaskNM (M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6,
- A7 a7) {
+gmp_args_nm_8<M, A0, A1, A2, A3, A4, A5, A6, A7>* WrapTaskNM (M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) {
return new gmp_args_nm_8<M, A0, A1, A2, A3, A4, A5, A6, A7>
- (m, a0, a1, a2, a3, a4, a5, a6, a7);
+ (m, a0, a1, a2, a3, a4, a5, a6, a7);
}
// 8 arguments --
template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename R>
-gmp_args_nm_8_ret<M, A0, A1, A2, A3, A4, A5, A6, A7, R>* WrapTaskNMRet (M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5,
- A6 a6, A7 a7, R* r) {
+gmp_args_nm_8_ret<M, A0, A1, A2, A3, A4, A5, A6, A7, R>* WrapTaskNMRet (M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, R* r) {
return new gmp_args_nm_8_ret<M, A0, A1, A2, A3, A4, A5, A6, A7, R>
- (m, a0, a1, a2, a3, a4, a5, a6, a7, r);
+ (m, a0, a1, a2, a3, a4, a5, a6, a7, r);
}
// 8 arguments --
template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
-gmp_args_m_8<C, M, A0, A1, A2, A3, A4, A5, A6, A7>* WrapTask (C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6,
- A7 a7) {
+gmp_args_m_8<C, M, A0, A1, A2, A3, A4, A5, A6, A7>* WrapTask (C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) {
return new gmp_args_m_8<C, M, A0, A1, A2, A3, A4, A5, A6, A7>
- (o, m, a0, a1, a2, a3, a4, a5, a6, a7);
+ (o, m, a0, a1, a2, a3, a4, a5, a6, a7);
}
+template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
+GMPTask*
+WrapTaskRefCounted (C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) {
+ GMPTask *t = WrapTask (o, m, a0, a1, a2, a3, a4, a5, a6, a7);
+ return new RefCountTaskWrapper(t, o);
+}
+
// 8 arguments --
template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename R>
-gmp_args_m_8_ret<C, M, A0, A1, A2, A3, A4, A5, A6, A7, R>* WrapTaskRet (C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4,
- A5 a5, A6 a6, A7 a7, R* r) {
+gmp_args_m_8_ret<C, M, A0, A1, A2, A3, A4, A5, A6, A7, R>* 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_args_m_8_ret<C, M, A0, A1, A2, A3, A4, A5, A6, A7, R>
- (o, m, a0, a1, a2, a3, a4, a5, a6, a7, r);
+ (o, m, a0, a1, a2, a3, a4, a5, a6, a7, r);
}
// 9 arguments --
template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
-gmp_args_nm_9<M, A0, A1, A2, A3, A4, A5, A6, A7, A8>* WrapTaskNM (M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6,
- A7 a7, A8 a8) {
+gmp_args_nm_9<M, A0, A1, A2, A3, A4, A5, A6, A7, A8>* WrapTaskNM (M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) {
return new gmp_args_nm_9<M, A0, A1, A2, A3, A4, A5, A6, A7, A8>
- (m, a0, a1, a2, a3, a4, a5, a6, a7, a8);
+ (m, a0, a1, a2, a3, a4, a5, a6, a7, a8);
}
// 9 arguments --
template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename R>
-gmp_args_nm_9_ret<M, A0, A1, A2, A3, A4, A5, A6, A7, A8, R>* WrapTaskNMRet (M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4,
- A5 a5, A6 a6, A7 a7, A8 a8, R* r) {
+gmp_args_nm_9_ret<M, A0, A1, A2, A3, A4, A5, A6, A7, A8, R>* 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_args_nm_9_ret<M, A0, A1, A2, A3, A4, A5, A6, A7, A8, R>
- (m, a0, a1, a2, a3, a4, a5, a6, a7, a8, r);
+ (m, a0, a1, a2, a3, a4, a5, a6, a7, a8, r);
}
// 9 arguments --
template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
-gmp_args_m_9<C, M, A0, A1, A2, A3, A4, A5, A6, A7, A8>* WrapTask (C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5,
- A6 a6, A7 a7, A8 a8) {
+gmp_args_m_9<C, M, A0, A1, A2, A3, A4, A5, A6, A7, A8>* 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_args_m_9<C, M, A0, A1, A2, A3, A4, A5, A6, A7, A8>
- (o, m, a0, a1, a2, a3, a4, a5, a6, a7, a8);
+ (o, m, a0, a1, a2, a3, a4, a5, a6, a7, a8);
}
+template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
+GMPTask*
+WrapTaskRefCounted (C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) {
+ GMPTask *t = WrapTask (o, m, a0, a1, a2, a3, a4, a5, a6, a7, a8);
+ return new RefCountTaskWrapper(t, o);
+}
+
// 9 arguments --
template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename R>
-gmp_args_m_9_ret<C, M, A0, A1, A2, A3, A4, A5, A6, A7, A8, R>* 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) {
+gmp_args_m_9_ret<C, M, A0, A1, A2, A3, A4, A5, A6, A7, A8, R>* 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_args_m_9_ret<C, M, A0, A1, A2, A3, A4, A5, A6, A7, A8, R>
- (o, m, a0, a1, a2, a3, a4, a5, a6, a7, a8, r);
+ (o, m, a0, a1, a2, a3, a4, a5, a6, a7, a8, r);
}
// 10 arguments --
template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
-gmp_args_nm_10<M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>* WrapTaskNM (M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5,
- A6 a6, A7 a7, A8 a8, A9 a9) {
+gmp_args_nm_10<M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>* 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_args_nm_10<M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>
- (m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9);
+ (m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9);
}
// 10 arguments --
template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename R>
-gmp_args_nm_10_ret<M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, R>* 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) {
+gmp_args_nm_10_ret<M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, R>* 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_args_nm_10_ret<M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, R>
- (m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, r);
+ (m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, r);
}
// 10 arguments --
template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
-gmp_args_m_10<C, M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>* 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) {
+gmp_args_m_10<C, M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>* 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_args_m_10<C, M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>
- (o, m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9);
+ (o, m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9);
}
+template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
+GMPTask*
+WrapTaskRefCounted (C o, M m, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) {
+ GMPTask *t = WrapTask (o, m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9);
+ return new RefCountTaskWrapper(t, o);
+}
+
// 10 arguments --
template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename R>
-gmp_args_m_10_ret<C, M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, R>* 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) {
+gmp_args_m_10_ret<C, M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, R>* 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_args_m_10_ret<C, M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, R>
- (o, m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, r);
+ (o, m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, r);
}
// 11 arguments --
template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
-gmp_args_nm_11<M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>* 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) {
+gmp_args_nm_11<M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>* 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_args_nm_11<M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>
- (m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
+ (m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
}
// 11 arguments --
template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename R>
-gmp_args_nm_11_ret<M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, R>* 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) {
+gmp_args_nm_11_ret<M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, R>* 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_args_nm_11_ret<M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, R>
- (m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, r);
+ (m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, r);
}
// 11 arguments --
template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
-gmp_args_m_11<C, M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>* 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) {
+gmp_args_m_11<C, M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>* 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_args_m_11<C, M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>
- (o, m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
+ (o, m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
}
+template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
+GMPTask*
+WrapTaskRefCounted (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) {
+ GMPTask *t = WrapTask (o, m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
+ return new RefCountTaskWrapper(t, o);
+}
+
// 11 arguments --
template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename R>
-gmp_args_m_11_ret<C, M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, R>* 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) {
+gmp_args_m_11_ret<C, M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, R>* 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_args_m_11_ret<C, M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, R>
- (o, m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, r);
+ (o, m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, r);
}
// 12 arguments --
template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
-gmp_args_nm_12<M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>* 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) {
+gmp_args_nm_12<M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>* 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_args_nm_12<M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>
- (m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);
+ (m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);
}
// 12 arguments --
template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename R>
-gmp_args_nm_12_ret<M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, R>* 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) {
+gmp_args_nm_12_ret<M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, R>* 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_args_nm_12_ret<M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, R>
- (m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, r);
+ (m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, r);
}
// 12 arguments --
template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
-gmp_args_m_12<C, M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>* 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) {
+gmp_args_m_12<C, M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>* 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_args_m_12<C, M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>
- (o, m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);
+ (o, m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);
}
+template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
+GMPTask*
+WrapTaskRefCounted (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) {
+ GMPTask *t = WrapTask (o, m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);
+ return new RefCountTaskWrapper(t, o);
+}
+
// 12 arguments --
template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename R>
-gmp_args_m_12_ret<C, M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, R>* 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) {
+gmp_args_m_12_ret<C, M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, R>* 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_args_m_12_ret<C, M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, R>
- (o, m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, r);
+ (o, m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, r);
}
// 13 arguments --
template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
-gmp_args_nm_13<M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>* 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) {
+gmp_args_nm_13<M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>* 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_args_nm_13<M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>
- (m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12);
+ (m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12);
}
// 13 arguments --
template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename R>
-gmp_args_nm_13_ret<M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, R>* 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) {
+gmp_args_nm_13_ret<M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, R>* 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_args_nm_13_ret<M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, R>
- (m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, r);
+ (m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, r);
}
// 13 arguments --
template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
-gmp_args_m_13<C, M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>* 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) {
+gmp_args_m_13<C, M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>* 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_args_m_13<C, M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>
- (o, m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12);
+ (o, m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12);
}
+template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
+GMPTask*
+WrapTaskRefCounted (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) {
+ GMPTask *t = WrapTask (o, m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12);
+ return new RefCountTaskWrapper(t, o);
+}
+
// 13 arguments --
template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename R>
-gmp_args_m_13_ret<C, M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, R>* 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) {
+gmp_args_m_13_ret<C, M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, R>* 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_args_m_13_ret<C, M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, R>
- (o, m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, r);
+ (o, m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, r);
}
// 14 arguments --
template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
-gmp_args_nm_14<M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>* 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) {
+gmp_args_nm_14<M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>* 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_args_nm_14<M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>
- (m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13);
+ (m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13);
}
// 14 arguments --
template<typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename R>
-gmp_args_nm_14_ret<M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, R>* 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) {
+gmp_args_nm_14_ret<M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, R>* 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_args_nm_14_ret<M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, R>
- (m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, r);
+ (m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, r);
}
// 14 arguments --
template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
-gmp_args_m_14<C, M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>* 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) {
+gmp_args_m_14<C, M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>* 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_args_m_14<C, M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>
- (o, m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13);
+ (o, m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13);
}
+template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
+GMPTask*
+WrapTaskRefCounted (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) {
+ GMPTask *t = WrapTask (o, m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13);
+ return new RefCountTaskWrapper(t, o);
+}
+
// 14 arguments --
template<typename C, typename M, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename R>
-gmp_args_m_14_ret<C, M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, R>* 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) {
+gmp_args_m_14_ret<C, M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, R>* 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_args_m_14_ret<C, M, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, R>
- (o, m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, r);
+ (o, m, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, r);
}