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