{
typedef R (*ptr_type)(void *self);
-private:
-
- void *self;
- ptr_type func;
-
-protected:
-
- template<typename method>
- struct thunktype;
-
- template<class klass>
- struct thunktype<R (klass::*)>
- {
- typedef klass K;
- };
-
- template<class klass, R (klass::*method)()>
- static R thunk (void *self)
- {
- klass *obj = static_cast<klass *>(self);
- return (obj->*method) ();
- }
-
-public:
template<class K, R (K::*method)()>
void set (K *object)
{
{
return call ();
}
-};
-
-template<class R, class A1>
-struct callback<R (A1)>
-{
- typedef R (*ptr_type)(void *self, A1);
private:
void *self;
ptr_type func;
-protected:
-
- template<typename method>
- struct thunktype;
-
- template<class klass>
- struct thunktype<R (klass::*)>
- {
- typedef klass K;
- };
-
- template<class klass, R (klass::*method)(A1)>
- static R thunk (void *self, A1 a1)
+ template<class klass, R (klass::*method)()>
+ static R thunk (void *self)
{
klass *obj = static_cast<klass *>(self);
- return (obj->*method) (a1);
+ return (obj->*method) ();
}
+};
+
+template<class R, class A1>
+struct callback<R (A1)>
+{
+ typedef R (*ptr_type)(void *self, A1);
-public:
template<class K, R (K::*method)(A1)>
void set (K *object)
{
{
return call (a1);
}
-};
-
-template<class R, class A1, class A2>
-struct callback<R (A1, A2)>
-{
- typedef R (*ptr_type)(void *self, A1, A2);
private:
void *self;
ptr_type func;
-protected:
-
- template<typename method>
- struct thunktype;
-
- template<class klass>
- struct thunktype<R (klass::*)>
- {
- typedef klass K;
- };
-
- template<class klass, R (klass::*method)(A1, A2)>
- static R thunk (void *self, A1 a1, A2 a2)
+ template<class klass, R (klass::*method)(A1)>
+ static R thunk (void *self, A1 a1)
{
klass *obj = static_cast<klass *>(self);
- return (obj->*method) (a1, a2);
+ return (obj->*method) (a1);
}
+};
+
+template<class R, class A1, class A2>
+struct callback<R (A1, A2)>
+{
+ typedef R (*ptr_type)(void *self, A1, A2);
-public:
template<class K, R (K::*method)(A1, A2)>
void set (K *object)
{
{
return call (a1, a2);
}
-};
-
-template<class R, class A1, class A2, class A3>
-struct callback<R (A1, A2, A3)>
-{
- typedef R (*ptr_type)(void *self, A1, A2, A3);
private:
void *self;
ptr_type func;
-protected:
-
- template<typename method>
- struct thunktype;
-
- template<class klass>
- struct thunktype<R (klass::*)>
- {
- typedef klass K;
- };
-
- template<class klass, R (klass::*method)(A1, A2, A3)>
- static R thunk (void *self, A1 a1, A2 a2, A3 a3)
+ template<class klass, R (klass::*method)(A1, A2)>
+ static R thunk (void *self, A1 a1, A2 a2)
{
klass *obj = static_cast<klass *>(self);
- return (obj->*method) (a1, a2, a3);
+ return (obj->*method) (a1, a2);
}
+};
+
+template<class R, class A1, class A2, class A3>
+struct callback<R (A1, A2, A3)>
+{
+ typedef R (*ptr_type)(void *self, A1, A2, A3);
-public:
template<class K, R (K::*method)(A1, A2, A3)>
void set (K *object)
{
{
return call (a1, a2, a3);
}
-};
-
-template<class R, class A1, class A2, class A3, class A4>
-struct callback<R (A1, A2, A3, A4)>
-{
- typedef R (*ptr_type)(void *self, A1, A2, A3, A4);
private:
void *self;
ptr_type func;
-protected:
-
- template<typename method>
- struct thunktype;
-
- template<class klass>
- struct thunktype<R (klass::*)>
- {
- typedef klass K;
- };
-
- template<class klass, R (klass::*method)(A1, A2, A3, A4)>
- static R thunk (void *self, A1 a1, A2 a2, A3 a3, A4 a4)
+ template<class klass, R (klass::*method)(A1, A2, A3)>
+ static R thunk (void *self, A1 a1, A2 a2, A3 a3)
{
klass *obj = static_cast<klass *>(self);
- return (obj->*method) (a1, a2, a3, a4);
+ return (obj->*method) (a1, a2, a3);
}
+};
+
+template<class R, class A1, class A2, class A3, class A4>
+struct callback<R (A1, A2, A3, A4)>
+{
+ typedef R (*ptr_type)(void *self, A1, A2, A3, A4);
-public:
template<class K, R (K::*method)(A1, A2, A3, A4)>
void set (K *object)
{
{
return call (a1, a2, a3, a4);
}
-};
-
-template<class R, class A1, class A2, class A3, class A4, class A5>
-struct callback<R (A1, A2, A3, A4, A5)>
-{
- typedef R (*ptr_type)(void *self, A1, A2, A3, A4, A5);
private:
void *self;
ptr_type func;
-protected:
-
- template<typename method>
- struct thunktype;
-
- template<class klass>
- struct thunktype<R (klass::*)>
- {
- typedef klass K;
- };
-
- template<class klass, R (klass::*method)(A1, A2, A3, A4, A5)>
- static R thunk (void *self, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
+ template<class klass, R (klass::*method)(A1, A2, A3, A4)>
+ static R thunk (void *self, A1 a1, A2 a2, A3 a3, A4 a4)
{
klass *obj = static_cast<klass *>(self);
- return (obj->*method) (a1, a2, a3, a4, a5);
+ return (obj->*method) (a1, a2, a3, a4);
}
+};
+
+template<class R, class A1, class A2, class A3, class A4, class A5>
+struct callback<R (A1, A2, A3, A4, A5)>
+{
+ typedef R (*ptr_type)(void *self, A1, A2, A3, A4, A5);
-public:
template<class K, R (K::*method)(A1, A2, A3, A4, A5)>
void set (K *object)
{
{
return call (a1, a2, a3, a4, a5);
}
-};
-
-template<class R, class A1, class A2, class A3, class A4, class A5, class A6>
-struct callback<R (A1, A2, A3, A4, A5, A6)>
-{
- typedef R (*ptr_type)(void *self, A1, A2, A3, A4, A5, A6);
private:
void *self;
ptr_type func;
-protected:
-
- template<typename method>
- struct thunktype;
-
- template<class klass>
- struct thunktype<R (klass::*)>
- {
- typedef klass K;
- };
-
- template<class klass, R (klass::*method)(A1, A2, A3, A4, A5, A6)>
- static R thunk (void *self, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
+ template<class klass, R (klass::*method)(A1, A2, A3, A4, A5)>
+ static R thunk (void *self, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
{
klass *obj = static_cast<klass *>(self);
- return (obj->*method) (a1, a2, a3, a4, a5, a6);
+ return (obj->*method) (a1, a2, a3, a4, a5);
}
+};
+
+template<class R, class A1, class A2, class A3, class A4, class A5, class A6>
+struct callback<R (A1, A2, A3, A4, A5, A6)>
+{
+ typedef R (*ptr_type)(void *self, A1, A2, A3, A4, A5, A6);
-public:
template<class K, R (K::*method)(A1, A2, A3, A4, A5, A6)>
void set (K *object)
{
{
return call (a1, a2, a3, a4, a5, a6);
}
-};
-
-template<class R, class A1, class A2, class A3, class A4, class A5, class A6, class A7>
-struct callback<R (A1, A2, A3, A4, A5, A6, A7)>
-{
- typedef R (*ptr_type)(void *self, A1, A2, A3, A4, A5, A6, A7);
private:
void *self;
ptr_type func;
-protected:
-
- template<typename method>
- struct thunktype;
-
- template<class klass>
- struct thunktype<R (klass::*)>
- {
- typedef klass K;
- };
-
- template<class klass, R (klass::*method)(A1, A2, A3, A4, A5, A6, A7)>
- static R thunk (void *self, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
+ template<class klass, R (klass::*method)(A1, A2, A3, A4, A5, A6)>
+ static R thunk (void *self, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
{
klass *obj = static_cast<klass *>(self);
- return (obj->*method) (a1, a2, a3, a4, a5, a6, a7);
+ return (obj->*method) (a1, a2, a3, a4, a5, a6);
}
+};
+
+template<class R, class A1, class A2, class A3, class A4, class A5, class A6, class A7>
+struct callback<R (A1, A2, A3, A4, A5, A6, A7)>
+{
+ typedef R (*ptr_type)(void *self, A1, A2, A3, A4, A5, A6, A7);
-public:
template<class K, R (K::*method)(A1, A2, A3, A4, A5, A6, A7)>
void set (K *object)
{
{
return call (a1, a2, a3, a4, a5, a6, a7);
}
-};
-
-template<class R, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
-struct callback<R (A1, A2, A3, A4, A5, A6, A7, A8)>
-{
- typedef R (*ptr_type)(void *self, A1, A2, A3, A4, A5, A6, A7, A8);
private:
void *self;
ptr_type func;
-protected:
-
- template<typename method>
- struct thunktype;
-
- template<class klass>
- struct thunktype<R (klass::*)>
- {
- typedef klass K;
- };
-
- template<class klass, R (klass::*method)(A1, A2, A3, A4, A5, A6, A7, A8)>
- static R thunk (void *self, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
+ template<class klass, R (klass::*method)(A1, A2, A3, A4, A5, A6, A7)>
+ static R thunk (void *self, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
{
klass *obj = static_cast<klass *>(self);
- return (obj->*method) (a1, a2, a3, a4, a5, a6, a7, a8);
+ return (obj->*method) (a1, a2, a3, a4, a5, a6, a7);
}
+};
+
+template<class R, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
+struct callback<R (A1, A2, A3, A4, A5, A6, A7, A8)>
+{
+ typedef R (*ptr_type)(void *self, A1, A2, A3, A4, A5, A6, A7, A8);
-public:
template<class K, R (K::*method)(A1, A2, A3, A4, A5, A6, A7, A8)>
void set (K *object)
{
{
return call (a1, a2, a3, a4, a5, a6, a7, a8);
}
-};
-
-template<class R, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
-struct callback<R (A1, A2, A3, A4, A5, A6, A7, A8, A9)>
-{
- typedef R (*ptr_type)(void *self, A1, A2, A3, A4, A5, A6, A7, A8, A9);
private:
void *self;
ptr_type func;
-protected:
-
- template<typename method>
- struct thunktype;
-
- template<class klass>
- struct thunktype<R (klass::*)>
- {
- typedef klass K;
- };
-
- template<class klass, R (klass::*method)(A1, A2, A3, A4, A5, A6, A7, A8, A9)>
- static R thunk (void *self, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
+ template<class klass, R (klass::*method)(A1, A2, A3, A4, A5, A6, A7, A8)>
+ static R thunk (void *self, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
{
klass *obj = static_cast<klass *>(self);
- return (obj->*method) (a1, a2, a3, a4, a5, a6, a7, a8, a9);
+ return (obj->*method) (a1, a2, a3, a4, a5, a6, a7, a8);
}
+};
+
+template<class R, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
+struct callback<R (A1, A2, A3, A4, A5, A6, A7, A8, A9)>
+{
+ typedef R (*ptr_type)(void *self, A1, A2, A3, A4, A5, A6, A7, A8, A9);
-public:
template<class K, R (K::*method)(A1, A2, A3, A4, A5, A6, A7, A8, A9)>
void set (K *object)
{
{
return call (a1, a2, a3, a4, a5, a6, a7, a8, a9);
}
-};
-
-template<class R, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10>
-struct callback<R (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10)>
-{
- typedef R (*ptr_type)(void *self, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10);
private:
void *self;
ptr_type func;
-protected:
-
- template<typename method>
- struct thunktype;
-
- template<class klass>
- struct thunktype<R (klass::*)>
- {
- typedef klass K;
- };
-
- template<class klass, R (klass::*method)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10)>
- static R thunk (void *self, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10)
+ template<class klass, R (klass::*method)(A1, A2, A3, A4, A5, A6, A7, A8, A9)>
+ static R thunk (void *self, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
{
klass *obj = static_cast<klass *>(self);
- return (obj->*method) (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
+ return (obj->*method) (a1, a2, a3, a4, a5, a6, a7, a8, a9);
}
+};
+
+template<class R, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10>
+struct callback<R (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10)>
+{
+ typedef R (*ptr_type)(void *self, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10);
-public:
template<class K, R (K::*method)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10)>
void set (K *object)
{
{
return call (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
}
+
+private:
+
+ void *self;
+ ptr_type func;
+
+ template<class klass, R (klass::*method)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10)>
+ static R thunk (void *self, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10)
+ {
+ klass *obj = static_cast<klass *>(self);
+ return (obj->*method) (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
+ }
};