00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef __PLCORE_FUNC_GENMEMPTR_H__
00024 #define __PLCORE_FUNC_GENMEMPTR_H__
00025 #pragma once
00026
00027
00028
00029
00030
00031 #include "PLCore/Base/Func/Func.h"
00032
00033
00034
00035
00036
00037 namespace PLCore {
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050 template <typename CLASS, typename R, typename T0 = NullType, typename T1 = NullType, typename T2 = NullType, typename T3 = NullType, typename T4 = NullType, typename T5 = NullType, typename T6 = NullType, typename T7 = NullType, typename T8 = NullType, typename T9 = NullType, typename T10 = NullType, typename T11 = NullType, typename T12 = NullType, typename T13 = NullType, typename T14 = NullType, typename T15 = NullType>
00051 class FuncGenMemPtr : public Func<R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> {
00052 public:
00053 typedef typename Type<R> ::_Type _R;
00054 typedef typename Type<T0> ::_Type _T0;
00055 typedef typename Type<T1> ::_Type _T1;
00056 typedef typename Type<T2> ::_Type _T2;
00057 typedef typename Type<T3> ::_Type _T3;
00058 typedef typename Type<T4> ::_Type _T4;
00059 typedef typename Type<T5> ::_Type _T5;
00060 typedef typename Type<T6> ::_Type _T6;
00061 typedef typename Type<T7> ::_Type _T7;
00062 typedef typename Type<T8> ::_Type _T8;
00063 typedef typename Type<T9> ::_Type _T9;
00064 typedef typename Type<T10>::_Type _T10;
00065 typedef typename Type<T11>::_Type _T11;
00066 typedef typename Type<T12>::_Type _T12;
00067 typedef typename Type<T13>::_Type _T13;
00068 typedef typename Type<T14>::_Type _T14;
00069 typedef typename Type<T15>::_Type _T15;
00070 typedef typename MethodSignature<CLASS, void, DynParams&, void*>::MemFuncType MEMFUNC;
00071
00072 public:
00073 FuncGenMemPtr(const MEMFUNC &pMemFunc, CLASS *pObject, void *pUserData = nullptr) : m_pMemFunc(pMemFunc), m_pObject(pObject), m_pUserData(pUserData) {
00074 }
00075
00076 virtual ~FuncGenMemPtr() {
00077 }
00078
00079 virtual _R operator ()(_T0 t0, _T1 t1, _T2 t2, _T3 t3, _T4 t4, _T5 t5, _T6 t6, _T7 t7, _T8 t8, _T9 t9, _T10 t10, _T11 t11, _T12 t12, _T13 t13, _T14 t14, _T15 t15) override {
00080 if (m_pMemFunc && m_pObject) {
00081
00082 Params<R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> cParams(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15);
00083
00084
00085 ((*m_pObject).*m_pMemFunc)(cParams, m_pUserData);
00086
00087
00088 return cParams.Return;
00089 } else {
00090 return DefaultValue<R>::Default();
00091 }
00092 }
00093
00094 virtual DynFunc *Clone() const override {
00095 return new FuncGenMemPtr(m_pMemFunc, m_pObject, m_pUserData);
00096 }
00097
00098 private:
00099 MEMFUNC m_pMemFunc;
00100 CLASS *m_pObject;
00101 void *m_pUserData;
00102 };
00103
00104
00105
00106
00107
00108
00109
00110
00111 template <typename CLASS, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15>
00112 class FuncGenMemPtr<CLASS, void, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> : public Func<void, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> {
00113 public:
00114 typedef typename Type<T0> ::_Type _T0;
00115 typedef typename Type<T1> ::_Type _T1;
00116 typedef typename Type<T2> ::_Type _T2;
00117 typedef typename Type<T3> ::_Type _T3;
00118 typedef typename Type<T4> ::_Type _T4;
00119 typedef typename Type<T5> ::_Type _T5;
00120 typedef typename Type<T6> ::_Type _T6;
00121 typedef typename Type<T7> ::_Type _T7;
00122 typedef typename Type<T8> ::_Type _T8;
00123 typedef typename Type<T9> ::_Type _T9;
00124 typedef typename Type<T10>::_Type _T10;
00125 typedef typename Type<T11>::_Type _T11;
00126 typedef typename Type<T12>::_Type _T12;
00127 typedef typename Type<T13>::_Type _T13;
00128 typedef typename Type<T14>::_Type _T14;
00129 typedef typename Type<T15>::_Type _T15;
00130 typedef typename MethodSignature<CLASS, void, DynParams&, void*>::MemFuncType MEMFUNC;
00131
00132 public:
00133 FuncGenMemPtr(const MEMFUNC &pMemFunc, CLASS *pObject, void *pUserData = nullptr) : m_pMemFunc(pMemFunc), m_pObject(pObject), m_pUserData(pUserData) {
00134 }
00135
00136 virtual ~FuncGenMemPtr() {
00137 }
00138
00139 virtual void operator ()(_T0 t0, _T1 t1, _T2 t2, _T3 t3, _T4 t4, _T5 t5, _T6 t6, _T7 t7, _T8 t8, _T9 t9, _T10 t10, _T11 t11, _T12 t12, _T13 t13, _T14 t14, _T15 t15) override {
00140 if (m_pMemFunc && m_pObject) {
00141
00142 Params<void, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> cParams(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15);
00143
00144
00145 ((*m_pObject).*m_pMemFunc)(cParams, m_pUserData);
00146 }
00147 }
00148
00149 virtual DynFunc *Clone() const override {
00150 return new FuncGenMemPtr(m_pMemFunc, m_pObject, m_pUserData);
00151 }
00152
00153 private:
00154 MEMFUNC m_pMemFunc;
00155 CLASS *m_pObject;
00156 void *m_pUserData;
00157 };
00158
00159
00160
00161
00162
00163
00164
00165
00166 template <typename CLASS, typename R, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14>
00167 class FuncGenMemPtr<CLASS, R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> : public Func<R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> {
00168 public:
00169 typedef typename Type<R> ::_Type _R;
00170 typedef typename Type<T0> ::_Type _T0;
00171 typedef typename Type<T1> ::_Type _T1;
00172 typedef typename Type<T2> ::_Type _T2;
00173 typedef typename Type<T3> ::_Type _T3;
00174 typedef typename Type<T4> ::_Type _T4;
00175 typedef typename Type<T5> ::_Type _T5;
00176 typedef typename Type<T6> ::_Type _T6;
00177 typedef typename Type<T7> ::_Type _T7;
00178 typedef typename Type<T8> ::_Type _T8;
00179 typedef typename Type<T9> ::_Type _T9;
00180 typedef typename Type<T10>::_Type _T10;
00181 typedef typename Type<T11>::_Type _T11;
00182 typedef typename Type<T12>::_Type _T12;
00183 typedef typename Type<T13>::_Type _T13;
00184 typedef typename Type<T14>::_Type _T14;
00185 typedef typename MethodSignature<CLASS, void, DynParams&, void*>::MemFuncType MEMFUNC;
00186
00187 public:
00188 FuncGenMemPtr(const MEMFUNC &pMemFunc, CLASS *pObject, void *pUserData = nullptr) : m_pMemFunc(pMemFunc), m_pObject(pObject), m_pUserData(pUserData) {
00189 }
00190
00191 virtual ~FuncGenMemPtr() {
00192 }
00193
00194 virtual _R operator ()(_T0 t0, _T1 t1, _T2 t2, _T3 t3, _T4 t4, _T5 t5, _T6 t6, _T7 t7, _T8 t8, _T9 t9, _T10 t10, _T11 t11, _T12 t12, _T13 t13, _T14 t14) override {
00195 if (m_pMemFunc && m_pObject) {
00196
00197 Params<R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> cParams(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14);
00198
00199
00200 ((*m_pObject).*m_pMemFunc)(cParams, m_pUserData);
00201
00202
00203 return cParams.Return;
00204 } else {
00205 return DefaultValue<R>::Default();
00206 }
00207 }
00208
00209 virtual DynFunc *Clone() const override {
00210 return new FuncGenMemPtr(m_pMemFunc, m_pObject, m_pUserData);
00211 }
00212
00213 private:
00214 MEMFUNC m_pMemFunc;
00215 CLASS *m_pObject;
00216 void *m_pUserData;
00217 };
00218
00219
00220
00221
00222
00223
00224
00225
00226 template <typename CLASS, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14>
00227 class FuncGenMemPtr<CLASS, void, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> : public Func<void, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> {
00228 public:
00229 typedef typename Type<T0> ::_Type _T0;
00230 typedef typename Type<T1> ::_Type _T1;
00231 typedef typename Type<T2> ::_Type _T2;
00232 typedef typename Type<T3> ::_Type _T3;
00233 typedef typename Type<T4> ::_Type _T4;
00234 typedef typename Type<T5> ::_Type _T5;
00235 typedef typename Type<T6> ::_Type _T6;
00236 typedef typename Type<T7> ::_Type _T7;
00237 typedef typename Type<T8> ::_Type _T8;
00238 typedef typename Type<T9> ::_Type _T9;
00239 typedef typename Type<T10>::_Type _T10;
00240 typedef typename Type<T11>::_Type _T11;
00241 typedef typename Type<T12>::_Type _T12;
00242 typedef typename Type<T13>::_Type _T13;
00243 typedef typename Type<T14>::_Type _T14;
00244 typedef typename MethodSignature<CLASS, void, DynParams&, void*>::MemFuncType MEMFUNC;
00245
00246 public:
00247 FuncGenMemPtr(const MEMFUNC &pMemFunc, CLASS *pObject, void *pUserData = nullptr) : m_pMemFunc(pMemFunc), m_pObject(pObject), m_pUserData(pUserData) {
00248 }
00249
00250 virtual ~FuncGenMemPtr() {
00251 }
00252
00253 virtual void operator ()(_T0 t0, _T1 t1, _T2 t2, _T3 t3, _T4 t4, _T5 t5, _T6 t6, _T7 t7, _T8 t8, _T9 t9, _T10 t10, _T11 t11, _T12 t12, _T13 t13, _T14 t14) override {
00254 if (m_pMemFunc && m_pObject) {
00255
00256 Params<void, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> cParams(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14);
00257
00258
00259 ((*m_pObject).*m_pMemFunc)(cParams, m_pUserData);
00260 }
00261 }
00262
00263 virtual DynFunc *Clone() const override {
00264 return new FuncGenMemPtr(m_pMemFunc, m_pObject, m_pUserData);
00265 }
00266
00267 private:
00268 MEMFUNC m_pMemFunc;
00269 CLASS *m_pObject;
00270 void *m_pUserData;
00271 };
00272
00273
00274
00275
00276
00277
00278
00279
00280 template <typename CLASS, typename R, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13>
00281 class FuncGenMemPtr<CLASS, R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> : public Func<R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> {
00282 public:
00283 typedef typename Type<R> ::_Type _R;
00284 typedef typename Type<T0> ::_Type _T0;
00285 typedef typename Type<T1> ::_Type _T1;
00286 typedef typename Type<T2> ::_Type _T2;
00287 typedef typename Type<T3> ::_Type _T3;
00288 typedef typename Type<T4> ::_Type _T4;
00289 typedef typename Type<T5> ::_Type _T5;
00290 typedef typename Type<T6> ::_Type _T6;
00291 typedef typename Type<T7> ::_Type _T7;
00292 typedef typename Type<T8> ::_Type _T8;
00293 typedef typename Type<T9> ::_Type _T9;
00294 typedef typename Type<T10>::_Type _T10;
00295 typedef typename Type<T11>::_Type _T11;
00296 typedef typename Type<T12>::_Type _T12;
00297 typedef typename Type<T13>::_Type _T13;
00298 typedef typename MethodSignature<CLASS, void, DynParams&, void*>::MemFuncType MEMFUNC;
00299
00300 public:
00301 FuncGenMemPtr(const MEMFUNC &pMemFunc, CLASS *pObject, void *pUserData = nullptr) : m_pMemFunc(pMemFunc), m_pObject(pObject), m_pUserData(pUserData) {
00302 }
00303
00304 virtual ~FuncGenMemPtr() {
00305 }
00306
00307 virtual _R operator ()(_T0 t0, _T1 t1, _T2 t2, _T3 t3, _T4 t4, _T5 t5, _T6 t6, _T7 t7, _T8 t8, _T9 t9, _T10 t10, _T11 t11, _T12 t12, _T13 t13) override {
00308 if (m_pMemFunc && m_pObject) {
00309
00310 Params<R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> cParams(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13);
00311
00312
00313 ((*m_pObject).*m_pMemFunc)(cParams, m_pUserData);
00314
00315
00316 return cParams.Return;
00317 } else {
00318 return DefaultValue<R>::Default();
00319 }
00320 }
00321
00322 virtual DynFunc *Clone() const override {
00323 return new FuncGenMemPtr(m_pMemFunc, m_pObject, m_pUserData);
00324 }
00325
00326 private:
00327 MEMFUNC m_pMemFunc;
00328 CLASS *m_pObject;
00329 void *m_pUserData;
00330 };
00331
00332
00333
00334
00335
00336
00337
00338
00339 template <typename CLASS, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13>
00340 class FuncGenMemPtr<CLASS, void, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> : public Func<void, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> {
00341 public:
00342 typedef typename Type<T0> ::_Type _T0;
00343 typedef typename Type<T1> ::_Type _T1;
00344 typedef typename Type<T2> ::_Type _T2;
00345 typedef typename Type<T3> ::_Type _T3;
00346 typedef typename Type<T4> ::_Type _T4;
00347 typedef typename Type<T5> ::_Type _T5;
00348 typedef typename Type<T6> ::_Type _T6;
00349 typedef typename Type<T7> ::_Type _T7;
00350 typedef typename Type<T8> ::_Type _T8;
00351 typedef typename Type<T9> ::_Type _T9;
00352 typedef typename Type<T10>::_Type _T10;
00353 typedef typename Type<T11>::_Type _T11;
00354 typedef typename Type<T12>::_Type _T12;
00355 typedef typename Type<T13>::_Type _T13;
00356 typedef typename MethodSignature<CLASS, void, DynParams&, void*>::MemFuncType MEMFUNC;
00357
00358 public:
00359 FuncGenMemPtr(const MEMFUNC &pMemFunc, CLASS *pObject, void *pUserData = nullptr) : m_pMemFunc(pMemFunc), m_pObject(pObject), m_pUserData(pUserData) {
00360 }
00361
00362 virtual ~FuncGenMemPtr() {
00363 }
00364
00365 virtual void operator ()(_T0 t0, _T1 t1, _T2 t2, _T3 t3, _T4 t4, _T5 t5, _T6 t6, _T7 t7, _T8 t8, _T9 t9, _T10 t10, _T11 t11, _T12 t12, _T13 t13) override {
00366 if (m_pMemFunc && m_pObject) {
00367
00368 Params<void, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> cParams(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13);
00369
00370
00371 ((*m_pObject).*m_pMemFunc)(cParams, m_pUserData);
00372 }
00373 }
00374
00375 virtual DynFunc *Clone() const override {
00376 return new FuncGenMemPtr(m_pMemFunc, m_pObject, m_pUserData);
00377 }
00378
00379 private:
00380 MEMFUNC m_pMemFunc;
00381 CLASS *m_pObject;
00382 void *m_pUserData;
00383 };
00384
00385
00386
00387
00388
00389
00390
00391
00392 template <typename CLASS, typename R, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12>
00393 class FuncGenMemPtr<CLASS, R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> : public Func<R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> {
00394 public:
00395 typedef typename Type<R> ::_Type _R;
00396 typedef typename Type<T0> ::_Type _T0;
00397 typedef typename Type<T1> ::_Type _T1;
00398 typedef typename Type<T2> ::_Type _T2;
00399 typedef typename Type<T3> ::_Type _T3;
00400 typedef typename Type<T4> ::_Type _T4;
00401 typedef typename Type<T5> ::_Type _T5;
00402 typedef typename Type<T6> ::_Type _T6;
00403 typedef typename Type<T7> ::_Type _T7;
00404 typedef typename Type<T8> ::_Type _T8;
00405 typedef typename Type<T9> ::_Type _T9;
00406 typedef typename Type<T10>::_Type _T10;
00407 typedef typename Type<T11>::_Type _T11;
00408 typedef typename Type<T12>::_Type _T12;
00409 typedef typename MethodSignature<CLASS, void, DynParams&, void*>::MemFuncType MEMFUNC;
00410
00411 public:
00412 FuncGenMemPtr(const MEMFUNC &pMemFunc, CLASS *pObject, void *pUserData = nullptr) : m_pMemFunc(pMemFunc), m_pObject(pObject), m_pUserData(pUserData) {
00413 }
00414
00415 virtual ~FuncGenMemPtr() {
00416 }
00417
00418 virtual _R operator ()(_T0 t0, _T1 t1, _T2 t2, _T3 t3, _T4 t4, _T5 t5, _T6 t6, _T7 t7, _T8 t8, _T9 t9, _T10 t10, _T11 t11, _T12 t12) override {
00419 if (m_pMemFunc && m_pObject) {
00420
00421 Params<R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> cParams(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12);
00422
00423
00424 ((*m_pObject).*m_pMemFunc)(cParams, m_pUserData);
00425
00426
00427 return cParams.Return;
00428 } else {
00429 return DefaultValue<R>::Default();
00430 }
00431 }
00432
00433 virtual DynFunc *Clone() const override {
00434 return new FuncGenMemPtr(m_pMemFunc, m_pObject, m_pUserData);
00435 }
00436
00437 private:
00438 MEMFUNC m_pMemFunc;
00439 CLASS *m_pObject;
00440 void *m_pUserData;
00441 };
00442
00443
00444
00445
00446
00447
00448
00449
00450 template <typename CLASS, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12>
00451 class FuncGenMemPtr<CLASS, void, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> : public Func<void, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> {
00452 public:
00453 typedef typename Type<T0> ::_Type _T0;
00454 typedef typename Type<T1> ::_Type _T1;
00455 typedef typename Type<T2> ::_Type _T2;
00456 typedef typename Type<T3> ::_Type _T3;
00457 typedef typename Type<T4> ::_Type _T4;
00458 typedef typename Type<T5> ::_Type _T5;
00459 typedef typename Type<T6> ::_Type _T6;
00460 typedef typename Type<T7> ::_Type _T7;
00461 typedef typename Type<T8> ::_Type _T8;
00462 typedef typename Type<T9> ::_Type _T9;
00463 typedef typename Type<T10>::_Type _T10;
00464 typedef typename Type<T11>::_Type _T11;
00465 typedef typename Type<T12>::_Type _T12;
00466 typedef typename MethodSignature<CLASS, void, DynParams&, void*>::MemFuncType MEMFUNC;
00467
00468 public:
00469 FuncGenMemPtr(const MEMFUNC &pMemFunc, CLASS *pObject, void *pUserData = nullptr) : m_pMemFunc(pMemFunc), m_pObject(pObject), m_pUserData(pUserData) {
00470 }
00471
00472 virtual ~FuncGenMemPtr() {
00473 }
00474
00475 virtual void operator ()(_T0 t0, _T1 t1, _T2 t2, _T3 t3, _T4 t4, _T5 t5, _T6 t6, _T7 t7, _T8 t8, _T9 t9, _T10 t10, _T11 t11, _T12 t12) override {
00476 if (m_pMemFunc && m_pObject) {
00477
00478 Params<void, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> cParams(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12);
00479
00480
00481 ((*m_pObject).*m_pMemFunc)(cParams, m_pUserData);
00482 }
00483 }
00484
00485 virtual DynFunc *Clone() const override {
00486 return new FuncGenMemPtr(m_pMemFunc, m_pObject, m_pUserData);
00487 }
00488
00489 private:
00490 MEMFUNC m_pMemFunc;
00491 CLASS *m_pObject;
00492 void *m_pUserData;
00493 };
00494
00495
00496
00497
00498
00499
00500
00501
00502 template <typename CLASS, typename R, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11>
00503 class FuncGenMemPtr<CLASS, R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> : public Func<R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> {
00504 public:
00505 typedef typename Type<R> ::_Type _R;
00506 typedef typename Type<T0> ::_Type _T0;
00507 typedef typename Type<T1> ::_Type _T1;
00508 typedef typename Type<T2> ::_Type _T2;
00509 typedef typename Type<T3> ::_Type _T3;
00510 typedef typename Type<T4> ::_Type _T4;
00511 typedef typename Type<T5> ::_Type _T5;
00512 typedef typename Type<T6> ::_Type _T6;
00513 typedef typename Type<T7> ::_Type _T7;
00514 typedef typename Type<T8> ::_Type _T8;
00515 typedef typename Type<T9> ::_Type _T9;
00516 typedef typename Type<T10>::_Type _T10;
00517 typedef typename Type<T11>::_Type _T11;
00518 typedef typename MethodSignature<CLASS, void, DynParams&, void*>::MemFuncType MEMFUNC;
00519
00520 public:
00521 FuncGenMemPtr(const MEMFUNC &pMemFunc, CLASS *pObject, void *pUserData = nullptr) : m_pMemFunc(pMemFunc), m_pObject(pObject), m_pUserData(pUserData) {
00522 }
00523
00524 virtual ~FuncGenMemPtr() {
00525 }
00526
00527 virtual _R operator ()(_T0 t0, _T1 t1, _T2 t2, _T3 t3, _T4 t4, _T5 t5, _T6 t6, _T7 t7, _T8 t8, _T9 t9, _T10 t10, _T11 t11) override {
00528 if (m_pMemFunc && m_pObject) {
00529
00530 Params<R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> cParams(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11);
00531
00532
00533 ((*m_pObject).*m_pMemFunc)(cParams, m_pUserData);
00534
00535
00536 return cParams.Return;
00537 } else {
00538 return DefaultValue<R>::Default();
00539 }
00540 }
00541
00542 virtual DynFunc *Clone() const override {
00543 return new FuncGenMemPtr(m_pMemFunc, m_pObject, m_pUserData);
00544 }
00545
00546 private:
00547 MEMFUNC m_pMemFunc;
00548 CLASS *m_pObject;
00549 void *m_pUserData;
00550 };
00551
00552
00553
00554
00555
00556
00557
00558
00559 template <typename CLASS, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11>
00560 class FuncGenMemPtr<CLASS, void, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> : public Func<void, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> {
00561 public:
00562 typedef typename Type<T0> ::_Type _T0;
00563 typedef typename Type<T1> ::_Type _T1;
00564 typedef typename Type<T2> ::_Type _T2;
00565 typedef typename Type<T3> ::_Type _T3;
00566 typedef typename Type<T4> ::_Type _T4;
00567 typedef typename Type<T5> ::_Type _T5;
00568 typedef typename Type<T6> ::_Type _T6;
00569 typedef typename Type<T7> ::_Type _T7;
00570 typedef typename Type<T8> ::_Type _T8;
00571 typedef typename Type<T9> ::_Type _T9;
00572 typedef typename Type<T10>::_Type _T10;
00573 typedef typename Type<T11>::_Type _T11;
00574 typedef typename MethodSignature<CLASS, void, DynParams&, void*>::MemFuncType MEMFUNC;
00575
00576 public:
00577 FuncGenMemPtr(const MEMFUNC &pMemFunc, CLASS *pObject, void *pUserData = nullptr) : m_pMemFunc(pMemFunc), m_pObject(pObject), m_pUserData(pUserData) {
00578 }
00579
00580 virtual ~FuncGenMemPtr() {
00581 }
00582
00583 virtual void operator ()(_T0 t0, _T1 t1, _T2 t2, _T3 t3, _T4 t4, _T5 t5, _T6 t6, _T7 t7, _T8 t8, _T9 t9, _T10 t10, _T11 t11) override {
00584 if (m_pMemFunc && m_pObject) {
00585
00586 Params<void, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> cParams(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11);
00587
00588
00589 ((*m_pObject).*m_pMemFunc)(cParams, m_pUserData);
00590 }
00591 }
00592
00593 virtual DynFunc *Clone() const override {
00594 return new FuncGenMemPtr(m_pMemFunc, m_pObject, m_pUserData);
00595 }
00596
00597 private:
00598 MEMFUNC m_pMemFunc;
00599 CLASS *m_pObject;
00600 void *m_pUserData;
00601 };
00602
00603
00604
00605
00606
00607
00608
00609
00610 template <typename CLASS, typename R, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10>
00611 class FuncGenMemPtr<CLASS, R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> : public Func<R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> {
00612 public:
00613 typedef typename Type<R> ::_Type _R;
00614 typedef typename Type<T0> ::_Type _T0;
00615 typedef typename Type<T1> ::_Type _T1;
00616 typedef typename Type<T2> ::_Type _T2;
00617 typedef typename Type<T3> ::_Type _T3;
00618 typedef typename Type<T4> ::_Type _T4;
00619 typedef typename Type<T5> ::_Type _T5;
00620 typedef typename Type<T6> ::_Type _T6;
00621 typedef typename Type<T7> ::_Type _T7;
00622 typedef typename Type<T8> ::_Type _T8;
00623 typedef typename Type<T9> ::_Type _T9;
00624 typedef typename Type<T10>::_Type _T10;
00625 typedef typename MethodSignature<CLASS, void, DynParams&, void*>::MemFuncType MEMFUNC;
00626
00627 public:
00628 FuncGenMemPtr(const MEMFUNC &pMemFunc, CLASS *pObject, void *pUserData = nullptr) : m_pMemFunc(pMemFunc), m_pObject(pObject), m_pUserData(pUserData) {
00629 }
00630
00631 virtual ~FuncGenMemPtr() {
00632 }
00633
00634 virtual _R operator ()(_T0 t0, _T1 t1, _T2 t2, _T3 t3, _T4 t4, _T5 t5, _T6 t6, _T7 t7, _T8 t8, _T9 t9, _T10 t10) override {
00635 if (m_pMemFunc && m_pObject) {
00636
00637 Params<R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> cParams(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10);
00638
00639
00640 ((*m_pObject).*m_pMemFunc)(cParams, m_pUserData);
00641
00642
00643 return cParams.Return;
00644 } else {
00645 return DefaultValue<R>::Default();
00646 }
00647 }
00648
00649 virtual DynFunc *Clone() const override {
00650 return new FuncGenMemPtr(m_pMemFunc, m_pObject, m_pUserData);
00651 }
00652
00653 private:
00654 MEMFUNC m_pMemFunc;
00655 CLASS *m_pObject;
00656 void *m_pUserData;
00657 };
00658
00659
00660
00661
00662
00663
00664
00665
00666 template <typename CLASS, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10>
00667 class FuncGenMemPtr<CLASS, void, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> : public Func<void, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> {
00668 public:
00669 typedef typename Type<T0> ::_Type _T0;
00670 typedef typename Type<T1> ::_Type _T1;
00671 typedef typename Type<T2> ::_Type _T2;
00672 typedef typename Type<T3> ::_Type _T3;
00673 typedef typename Type<T4> ::_Type _T4;
00674 typedef typename Type<T5> ::_Type _T5;
00675 typedef typename Type<T6> ::_Type _T6;
00676 typedef typename Type<T7> ::_Type _T7;
00677 typedef typename Type<T8> ::_Type _T8;
00678 typedef typename Type<T9> ::_Type _T9;
00679 typedef typename Type<T10>::_Type _T10;
00680 typedef typename MethodSignature<CLASS, void, DynParams&, void*>::MemFuncType MEMFUNC;
00681
00682 public:
00683 FuncGenMemPtr(const MEMFUNC &pMemFunc, CLASS *pObject, void *pUserData = nullptr) : m_pMemFunc(pMemFunc), m_pObject(pObject), m_pUserData(pUserData) {
00684 }
00685
00686 virtual ~FuncGenMemPtr() {
00687 }
00688
00689 virtual void operator ()(_T0 t0, _T1 t1, _T2 t2, _T3 t3, _T4 t4, _T5 t5, _T6 t6, _T7 t7, _T8 t8, _T9 t9, _T10 t10) override {
00690 if (m_pMemFunc && m_pObject) {
00691
00692 Params<void, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> cParams(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10);
00693
00694
00695 ((*m_pObject).*m_pMemFunc)(cParams, m_pUserData);
00696 }
00697 }
00698
00699 virtual DynFunc *Clone() const override {
00700 return new FuncGenMemPtr(m_pMemFunc, m_pObject, m_pUserData);
00701 }
00702
00703 private:
00704 MEMFUNC m_pMemFunc;
00705 CLASS *m_pObject;
00706 void *m_pUserData;
00707 };
00708
00709
00710
00711
00712
00713
00714
00715
00716 template <typename CLASS, typename R, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>
00717 class FuncGenMemPtr<CLASS, R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> : public Func<R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> {
00718 public:
00719 typedef typename Type<R> ::_Type _R;
00720 typedef typename Type<T0> ::_Type _T0;
00721 typedef typename Type<T1> ::_Type _T1;
00722 typedef typename Type<T2> ::_Type _T2;
00723 typedef typename Type<T3> ::_Type _T3;
00724 typedef typename Type<T4> ::_Type _T4;
00725 typedef typename Type<T5> ::_Type _T5;
00726 typedef typename Type<T6> ::_Type _T6;
00727 typedef typename Type<T7> ::_Type _T7;
00728 typedef typename Type<T8> ::_Type _T8;
00729 typedef typename Type<T9> ::_Type _T9;
00730 typedef typename MethodSignature<CLASS, void, DynParams&, void*>::MemFuncType MEMFUNC;
00731
00732 public:
00733 FuncGenMemPtr(const MEMFUNC &pMemFunc, CLASS *pObject, void *pUserData = nullptr) : m_pMemFunc(pMemFunc), m_pObject(pObject), m_pUserData(pUserData) {
00734 }
00735
00736 virtual ~FuncGenMemPtr() {
00737 }
00738
00739 virtual _R operator ()(_T0 t0, _T1 t1, _T2 t2, _T3 t3, _T4 t4, _T5 t5, _T6 t6, _T7 t7, _T8 t8, _T9 t9) override {
00740 if (m_pMemFunc && m_pObject) {
00741
00742 Params<R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> cParams(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9);
00743
00744
00745 ((*m_pObject).*m_pMemFunc)(cParams, m_pUserData);
00746
00747
00748 return cParams.Return;
00749 } else {
00750 return DefaultValue<R>::Default();
00751 }
00752 }
00753
00754 virtual DynFunc *Clone() const override {
00755 return new FuncGenMemPtr(m_pMemFunc, m_pObject, m_pUserData);
00756 }
00757
00758 private:
00759 MEMFUNC m_pMemFunc;
00760 CLASS *m_pObject;
00761 void *m_pUserData;
00762 };
00763
00764
00765
00766
00767
00768
00769
00770
00771 template <typename CLASS, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>
00772 class FuncGenMemPtr<CLASS, void, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> : public Func<void, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> {
00773 public:
00774 typedef typename Type<T0> ::_Type _T0;
00775 typedef typename Type<T1> ::_Type _T1;
00776 typedef typename Type<T2> ::_Type _T2;
00777 typedef typename Type<T3> ::_Type _T3;
00778 typedef typename Type<T4> ::_Type _T4;
00779 typedef typename Type<T5> ::_Type _T5;
00780 typedef typename Type<T6> ::_Type _T6;
00781 typedef typename Type<T7> ::_Type _T7;
00782 typedef typename Type<T8> ::_Type _T8;
00783 typedef typename Type<T9> ::_Type _T9;
00784 typedef typename MethodSignature<CLASS, void, DynParams&, void*>::MemFuncType MEMFUNC;
00785
00786 public:
00787 FuncGenMemPtr(const MEMFUNC &pMemFunc, CLASS *pObject, void *pUserData = nullptr) : m_pMemFunc(pMemFunc), m_pObject(pObject), m_pUserData(pUserData) {
00788 }
00789
00790 virtual ~FuncGenMemPtr() {
00791 }
00792
00793 virtual void operator ()(_T0 t0, _T1 t1, _T2 t2, _T3 t3, _T4 t4, _T5 t5, _T6 t6, _T7 t7, _T8 t8, _T9 t9) override {
00794 if (m_pMemFunc && m_pObject) {
00795
00796 Params<void, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> cParams(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9);
00797
00798
00799 ((*m_pObject).*m_pMemFunc)(cParams, m_pUserData);
00800 }
00801 }
00802
00803 virtual DynFunc *Clone() const override {
00804 return new FuncGenMemPtr(m_pMemFunc, m_pObject, m_pUserData);
00805 }
00806
00807 private:
00808 MEMFUNC m_pMemFunc;
00809 CLASS *m_pObject;
00810 void *m_pUserData;
00811 };
00812
00813
00814
00815
00816
00817
00818
00819
00820 template <typename CLASS, typename R, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>
00821 class FuncGenMemPtr<CLASS, R, T0, T1, T2, T3, T4, T5, T6, T7, T8> : public Func<R, T0, T1, T2, T3, T4, T5, T6, T7, T8> {
00822 public:
00823 typedef typename Type<R> ::_Type _R;
00824 typedef typename Type<T0> ::_Type _T0;
00825 typedef typename Type<T1> ::_Type _T1;
00826 typedef typename Type<T2> ::_Type _T2;
00827 typedef typename Type<T3> ::_Type _T3;
00828 typedef typename Type<T4> ::_Type _T4;
00829 typedef typename Type<T5> ::_Type _T5;
00830 typedef typename Type<T6> ::_Type _T6;
00831 typedef typename Type<T7> ::_Type _T7;
00832 typedef typename Type<T8> ::_Type _T8;
00833 typedef typename MethodSignature<CLASS, void, DynParams&, void*>::MemFuncType MEMFUNC;
00834
00835 public:
00836 FuncGenMemPtr(const MEMFUNC &pMemFunc, CLASS *pObject, void *pUserData = nullptr) : m_pMemFunc(pMemFunc), m_pObject(pObject), m_pUserData(pUserData) {
00837 }
00838
00839 virtual ~FuncGenMemPtr() {
00840 }
00841
00842 virtual _R operator ()(_T0 t0, _T1 t1, _T2 t2, _T3 t3, _T4 t4, _T5 t5, _T6 t6, _T7 t7, _T8 t8) override {
00843 if (m_pMemFunc && m_pObject) {
00844
00845 Params<R, T0, T1, T2, T3, T4, T5, T6, T7, T8> cParams(t0, t1, t2, t3, t4, t5, t6, t7, t8);
00846
00847
00848 ((*m_pObject).*m_pMemFunc)(cParams, m_pUserData);
00849
00850
00851 return cParams.Return;
00852 } else {
00853 return DefaultValue<R>::Default();
00854 }
00855 }
00856
00857 virtual DynFunc *Clone() const override {
00858 return new FuncGenMemPtr(m_pMemFunc, m_pObject, m_pUserData);
00859 }
00860
00861 private:
00862 MEMFUNC m_pMemFunc;
00863 CLASS *m_pObject;
00864 void *m_pUserData;
00865 };
00866
00867
00868
00869
00870
00871
00872
00873
00874 template <typename CLASS, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>
00875 class FuncGenMemPtr<CLASS, void, T0, T1, T2, T3, T4, T5, T6, T7, T8> : public Func<void, T0, T1, T2, T3, T4, T5, T6, T7, T8> {
00876 public:
00877 typedef typename Type<T0> ::_Type _T0;
00878 typedef typename Type<T1> ::_Type _T1;
00879 typedef typename Type<T2> ::_Type _T2;
00880 typedef typename Type<T3> ::_Type _T3;
00881 typedef typename Type<T4> ::_Type _T4;
00882 typedef typename Type<T5> ::_Type _T5;
00883 typedef typename Type<T6> ::_Type _T6;
00884 typedef typename Type<T7> ::_Type _T7;
00885 typedef typename Type<T8> ::_Type _T8;
00886 typedef typename MethodSignature<CLASS, void, DynParams&, void*>::MemFuncType MEMFUNC;
00887
00888 public:
00889 FuncGenMemPtr(const MEMFUNC &pMemFunc, CLASS *pObject, void *pUserData = nullptr) : m_pMemFunc(pMemFunc), m_pObject(pObject), m_pUserData(pUserData) {
00890 }
00891
00892 virtual ~FuncGenMemPtr() {
00893 }
00894
00895 virtual void operator ()(_T0 t0, _T1 t1, _T2 t2, _T3 t3, _T4 t4, _T5 t5, _T6 t6, _T7 t7, _T8 t8) override {
00896 if (m_pMemFunc && m_pObject) {
00897
00898 Params<void, T0, T1, T2, T3, T4, T5, T6, T7, T8> cParams(t0, t1, t2, t3, t4, t5, t6, t7, t8);
00899
00900
00901 ((*m_pObject).*m_pMemFunc)(cParams, m_pUserData);
00902 }
00903 }
00904
00905 virtual DynFunc *Clone() const override {
00906 return new FuncGenMemPtr(m_pMemFunc, m_pObject, m_pUserData);
00907 }
00908
00909 private:
00910 MEMFUNC m_pMemFunc;
00911 CLASS *m_pObject;
00912 void *m_pUserData;
00913 };
00914
00915
00916
00917
00918
00919
00920
00921
00922 template <typename CLASS, typename R, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
00923 class FuncGenMemPtr<CLASS, R, T0, T1, T2, T3, T4, T5, T6, T7> : public Func<R, T0, T1, T2, T3, T4, T5, T6, T7> {
00924 public:
00925 typedef typename Type<R> ::_Type _R;
00926 typedef typename Type<T0> ::_Type _T0;
00927 typedef typename Type<T1> ::_Type _T1;
00928 typedef typename Type<T2> ::_Type _T2;
00929 typedef typename Type<T3> ::_Type _T3;
00930 typedef typename Type<T4> ::_Type _T4;
00931 typedef typename Type<T5> ::_Type _T5;
00932 typedef typename Type<T6> ::_Type _T6;
00933 typedef typename Type<T7> ::_Type _T7;
00934 typedef typename MethodSignature<CLASS, void, DynParams&, void*>::MemFuncType MEMFUNC;
00935
00936 public:
00937 FuncGenMemPtr(const MEMFUNC &pMemFunc, CLASS *pObject, void *pUserData = nullptr) : m_pMemFunc(pMemFunc), m_pObject(pObject), m_pUserData(pUserData) {
00938 }
00939
00940 virtual ~FuncGenMemPtr() {
00941 }
00942
00943 virtual _R operator ()(_T0 t0, _T1 t1, _T2 t2, _T3 t3, _T4 t4, _T5 t5, _T6 t6, _T7 t7) override {
00944 if (m_pMemFunc && m_pObject) {
00945
00946 Params<R, T0, T1, T2, T3, T4, T5, T6, T7> cParams(t0, t1, t2, t3, t4, t5, t6, t7);
00947
00948
00949 ((*m_pObject).*m_pMemFunc)(cParams, m_pUserData);
00950
00951
00952 return cParams.Return;
00953 } else {
00954 return DefaultValue<R>::Default();
00955 }
00956 }
00957
00958 virtual DynFunc *Clone() const override {
00959 return new FuncGenMemPtr(m_pMemFunc, m_pObject, m_pUserData);
00960 }
00961
00962 private:
00963 MEMFUNC m_pMemFunc;
00964 CLASS *m_pObject;
00965 void *m_pUserData;
00966 };
00967
00968
00969
00970
00971
00972
00973
00974
00975 template <typename CLASS, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
00976 class FuncGenMemPtr<CLASS, void, T0, T1, T2, T3, T4, T5, T6, T7> : public Func<void, T0, T1, T2, T3, T4, T5, T6, T7> {
00977 public:
00978 typedef typename Type<T0> ::_Type _T0;
00979 typedef typename Type<T1> ::_Type _T1;
00980 typedef typename Type<T2> ::_Type _T2;
00981 typedef typename Type<T3> ::_Type _T3;
00982 typedef typename Type<T4> ::_Type _T4;
00983 typedef typename Type<T5> ::_Type _T5;
00984 typedef typename Type<T6> ::_Type _T6;
00985 typedef typename Type<T7> ::_Type _T7;
00986 typedef typename MethodSignature<CLASS, void, DynParams&, void*>::MemFuncType MEMFUNC;
00987
00988 public:
00989 FuncGenMemPtr(const MEMFUNC &pMemFunc, CLASS *pObject, void *pUserData = nullptr) : m_pMemFunc(pMemFunc), m_pObject(pObject), m_pUserData(pUserData) {
00990 }
00991
00992 virtual ~FuncGenMemPtr() {
00993 }
00994
00995 virtual void operator ()(_T0 t0, _T1 t1, _T2 t2, _T3 t3, _T4 t4, _T5 t5, _T6 t6, _T7 t7) override {
00996 if (m_pMemFunc && m_pObject) {
00997
00998 Params<void, T0, T1, T2, T3, T4, T5, T6, T7> cParams(t0, t1, t2, t3, t4, t5, t6, t7);
00999
01000
01001 ((*m_pObject).*m_pMemFunc)(cParams, m_pUserData);
01002 }
01003 }
01004
01005 virtual DynFunc *Clone() const override {
01006 return new FuncGenMemPtr(m_pMemFunc, m_pObject, m_pUserData);
01007 }
01008
01009 private:
01010 MEMFUNC m_pMemFunc;
01011 CLASS *m_pObject;
01012 void *m_pUserData;
01013 };
01014
01015
01016
01017
01018
01019
01020
01021
01022 template <typename CLASS, typename R, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
01023 class FuncGenMemPtr<CLASS, R, T0, T1, T2, T3, T4, T5, T6> : public Func<R, T0, T1, T2, T3, T4, T5, T6> {
01024 public:
01025 typedef typename Type<R> ::_Type _R;
01026 typedef typename Type<T0> ::_Type _T0;
01027 typedef typename Type<T1> ::_Type _T1;
01028 typedef typename Type<T2> ::_Type _T2;
01029 typedef typename Type<T3> ::_Type _T3;
01030 typedef typename Type<T4> ::_Type _T4;
01031 typedef typename Type<T5> ::_Type _T5;
01032 typedef typename Type<T6> ::_Type _T6;
01033 typedef typename MethodSignature<CLASS, void, DynParams&, void*>::MemFuncType MEMFUNC;
01034
01035 public:
01036 FuncGenMemPtr(const MEMFUNC &pMemFunc, CLASS *pObject, void *pUserData = nullptr) : m_pMemFunc(pMemFunc), m_pObject(pObject), m_pUserData(pUserData) {
01037 }
01038
01039 virtual ~FuncGenMemPtr() {
01040 }
01041
01042 virtual _R operator ()(_T0 t0, _T1 t1, _T2 t2, _T3 t3, _T4 t4, _T5 t5, _T6 t6) override {
01043 if (m_pMemFunc && m_pObject) {
01044
01045 Params<R, T0, T1, T2, T3, T4, T5, T6> cParams(t0, t1, t2, t3, t4, t5, t6);
01046
01047
01048 ((*m_pObject).*m_pMemFunc)(cParams, m_pUserData);
01049
01050
01051 return cParams.Return;
01052 } else {
01053 return DefaultValue<R>::Default();
01054 }
01055 }
01056
01057 virtual DynFunc *Clone() const override {
01058 return new FuncGenMemPtr(m_pMemFunc, m_pObject, m_pUserData);
01059 }
01060
01061 private:
01062 MEMFUNC m_pMemFunc;
01063 CLASS *m_pObject;
01064 void *m_pUserData;
01065 };
01066
01067
01068
01069
01070
01071
01072
01073
01074 template <typename CLASS, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
01075 class FuncGenMemPtr<CLASS, void, T0, T1, T2, T3, T4, T5, T6> : public Func<void, T0, T1, T2, T3, T4, T5, T6> {
01076 public:
01077 typedef typename Type<T0> ::_Type _T0;
01078 typedef typename Type<T1> ::_Type _T1;
01079 typedef typename Type<T2> ::_Type _T2;
01080 typedef typename Type<T3> ::_Type _T3;
01081 typedef typename Type<T4> ::_Type _T4;
01082 typedef typename Type<T5> ::_Type _T5;
01083 typedef typename Type<T6> ::_Type _T6;
01084 typedef typename MethodSignature<CLASS, void, DynParams&, void*>::MemFuncType MEMFUNC;
01085
01086 public:
01087 FuncGenMemPtr(const MEMFUNC &pMemFunc, CLASS *pObject, void *pUserData = nullptr) : m_pMemFunc(pMemFunc), m_pObject(pObject), m_pUserData(pUserData) {
01088 }
01089
01090 virtual ~FuncGenMemPtr() {
01091 }
01092
01093 virtual void operator ()(_T0 t0, _T1 t1, _T2 t2, _T3 t3, _T4 t4, _T5 t5, _T6 t6) override {
01094 if (m_pMemFunc && m_pObject) {
01095
01096 Params<void, T0, T1, T2, T3, T4, T5, T6> cParams(t0, t1, t2, t3, t4, t5, t6);
01097
01098
01099 ((*m_pObject).*m_pMemFunc)(cParams, m_pUserData);
01100 }
01101 }
01102
01103 virtual DynFunc *Clone() const override {
01104 return new FuncGenMemPtr(m_pMemFunc, m_pObject, m_pUserData);
01105 }
01106
01107 private:
01108 MEMFUNC m_pMemFunc;
01109 CLASS *m_pObject;
01110 void *m_pUserData;
01111 };
01112
01113
01114
01115
01116
01117
01118
01119
01120 template <typename CLASS, typename R, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5>
01121 class FuncGenMemPtr<CLASS, R, T0, T1, T2, T3, T4, T5> : public Func<R, T0, T1, T2, T3, T4, T5> {
01122 public:
01123 typedef typename Type<R> ::_Type _R;
01124 typedef typename Type<T0> ::_Type _T0;
01125 typedef typename Type<T1> ::_Type _T1;
01126 typedef typename Type<T2> ::_Type _T2;
01127 typedef typename Type<T3> ::_Type _T3;
01128 typedef typename Type<T4> ::_Type _T4;
01129 typedef typename Type<T5> ::_Type _T5;
01130 typedef typename MethodSignature<CLASS, void, DynParams&, void*>::MemFuncType MEMFUNC;
01131
01132 public:
01133 FuncGenMemPtr(const MEMFUNC &pMemFunc, CLASS *pObject, void *pUserData = nullptr) : m_pMemFunc(pMemFunc), m_pObject(pObject), m_pUserData(pUserData) {
01134 }
01135
01136 virtual ~FuncGenMemPtr() {
01137 }
01138
01139 virtual _R operator ()(_T0 t0, _T1 t1, _T2 t2, _T3 t3, _T4 t4, _T5 t5) override {
01140 if (m_pMemFunc && m_pObject) {
01141
01142 Params<R, T0, T1, T2, T3, T4, T5> cParams(t0, t1, t2, t3, t4, t5);
01143
01144
01145 ((*m_pObject).*m_pMemFunc)(cParams, m_pUserData);
01146
01147
01148 return cParams.Return;
01149 } else {
01150 return DefaultValue<R>::Default();
01151 }
01152 }
01153
01154 virtual DynFunc *Clone() const override {
01155 return new FuncGenMemPtr(m_pMemFunc, m_pObject, m_pUserData);
01156 }
01157
01158 private:
01159 MEMFUNC m_pMemFunc;
01160 CLASS *m_pObject;
01161 void *m_pUserData;
01162 };
01163
01164
01165
01166
01167
01168
01169
01170
01171 template <typename CLASS, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5>
01172 class FuncGenMemPtr<CLASS, void, T0, T1, T2, T3, T4, T5> : public Func<void, T0, T1, T2, T3, T4, T5> {
01173 public:
01174 typedef typename Type<T0> ::_Type _T0;
01175 typedef typename Type<T1> ::_Type _T1;
01176 typedef typename Type<T2> ::_Type _T2;
01177 typedef typename Type<T3> ::_Type _T3;
01178 typedef typename Type<T4> ::_Type _T4;
01179 typedef typename Type<T5> ::_Type _T5;
01180 typedef typename MethodSignature<CLASS, void, DynParams&, void*>::MemFuncType MEMFUNC;
01181
01182 public:
01183 FuncGenMemPtr(const MEMFUNC &pMemFunc, CLASS *pObject, void *pUserData = nullptr) : m_pMemFunc(pMemFunc), m_pObject(pObject), m_pUserData(pUserData) {
01184 }
01185
01186 virtual ~FuncGenMemPtr() {
01187 }
01188
01189 virtual void operator ()(_T0 t0, _T1 t1, _T2 t2, _T3 t3, _T4 t4, _T5 t5) override {
01190 if (m_pMemFunc && m_pObject) {
01191
01192 Params<void, T0, T1, T2, T3, T4, T5> cParams(t0, t1, t2, t3, t4, t5);
01193
01194
01195 ((*m_pObject).*m_pMemFunc)(cParams, m_pUserData);
01196 }
01197 }
01198
01199 virtual DynFunc *Clone() const override {
01200 return new FuncGenMemPtr(m_pMemFunc, m_pObject, m_pUserData);
01201 }
01202
01203 private:
01204 MEMFUNC m_pMemFunc;
01205 CLASS *m_pObject;
01206 void *m_pUserData;
01207 };
01208
01209
01210
01211
01212
01213
01214
01215
01216 template <typename CLASS, typename R, typename T0, typename T1, typename T2, typename T3, typename T4>
01217 class FuncGenMemPtr<CLASS, R, T0, T1, T2, T3, T4> : public Func<R, T0, T1, T2, T3, T4> {
01218 public:
01219 typedef typename Type<R> ::_Type _R;
01220 typedef typename Type<T0> ::_Type _T0;
01221 typedef typename Type<T1> ::_Type _T1;
01222 typedef typename Type<T2> ::_Type _T2;
01223 typedef typename Type<T3> ::_Type _T3;
01224 typedef typename Type<T4> ::_Type _T4;
01225 typedef typename MethodSignature<CLASS, void, DynParams&, void*>::MemFuncType MEMFUNC;
01226
01227 public:
01228 FuncGenMemPtr(const MEMFUNC &pMemFunc, CLASS *pObject, void *pUserData = nullptr) : m_pMemFunc(pMemFunc), m_pObject(pObject), m_pUserData(pUserData) {
01229 }
01230
01231 virtual ~FuncGenMemPtr() {
01232 }
01233
01234 virtual _R operator ()(_T0 t0, _T1 t1, _T2 t2, _T3 t3, _T4 t4) override {
01235 if (m_pMemFunc && m_pObject) {
01236
01237 Params<R, T0, T1, T2, T3, T4> cParams(t0, t1, t2, t3, t4);
01238
01239
01240 ((*m_pObject).*m_pMemFunc)(cParams, m_pUserData);
01241
01242
01243 return cParams.Return;
01244 } else {
01245 return DefaultValue<R>::Default();
01246 }
01247 }
01248
01249 virtual DynFunc *Clone() const override {
01250 return new FuncGenMemPtr(m_pMemFunc, m_pObject, m_pUserData);
01251 }
01252
01253 private:
01254 MEMFUNC m_pMemFunc;
01255 CLASS *m_pObject;
01256 void *m_pUserData;
01257 };
01258
01259
01260
01261
01262
01263
01264
01265
01266 template <typename CLASS, typename T0, typename T1, typename T2, typename T3, typename T4>
01267 class FuncGenMemPtr<CLASS, void, T0, T1, T2, T3, T4> : public Func<void, T0, T1, T2, T3, T4> {
01268 public:
01269 typedef typename Type<T0> ::_Type _T0;
01270 typedef typename Type<T1> ::_Type _T1;
01271 typedef typename Type<T2> ::_Type _T2;
01272 typedef typename Type<T3> ::_Type _T3;
01273 typedef typename Type<T4> ::_Type _T4;
01274 typedef typename MethodSignature<CLASS, void, DynParams&, void*>::MemFuncType MEMFUNC;
01275
01276 public:
01277 FuncGenMemPtr(const MEMFUNC &pMemFunc, CLASS *pObject, void *pUserData = nullptr) : m_pMemFunc(pMemFunc), m_pObject(pObject), m_pUserData(pUserData) {
01278 }
01279
01280 virtual ~FuncGenMemPtr() {
01281 }
01282
01283 virtual void operator ()(_T0 t0, _T1 t1, _T2 t2, _T3 t3, _T4 t4) override {
01284 if (m_pMemFunc && m_pObject) {
01285
01286 Params<void, T0, T1, T2, T3, T4> cParams(t0, t1, t2, t3, t4);
01287
01288
01289 ((*m_pObject).*m_pMemFunc)(cParams, m_pUserData);
01290 }
01291 }
01292
01293 virtual DynFunc *Clone() const override {
01294 return new FuncGenMemPtr(m_pMemFunc, m_pObject, m_pUserData);
01295 }
01296
01297 private:
01298 MEMFUNC m_pMemFunc;
01299 CLASS *m_pObject;
01300 void *m_pUserData;
01301 };
01302
01303
01304
01305
01306
01307
01308
01309
01310 template <typename CLASS, typename R, typename T0, typename T1, typename T2, typename T3>
01311 class FuncGenMemPtr<CLASS, R, T0, T1, T2, T3> : public Func<R, T0, T1, T2, T3> {
01312 public:
01313 typedef typename Type<R> ::_Type _R;
01314 typedef typename Type<T0> ::_Type _T0;
01315 typedef typename Type<T1> ::_Type _T1;
01316 typedef typename Type<T2> ::_Type _T2;
01317 typedef typename Type<T3> ::_Type _T3;
01318 typedef typename MethodSignature<CLASS, void, DynParams&, void*>::MemFuncType MEMFUNC;
01319
01320 public:
01321 FuncGenMemPtr(const MEMFUNC &pMemFunc, CLASS *pObject, void *pUserData = nullptr) : m_pMemFunc(pMemFunc), m_pObject(pObject), m_pUserData(pUserData) {
01322 }
01323
01324 virtual ~FuncGenMemPtr() {
01325 }
01326
01327 virtual _R operator ()(_T0 t0, _T1 t1, _T2 t2, _T3 t3) override {
01328 if (m_pMemFunc && m_pObject) {
01329
01330 Params<R, T0, T1, T2, T3> cParams(t0, t1, t2, t3);
01331
01332
01333 ((*m_pObject).*m_pMemFunc)(cParams, m_pUserData);
01334
01335
01336 return cParams.Return;
01337 } else {
01338 return DefaultValue<R>::Default();
01339 }
01340 }
01341
01342 virtual DynFunc *Clone() const override {
01343 return new FuncGenMemPtr(m_pMemFunc, m_pObject, m_pUserData);
01344 }
01345
01346 private:
01347 MEMFUNC m_pMemFunc;
01348 CLASS *m_pObject;
01349 void *m_pUserData;
01350 };
01351
01352
01353
01354
01355
01356
01357
01358
01359 template <typename CLASS, typename T0, typename T1, typename T2, typename T3>
01360 class FuncGenMemPtr<CLASS, void, T0, T1, T2, T3> : public Func<void, T0, T1, T2, T3> {
01361 public:
01362 typedef typename Type<T0> ::_Type _T0;
01363 typedef typename Type<T1> ::_Type _T1;
01364 typedef typename Type<T2> ::_Type _T2;
01365 typedef typename Type<T3> ::_Type _T3;
01366 typedef typename MethodSignature<CLASS, void, DynParams&, void*>::MemFuncType MEMFUNC;
01367
01368 public:
01369 FuncGenMemPtr(const MEMFUNC &pMemFunc, CLASS *pObject, void *pUserData = nullptr) : m_pMemFunc(pMemFunc), m_pObject(pObject), m_pUserData(pUserData) {
01370 }
01371
01372 virtual ~FuncGenMemPtr() {
01373 }
01374
01375 virtual void operator ()(_T0 t0, _T1 t1, _T2 t2, _T3 t3) override {
01376 if (m_pMemFunc && m_pObject) {
01377
01378 Params<void, T0, T1, T2, T3> cParams(t0, t1, t2, t3);
01379
01380
01381 ((*m_pObject).*m_pMemFunc)(cParams, m_pUserData);
01382 }
01383 }
01384
01385 virtual DynFunc *Clone() const override {
01386 return new FuncGenMemPtr(m_pMemFunc, m_pObject, m_pUserData);
01387 }
01388
01389 private:
01390 MEMFUNC m_pMemFunc;
01391 CLASS *m_pObject;
01392 void *m_pUserData;
01393 };
01394
01395
01396
01397
01398
01399
01400
01401
01402 template <typename CLASS, typename R, typename T0, typename T1, typename T2>
01403 class FuncGenMemPtr<CLASS, R, T0, T1, T2> : public Func<R, T0, T1, T2> {
01404 public:
01405 typedef typename Type<R> ::_Type _R;
01406 typedef typename Type<T0> ::_Type _T0;
01407 typedef typename Type<T1> ::_Type _T1;
01408 typedef typename Type<T2> ::_Type _T2;
01409 typedef typename MethodSignature<CLASS, void, DynParams&, void*>::MemFuncType MEMFUNC;
01410
01411 public:
01412 FuncGenMemPtr(const MEMFUNC &pMemFunc, CLASS *pObject, void *pUserData = nullptr) : m_pMemFunc(pMemFunc), m_pObject(pObject), m_pUserData(pUserData) {
01413 }
01414
01415 virtual ~FuncGenMemPtr() {
01416 }
01417
01418 virtual _R operator ()(_T0 t0, _T1 t1, _T2 t2) override {
01419 if (m_pMemFunc && m_pObject) {
01420
01421 Params<R, T0, T1, T2> cParams(t0, t1, t2);
01422
01423
01424 ((*m_pObject).*m_pMemFunc)(cParams, m_pUserData);
01425
01426
01427 return cParams.Return;
01428 } else {
01429 return DefaultValue<R>::Default();
01430 }
01431 }
01432
01433 virtual DynFunc *Clone() const override {
01434 return new FuncGenMemPtr(m_pMemFunc, m_pObject, m_pUserData);
01435 }
01436
01437 private:
01438 MEMFUNC m_pMemFunc;
01439 CLASS *m_pObject;
01440 void *m_pUserData;
01441 };
01442
01443
01444
01445
01446
01447
01448
01449
01450 template <typename CLASS, typename T0, typename T1, typename T2>
01451 class FuncGenMemPtr<CLASS, void, T0, T1, T2> : public Func<void, T0, T1, T2> {
01452 public:
01453 typedef typename Type<T0> ::_Type _T0;
01454 typedef typename Type<T1> ::_Type _T1;
01455 typedef typename Type<T2> ::_Type _T2;
01456 typedef typename MethodSignature<CLASS, void, DynParams&, void*>::MemFuncType MEMFUNC;
01457
01458 public:
01459 FuncGenMemPtr(const MEMFUNC &pMemFunc, CLASS *pObject, void *pUserData = nullptr) : m_pMemFunc(pMemFunc), m_pObject(pObject), m_pUserData(pUserData) {
01460 }
01461
01462 virtual ~FuncGenMemPtr() {
01463 }
01464
01465 virtual void operator ()(_T0 t0, _T1 t1, _T2 t2) override {
01466 if (m_pMemFunc && m_pObject) {
01467
01468 Params<void, T0, T1, T2> cParams(t0, t1, t2);
01469
01470
01471 ((*m_pObject).*m_pMemFunc)(cParams, m_pUserData);
01472 }
01473 }
01474
01475 virtual DynFunc *Clone() const override {
01476 return new FuncGenMemPtr(m_pMemFunc, m_pObject, m_pUserData);
01477 }
01478
01479 private:
01480 MEMFUNC m_pMemFunc;
01481 CLASS *m_pObject;
01482 void *m_pUserData;
01483 };
01484
01485
01486
01487
01488
01489
01490
01491
01492 template <typename CLASS, typename R, typename T0, typename T1>
01493 class FuncGenMemPtr<CLASS, R, T0, T1> : public Func<R, T0, T1> {
01494 public:
01495 typedef typename Type<R> ::_Type _R;
01496 typedef typename Type<T0> ::_Type _T0;
01497 typedef typename Type<T1> ::_Type _T1;
01498 typedef typename MethodSignature<CLASS, void, DynParams&, void*>::MemFuncType MEMFUNC;
01499
01500 public:
01501 FuncGenMemPtr(const MEMFUNC &pMemFunc, CLASS *pObject, void *pUserData = nullptr) : m_pMemFunc(pMemFunc), m_pObject(pObject), m_pUserData(pUserData) {
01502 }
01503
01504 virtual ~FuncGenMemPtr() {
01505 }
01506
01507 virtual _R operator ()(_T0 t0, _T1 t1) override {
01508 if (m_pMemFunc && m_pObject) {
01509
01510 Params<R, T0, T1> cParams(t0, t1);
01511
01512
01513 ((*m_pObject).*m_pMemFunc)(cParams, m_pUserData);
01514
01515
01516 return cParams.Return;
01517 } else {
01518 return DefaultValue<R>::Default();
01519 }
01520 }
01521
01522 virtual DynFunc *Clone() const override {
01523 return new FuncGenMemPtr(m_pMemFunc, m_pObject, m_pUserData);
01524 }
01525
01526 private:
01527 MEMFUNC m_pMemFunc;
01528 CLASS *m_pObject;
01529 void *m_pUserData;
01530 };
01531
01532
01533
01534
01535
01536
01537
01538
01539 template <typename CLASS, typename T0, typename T1>
01540 class FuncGenMemPtr<CLASS, void, T0, T1> : public Func<void, T0, T1> {
01541 public:
01542 typedef typename Type<T0> ::_Type _T0;
01543 typedef typename Type<T1> ::_Type _T1;
01544 typedef typename MethodSignature<CLASS, void, DynParams&, void*>::MemFuncType MEMFUNC;
01545
01546 public:
01547 FuncGenMemPtr(const MEMFUNC &pMemFunc, CLASS *pObject, void *pUserData = nullptr) : m_pMemFunc(pMemFunc), m_pObject(pObject), m_pUserData(pUserData) {
01548 }
01549
01550 virtual ~FuncGenMemPtr() {
01551 }
01552
01553 virtual void operator ()(_T0 t0, _T1 t1) override {
01554 if (m_pMemFunc && m_pObject) {
01555
01556 Params<void, T0, T1> cParams(t0, t1);
01557
01558
01559 ((*m_pObject).*m_pMemFunc)(cParams, m_pUserData);
01560 }
01561 }
01562
01563 virtual DynFunc *Clone() const override {
01564 return new FuncGenMemPtr(m_pMemFunc, m_pObject, m_pUserData);
01565 }
01566
01567 private:
01568 MEMFUNC m_pMemFunc;
01569 CLASS *m_pObject;
01570 void *m_pUserData;
01571 };
01572
01573
01574
01575
01576
01577
01578
01579
01580 template <typename CLASS, typename R, typename T0>
01581 class FuncGenMemPtr<CLASS, R, T0> : public Func<R, T0> {
01582 public:
01583 typedef typename Type<R> ::_Type _R;
01584 typedef typename Type<T0> ::_Type _T0;
01585 typedef typename MethodSignature<CLASS, void, DynParams&, void*>::MemFuncType MEMFUNC;
01586
01587 public:
01588 FuncGenMemPtr(const MEMFUNC &pMemFunc, CLASS *pObject, void *pUserData = nullptr) : m_pMemFunc(pMemFunc), m_pObject(pObject), m_pUserData(pUserData) {
01589 }
01590
01591 virtual ~FuncGenMemPtr() {
01592 }
01593
01594 virtual _R operator ()(_T0 t0) override {
01595 if (m_pMemFunc && m_pObject) {
01596
01597 Params<R, T0> cParams(t0);
01598
01599
01600 ((*m_pObject).*m_pMemFunc)(cParams, m_pUserData);
01601
01602
01603 return cParams.Return;
01604 } else {
01605 return DefaultValue<R>::Default();
01606 }
01607 }
01608
01609 virtual DynFunc *Clone() const override {
01610 return new FuncGenMemPtr(m_pMemFunc, m_pObject, m_pUserData);
01611 }
01612
01613 private:
01614 MEMFUNC m_pMemFunc;
01615 CLASS *m_pObject;
01616 void *m_pUserData;
01617 };
01618
01619
01620
01621
01622
01623
01624
01625
01626 template <typename CLASS, typename T0>
01627 class FuncGenMemPtr<CLASS, void, T0> : public Func<void, T0> {
01628 public:
01629 typedef typename Type<T0> ::_Type _T0;
01630 typedef typename MethodSignature<CLASS, void, DynParams&, void*>::MemFuncType MEMFUNC;
01631
01632 public:
01633 FuncGenMemPtr(const MEMFUNC &pMemFunc, CLASS *pObject, void *pUserData = nullptr) : m_pMemFunc(pMemFunc), m_pObject(pObject), m_pUserData(pUserData) {
01634 }
01635
01636 virtual ~FuncGenMemPtr() {
01637 }
01638
01639 virtual void operator ()(_T0 t0) override {
01640 if (m_pMemFunc && m_pObject) {
01641
01642 Params<void, T0> cParams(t0);
01643
01644
01645 ((*m_pObject).*m_pMemFunc)(cParams, m_pUserData);
01646 }
01647 }
01648
01649 virtual DynFunc *Clone() const override {
01650 return new FuncGenMemPtr(m_pMemFunc, m_pObject, m_pUserData);
01651 }
01652
01653 private:
01654 MEMFUNC m_pMemFunc;
01655 CLASS *m_pObject;
01656 void *m_pUserData;
01657 };
01658
01659
01660
01661
01662
01663
01664
01665
01666 template <typename CLASS, typename R>
01667 class FuncGenMemPtr<CLASS, R> : public Func<R> {
01668 public:
01669 typedef typename Type<R> ::_Type _R;
01670 typedef typename MethodSignature<CLASS, void, DynParams&, void*>::MemFuncType MEMFUNC;
01671
01672 public:
01673 FuncGenMemPtr(const MEMFUNC &pMemFunc, CLASS *pObject, void *pUserData = nullptr) : m_pMemFunc(pMemFunc), m_pObject(pObject), m_pUserData(pUserData) {
01674 }
01675
01676 virtual ~FuncGenMemPtr() {
01677 }
01678
01679 virtual _R operator ()() override {
01680 if (m_pMemFunc && m_pObject) {
01681
01682 Params<R> cParams();
01683
01684
01685 ((*m_pObject).*m_pMemFunc)(cParams, m_pUserData);
01686
01687
01688 return cParams.Return;
01689 } else {
01690 return DefaultValue<R>::Default();
01691 }
01692 }
01693
01694 virtual DynFunc *Clone() const override {
01695 return new FuncGenMemPtr(m_pMemFunc, m_pObject, m_pUserData);
01696 }
01697
01698 private:
01699 MEMFUNC m_pMemFunc;
01700 CLASS *m_pObject;
01701 void *m_pUserData;
01702 };
01703
01704
01705
01706
01707
01708
01709
01710
01711 template <typename CLASS>
01712 class FuncGenMemPtr<CLASS, void> : public Func<void> {
01713 public:
01714 typedef typename MethodSignature<CLASS, void, DynParams&, void*>::MemFuncType MEMFUNC;
01715
01716 public:
01717 FuncGenMemPtr(const MEMFUNC &pMemFunc, CLASS *pObject, void *pUserData = nullptr) : m_pMemFunc(pMemFunc), m_pObject(pObject), m_pUserData(pUserData) {
01718 }
01719
01720 virtual ~FuncGenMemPtr() {
01721 }
01722
01723 virtual void operator ()() override {
01724 if (m_pMemFunc && m_pObject) {
01725
01726 Params<void> cParams;
01727
01728
01729 ((*m_pObject).*m_pMemFunc)(cParams, m_pUserData);
01730 }
01731 }
01732
01733 virtual DynFunc *Clone() const override {
01734 return new FuncGenMemPtr(m_pMemFunc, m_pObject, m_pUserData);
01735 }
01736
01737 private:
01738 MEMFUNC m_pMemFunc;
01739 CLASS *m_pObject;
01740 void *m_pUserData;
01741 };
01742
01743
01744
01745
01746
01747 }
01748
01749
01750 #endif // __PLCORE_FUNC_GENMEMPTR_H__