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_SIGNATURE_H__
00024 #define __PLCORE_SIGNATURE_H__
00025 #pragma once
00026
00027
00028
00029
00030
00031 #include "PLCore/Base/Type/Type.h"
00032 #include "PLCore/Base/Tools/TypeTraits.h"
00033
00034
00035
00036
00037
00038 namespace PLCore {
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048 template <typename R = NullType, 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>
00049 class SignatureString {
00050
00051
00052
00053
00054
00055 public:
00056
00057
00058
00059
00060
00061
00062
00063 static String GetSignatureID() {
00064
00065 static String sSignature;
00066 if (sSignature.GetLength()) {
00067
00068 return sSignature;
00069 } else {
00070 String sType;
00071
00072
00073 sSignature = Type<R>::GetTypeName();
00074 sSignature += '(';
00075
00076
00077 sType = Type<T0>::GetTypeName();
00078 if (sType.GetLength())
00079 sSignature += sType;
00080
00081
00082 sType = Type<T1>::GetTypeName();
00083 if (sType.GetLength()) {
00084 sSignature += ',';
00085 sSignature += sType;
00086 }
00087
00088
00089 sType = Type<T2>::GetTypeName();
00090 if (sType.GetLength()) {
00091 sSignature += ',';
00092 sSignature += sType;
00093 }
00094
00095
00096 sType = Type<T3>::GetTypeName();
00097 if (sType.GetLength()) {
00098 sSignature += ',';
00099 sSignature += sType;
00100 }
00101
00102
00103 sType = Type<T4>::GetTypeName();
00104 if (sType.GetLength()) {
00105 sSignature += ',';
00106 sSignature += sType;
00107 }
00108
00109
00110 sType = Type<T5>::GetTypeName();
00111 if (sType.GetLength()) {
00112 sSignature += ',';
00113 sSignature += sType;
00114 }
00115
00116
00117 sType = Type<T6>::GetTypeName();
00118 if (sType.GetLength()) {
00119 sSignature += ',';
00120 sSignature += sType;
00121 }
00122
00123
00124 sType = Type<T7>::GetTypeName();
00125 if (sType.GetLength()) {
00126 sSignature += ',';
00127 sSignature += sType;
00128 }
00129
00130
00131 sType = Type<T8>::GetTypeName();
00132 if (sType.GetLength()) {
00133 sSignature += ',';
00134 sSignature += sType;
00135 }
00136
00137
00138 sType = Type<T9>::GetTypeName();
00139 if (sType.GetLength()) {
00140 sSignature += ',';
00141 sSignature += sType;
00142 }
00143
00144
00145 sType = Type<T10>::GetTypeName();
00146 if (sType.GetLength()) {
00147 sSignature += ',';
00148 sSignature += sType;
00149 }
00150
00151
00152 sType = Type<T11>::GetTypeName();
00153 if (sType.GetLength()) {
00154 sSignature += ',';
00155 sSignature += sType;
00156 }
00157
00158
00159 sType = Type<T12>::GetTypeName();
00160 if (sType.GetLength()) {
00161 sSignature += ',';
00162 sSignature += sType;
00163 }
00164
00165
00166 sType = Type<T13>::GetTypeName();
00167 if (sType.GetLength()) {
00168 sSignature += ',';
00169 sSignature += sType;
00170 }
00171
00172
00173 sType = Type<T14>::GetTypeName();
00174 if (sType.GetLength()) {
00175 sSignature += ',';
00176 sSignature += sType;
00177 }
00178
00179
00180 sType = Type<T15>::GetTypeName();
00181 if (sType.GetLength()) {
00182 sSignature += ',';
00183 sSignature += sType;
00184 }
00185
00186
00187 sSignature += ')';
00188 return sSignature;
00189 }
00190 }
00191 };
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201 template <typename R = NullType, 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>
00202 class Signature {
00203
00204
00205
00206
00207
00208 public:
00209
00210 typedef R (*FuncType)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15);
00211
00212
00213
00214
00215
00216 public:
00217
00218
00219
00220
00221
00222
00223
00224 static String GetSignatureID() {
00225 return SignatureString<R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>::GetSignatureID();
00226 }
00227
00228
00229 };
00230
00231
00232
00233
00234
00235
00236
00237
00238 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>
00239 class Signature<R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> {
00240
00241
00242 public:
00243
00244 typedef R (*FuncType)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14);
00245
00246
00247 static String GetSignatureID() {
00248 return SignatureString<R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>::GetSignatureID();
00249 }
00250
00251
00252 };
00253
00254
00255
00256
00257
00258
00259
00260
00261 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>
00262 class Signature<R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> {
00263
00264
00265 public:
00266
00267 typedef R (*FuncType)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13);
00268
00269
00270 static String GetSignatureID() {
00271 return SignatureString<R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>::GetSignatureID();
00272 }
00273
00274
00275 };
00276
00277
00278
00279
00280
00281
00282
00283
00284 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>
00285 class Signature<R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> {
00286
00287
00288 public:
00289
00290 typedef R (*FuncType)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12);
00291
00292
00293 static String GetSignatureID() {
00294 return SignatureString<R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>::GetSignatureID();
00295 }
00296
00297
00298 };
00299
00300
00301
00302
00303
00304
00305
00306
00307 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>
00308 class Signature<R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> {
00309
00310
00311 public:
00312
00313 typedef R (*FuncType)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11);
00314
00315
00316 static String GetSignatureID() {
00317 return SignatureString<R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>::GetSignatureID();
00318 }
00319
00320
00321 };
00322
00323
00324
00325
00326
00327
00328
00329
00330 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>
00331 class Signature<R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> {
00332
00333
00334 public:
00335
00336 typedef R (*FuncType)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10);
00337
00338
00339 static String GetSignatureID() {
00340 return SignatureString<R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>::GetSignatureID();
00341 }
00342
00343
00344 };
00345
00346
00347
00348
00349
00350
00351
00352
00353 template <typename R, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>
00354 class Signature<R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> {
00355
00356
00357 public:
00358
00359 typedef R (*FuncType)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9);
00360
00361
00362 static String GetSignatureID() {
00363 return SignatureString<R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>::GetSignatureID();
00364 }
00365
00366
00367 };
00368
00369
00370
00371
00372
00373
00374
00375
00376 template <typename R, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>
00377 class Signature<R, T0, T1, T2, T3, T4, T5, T6, T7, T8> {
00378
00379
00380 public:
00381
00382 typedef R (*FuncType)(T0, T1, T2, T3, T4, T5, T6, T7, T8);
00383
00384
00385 static String GetSignatureID() {
00386 return SignatureString<R, T0, T1, T2, T3, T4, T5, T6, T7, T8>::GetSignatureID();
00387 }
00388
00389
00390 };
00391
00392
00393
00394
00395
00396
00397
00398
00399 template <typename R, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
00400 class Signature<R, T0, T1, T2, T3, T4, T5, T6, T7> {
00401
00402
00403 public:
00404
00405 typedef R (*FuncType)(T0, T1, T2, T3, T4, T5, T6, T7);
00406
00407
00408 static String GetSignatureID() {
00409 return SignatureString<R, T0, T1, T2, T3, T4, T5, T6, T7>::GetSignatureID();
00410 }
00411
00412
00413 };
00414
00415
00416
00417
00418
00419
00420
00421
00422 template <typename R, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
00423 class Signature<R, T0, T1, T2, T3, T4, T5, T6> {
00424
00425
00426 public:
00427
00428 typedef R (*FuncType)(T0, T1, T2, T3, T4, T5, T6);
00429
00430
00431 static String GetSignatureID() {
00432 return SignatureString<R, T0, T1, T2, T3, T4, T5, T6>::GetSignatureID();
00433 }
00434
00435
00436 };
00437
00438
00439
00440
00441
00442
00443
00444
00445 template <typename R, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5>
00446 class Signature<R, T0, T1, T2, T3, T4, T5> {
00447
00448
00449 public:
00450
00451 typedef R (*FuncType)(T0, T1, T2, T3, T4, T5);
00452
00453
00454 static String GetSignatureID() {
00455 return SignatureString<R, T0, T1, T2, T3, T4, T5>::GetSignatureID();
00456 }
00457
00458
00459 };
00460
00461
00462
00463
00464
00465
00466
00467
00468 template <typename R, typename T0, typename T1, typename T2, typename T3, typename T4>
00469 class Signature<R, T0, T1, T2, T3, T4> {
00470
00471
00472 public:
00473
00474 typedef R (*FuncType)(T0, T1, T2, T3, T4);
00475
00476
00477 static String GetSignatureID() {
00478 return SignatureString<R, T0, T1, T2, T3, T4>::GetSignatureID();
00479 }
00480
00481
00482 };
00483
00484
00485
00486
00487
00488
00489
00490
00491 template <typename R, typename T0, typename T1, typename T2, typename T3>
00492 class Signature<R, T0, T1, T2, T3> {
00493
00494
00495 public:
00496
00497 typedef R (*FuncType)(T0, T1, T2, T3);
00498
00499
00500 static String GetSignatureID() {
00501 return SignatureString<R, T0, T1, T2, T3>::GetSignatureID();
00502 }
00503
00504
00505 };
00506
00507
00508
00509
00510
00511
00512
00513
00514 template <typename R, typename T0, typename T1, typename T2>
00515 class Signature<R, T0, T1, T2> {
00516
00517
00518 public:
00519
00520 typedef R (*FuncType)(T0, T1, T2);
00521
00522
00523 static String GetSignatureID() {
00524 return SignatureString<R, T0, T1, T2>::GetSignatureID();
00525 }
00526
00527
00528 };
00529
00530
00531
00532
00533
00534
00535
00536
00537 template <typename R, typename T0, typename T1>
00538 class Signature<R, T0, T1> {
00539
00540
00541 public:
00542
00543 typedef R (*FuncType)(T0, T1);
00544
00545
00546 static String GetSignatureID() {
00547 return SignatureString<R, T0, T1>::GetSignatureID();
00548 }
00549
00550
00551 };
00552
00553
00554
00555
00556
00557
00558
00559
00560 template <typename R, typename T0>
00561 class Signature<R, T0> {
00562
00563
00564 public:
00565
00566 typedef R (*FuncType)(T0);
00567
00568
00569 static String GetSignatureID() {
00570 return SignatureString<R, T0>::GetSignatureID();
00571 }
00572
00573
00574 };
00575
00576
00577
00578
00579
00580
00581
00582
00583 template <typename R>
00584 class Signature<R> {
00585
00586
00587 public:
00588
00589 typedef R (*FuncType)();
00590
00591
00592 static String GetSignatureID() {
00593 return SignatureString<R>::GetSignatureID();
00594 }
00595
00596
00597 };
00598
00599
00600
00601
00602
00603
00604
00605
00606 template <typename CLASS = NullType, typename R = NullType, 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>
00607 class MethodSignature {
00608
00609
00610
00611
00612
00613 public:
00614
00615 typedef typename Type<R> ::_Type _R;
00616 typedef typename Type<T0> ::_Type _T0;
00617 typedef typename Type<T1> ::_Type _T1;
00618 typedef typename Type<T2> ::_Type _T2;
00619 typedef typename Type<T3> ::_Type _T3;
00620 typedef typename Type<T4> ::_Type _T4;
00621 typedef typename Type<T5> ::_Type _T5;
00622 typedef typename Type<T6> ::_Type _T6;
00623 typedef typename Type<T7> ::_Type _T7;
00624 typedef typename Type<T8> ::_Type _T8;
00625 typedef typename Type<T9> ::_Type _T9;
00626 typedef typename Type<T10>::_Type _T10;
00627 typedef typename Type<T11>::_Type _T11;
00628 typedef typename Type<T12>::_Type _T12;
00629 typedef typename Type<T13>::_Type _T13;
00630 typedef typename Type<T14>::_Type _T14;
00631 typedef typename Type<T15>::_Type _T15;
00632
00633
00634 typedef _R (*FuncType)(_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13, _T14, _T15);
00635 typedef _R (CLASS::*MemFuncType)(_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13, _T14, _T15);
00636
00637
00638
00639
00640
00641 public:
00642
00643
00644
00645
00646
00647
00648
00649 static String GetSignatureID() {
00650 return SignatureString<R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>::GetSignatureID();
00651 }
00652
00653
00654 };
00655
00656
00657
00658
00659
00660
00661
00662
00663 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>
00664 class MethodSignature<CLASS, R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> {
00665
00666
00667 public:
00668
00669 typedef typename Type<R> ::_Type _R;
00670 typedef typename Type<T0> ::_Type _T0;
00671 typedef typename Type<T1> ::_Type _T1;
00672 typedef typename Type<T2> ::_Type _T2;
00673 typedef typename Type<T3> ::_Type _T3;
00674 typedef typename Type<T4> ::_Type _T4;
00675 typedef typename Type<T5> ::_Type _T5;
00676 typedef typename Type<T6> ::_Type _T6;
00677 typedef typename Type<T7> ::_Type _T7;
00678 typedef typename Type<T8> ::_Type _T8;
00679 typedef typename Type<T9> ::_Type _T9;
00680 typedef typename Type<T10>::_Type _T10;
00681 typedef typename Type<T11>::_Type _T11;
00682 typedef typename Type<T12>::_Type _T12;
00683 typedef typename Type<T13>::_Type _T13;
00684 typedef typename Type<T14>::_Type _T14;
00685
00686
00687 typedef _R (*FuncType)(_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13, _T14);
00688 typedef _R (CLASS::*MemFuncType)(_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13, _T14);
00689
00690
00691 static String GetSignatureID() {
00692 return SignatureString<R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>::GetSignatureID();
00693 }
00694
00695
00696 };
00697
00698
00699
00700
00701
00702
00703
00704
00705 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>
00706 class MethodSignature<CLASS, R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> {
00707
00708
00709 public:
00710
00711 typedef typename Type<R> ::_Type _R;
00712 typedef typename Type<T0> ::_Type _T0;
00713 typedef typename Type<T1> ::_Type _T1;
00714 typedef typename Type<T2> ::_Type _T2;
00715 typedef typename Type<T3> ::_Type _T3;
00716 typedef typename Type<T4> ::_Type _T4;
00717 typedef typename Type<T5> ::_Type _T5;
00718 typedef typename Type<T6> ::_Type _T6;
00719 typedef typename Type<T7> ::_Type _T7;
00720 typedef typename Type<T8> ::_Type _T8;
00721 typedef typename Type<T9> ::_Type _T9;
00722 typedef typename Type<T10>::_Type _T10;
00723 typedef typename Type<T11>::_Type _T11;
00724 typedef typename Type<T12>::_Type _T12;
00725 typedef typename Type<T13>::_Type _T13;
00726
00727
00728 typedef _R (*FuncType)(_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13);
00729 typedef _R (CLASS::*MemFuncType)(_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13);
00730
00731
00732 static String GetSignatureID() {
00733 return SignatureString<R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>::GetSignatureID();
00734 }
00735
00736
00737 };
00738
00739
00740
00741
00742
00743
00744
00745
00746 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>
00747 class MethodSignature<CLASS, R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> {
00748
00749
00750 public:
00751
00752 typedef typename Type<R> ::_Type _R;
00753 typedef typename Type<T0> ::_Type _T0;
00754 typedef typename Type<T1> ::_Type _T1;
00755 typedef typename Type<T2> ::_Type _T2;
00756 typedef typename Type<T3> ::_Type _T3;
00757 typedef typename Type<T4> ::_Type _T4;
00758 typedef typename Type<T5> ::_Type _T5;
00759 typedef typename Type<T6> ::_Type _T6;
00760 typedef typename Type<T7> ::_Type _T7;
00761 typedef typename Type<T8> ::_Type _T8;
00762 typedef typename Type<T9> ::_Type _T9;
00763 typedef typename Type<T10>::_Type _T10;
00764 typedef typename Type<T11>::_Type _T11;
00765 typedef typename Type<T12>::_Type _T12;
00766
00767
00768 typedef _R (*FuncType)(_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12);
00769 typedef _R (CLASS::*MemFuncType)(_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12);
00770
00771
00772 static String GetSignatureID() {
00773 return SignatureString<R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>::GetSignatureID();
00774 }
00775
00776
00777 };
00778
00779
00780
00781
00782
00783
00784
00785
00786 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>
00787 class MethodSignature<CLASS, R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> {
00788
00789
00790 public:
00791
00792 typedef typename Type<R> ::_Type _R;
00793 typedef typename Type<T0> ::_Type _T0;
00794 typedef typename Type<T1> ::_Type _T1;
00795 typedef typename Type<T2> ::_Type _T2;
00796 typedef typename Type<T3> ::_Type _T3;
00797 typedef typename Type<T4> ::_Type _T4;
00798 typedef typename Type<T5> ::_Type _T5;
00799 typedef typename Type<T6> ::_Type _T6;
00800 typedef typename Type<T7> ::_Type _T7;
00801 typedef typename Type<T8> ::_Type _T8;
00802 typedef typename Type<T9> ::_Type _T9;
00803 typedef typename Type<T10>::_Type _T10;
00804 typedef typename Type<T11>::_Type _T11;
00805
00806
00807 typedef _R (*FuncType)(_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11);
00808 typedef _R (CLASS::*MemFuncType)(_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11);
00809
00810
00811 static String GetSignatureID() {
00812 return SignatureString<R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>::GetSignatureID();
00813 }
00814
00815
00816 };
00817
00818
00819
00820
00821
00822
00823
00824
00825 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>
00826 class MethodSignature<CLASS, R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> {
00827
00828
00829 public:
00830
00831 typedef typename Type<R> ::_Type _R;
00832 typedef typename Type<T0> ::_Type _T0;
00833 typedef typename Type<T1> ::_Type _T1;
00834 typedef typename Type<T2> ::_Type _T2;
00835 typedef typename Type<T3> ::_Type _T3;
00836 typedef typename Type<T4> ::_Type _T4;
00837 typedef typename Type<T5> ::_Type _T5;
00838 typedef typename Type<T6> ::_Type _T6;
00839 typedef typename Type<T7> ::_Type _T7;
00840 typedef typename Type<T8> ::_Type _T8;
00841 typedef typename Type<T9> ::_Type _T9;
00842 typedef typename Type<T10>::_Type _T10;
00843
00844
00845 typedef _R (*FuncType)(_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10);
00846 typedef _R (CLASS::*MemFuncType)(_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10);
00847
00848
00849 static String GetSignatureID() {
00850 return SignatureString<R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>::GetSignatureID();
00851 }
00852
00853
00854 };
00855
00856
00857
00858
00859
00860
00861
00862
00863 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>
00864 class MethodSignature<CLASS, R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> {
00865
00866
00867 public:
00868
00869 typedef typename Type<R> ::_Type _R;
00870 typedef typename Type<T0>::_Type _T0;
00871 typedef typename Type<T1>::_Type _T1;
00872 typedef typename Type<T2>::_Type _T2;
00873 typedef typename Type<T3>::_Type _T3;
00874 typedef typename Type<T4>::_Type _T4;
00875 typedef typename Type<T5>::_Type _T5;
00876 typedef typename Type<T6>::_Type _T6;
00877 typedef typename Type<T7>::_Type _T7;
00878 typedef typename Type<T8>::_Type _T8;
00879 typedef typename Type<T9>::_Type _T9;
00880
00881
00882 typedef _R (*FuncType)(_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9);
00883 typedef _R (CLASS::*MemFuncType)(_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9);
00884
00885
00886 static String GetSignatureID() {
00887 return SignatureString<R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>::GetSignatureID();
00888 }
00889
00890
00891 };
00892
00893
00894
00895
00896
00897
00898
00899
00900 template <typename CLASS, typename R, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>
00901 class MethodSignature<CLASS, R, T0, T1, T2, T3, T4, T5, T6, T7, T8> {
00902
00903
00904 public:
00905
00906 typedef typename Type<R> ::_Type _R;
00907 typedef typename Type<T0>::_Type _T0;
00908 typedef typename Type<T1>::_Type _T1;
00909 typedef typename Type<T2>::_Type _T2;
00910 typedef typename Type<T3>::_Type _T3;
00911 typedef typename Type<T4>::_Type _T4;
00912 typedef typename Type<T5>::_Type _T5;
00913 typedef typename Type<T6>::_Type _T6;
00914 typedef typename Type<T7>::_Type _T7;
00915 typedef typename Type<T8>::_Type _T8;
00916
00917
00918 typedef _R (*FuncType)(_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8);
00919 typedef _R (CLASS::*MemFuncType)(_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8);
00920
00921
00922 static String GetSignatureID() {
00923 return SignatureString<R, T0, T1, T2, T3, T4, T5, T6, T7, T8>::GetSignatureID();
00924 }
00925
00926
00927 };
00928
00929
00930
00931
00932
00933
00934
00935
00936 template <typename CLASS, typename R, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
00937 class MethodSignature<CLASS, R, T0, T1, T2, T3, T4, T5, T6, T7> {
00938
00939
00940 public:
00941
00942 typedef typename Type<R> ::_Type _R;
00943 typedef typename Type<T0>::_Type _T0;
00944 typedef typename Type<T1>::_Type _T1;
00945 typedef typename Type<T2>::_Type _T2;
00946 typedef typename Type<T3>::_Type _T3;
00947 typedef typename Type<T4>::_Type _T4;
00948 typedef typename Type<T5>::_Type _T5;
00949 typedef typename Type<T6>::_Type _T6;
00950 typedef typename Type<T7>::_Type _T7;
00951
00952
00953 typedef _R (*FuncType)(_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7);
00954 typedef _R (CLASS::*MemFuncType)(_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7);
00955
00956
00957 static String GetSignatureID() {
00958 return SignatureString<R, T0, T1, T2, T3, T4, T5, T6, T7>::GetSignatureID();
00959 }
00960
00961
00962 };
00963
00964
00965
00966
00967
00968
00969
00970
00971 template <typename CLASS, typename R, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
00972 class MethodSignature<CLASS, R, T0, T1, T2, T3, T4, T5, T6> {
00973
00974
00975 public:
00976
00977 typedef typename Type<R> ::_Type _R;
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
00986
00987 typedef _R (*FuncType)(_T0, _T1, _T2, _T3, _T4, _T5, _T6);
00988 typedef _R (CLASS::*MemFuncType)(_T0, _T1, _T2, _T3, _T4, _T5, _T6);
00989
00990
00991 static String GetSignatureID() {
00992 return SignatureString<R, T0, T1, T2, T3, T4, T5, T6>::GetSignatureID();
00993 }
00994
00995
00996 };
00997
00998
00999
01000
01001
01002
01003
01004
01005 template <typename CLASS, typename R, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5>
01006 class MethodSignature<CLASS, R, T0, T1, T2, T3, T4, T5> {
01007
01008
01009 public:
01010
01011 typedef typename Type<R> ::_Type _R;
01012 typedef typename Type<T0>::_Type _T0;
01013 typedef typename Type<T1>::_Type _T1;
01014 typedef typename Type<T2>::_Type _T2;
01015 typedef typename Type<T3>::_Type _T3;
01016 typedef typename Type<T4>::_Type _T4;
01017 typedef typename Type<T5>::_Type _T5;
01018
01019
01020 typedef _R (*FuncType)(_T0, _T1, _T2, _T3, _T4, _T5);
01021 typedef _R (CLASS::*MemFuncType)(_T0, _T1, _T2, _T3, _T4, _T5);
01022
01023
01024 static String GetSignatureID() {
01025 return SignatureString<R, T0, T1, T2, T3, T4, T5>::GetSignatureID();
01026 }
01027
01028
01029 };
01030
01031
01032
01033
01034
01035
01036
01037
01038 template <typename CLASS, typename R, typename T0, typename T1, typename T2, typename T3, typename T4>
01039 class MethodSignature<CLASS, R, T0, T1, T2, T3, T4> {
01040
01041
01042 public:
01043
01044 typedef typename Type<R> ::_Type _R;
01045 typedef typename Type<T0>::_Type _T0;
01046 typedef typename Type<T1>::_Type _T1;
01047 typedef typename Type<T2>::_Type _T2;
01048 typedef typename Type<T3>::_Type _T3;
01049 typedef typename Type<T4>::_Type _T4;
01050
01051
01052 typedef _R (*FuncType)(_T0, _T1, _T2, _T3, _T4);
01053 typedef _R (CLASS::*MemFuncType)(_T0, _T1, _T2, _T3, _T4);
01054
01055
01056 static String GetSignatureID() {
01057 return SignatureString<R, T0, T1, T2, T3, T4>::GetSignatureID();
01058 }
01059
01060
01061 };
01062
01063
01064
01065
01066
01067
01068
01069
01070 template <typename CLASS, typename R, typename T0, typename T1, typename T2, typename T3>
01071 class MethodSignature<CLASS, R, T0, T1, T2, T3> {
01072
01073
01074 public:
01075
01076 typedef typename Type<R> ::_Type _R;
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
01082
01083 typedef _R (*FuncType)(_T0, _T1, _T2, _T3);
01084 typedef _R (CLASS::*MemFuncType)(_T0, _T1, _T2, _T3);
01085
01086
01087 static String GetSignatureID() {
01088 return SignatureString<R, T0, T1, T2, T3>::GetSignatureID();
01089 }
01090
01091
01092 };
01093
01094
01095
01096
01097
01098
01099
01100
01101 template <typename CLASS, typename R, typename T0, typename T1, typename T2>
01102 class MethodSignature<CLASS, R, T0, T1, T2> {
01103
01104
01105 public:
01106
01107 typedef typename Type<R> ::_Type _R;
01108 typedef typename Type<T0>::_Type _T0;
01109 typedef typename Type<T1>::_Type _T1;
01110 typedef typename Type<T2>::_Type _T2;
01111
01112
01113 typedef _R (*FuncType)(_T0, _T1, _T2);
01114 typedef _R (CLASS::*MemFuncType)(_T0, _T1, _T2);
01115
01116
01117 static String GetSignatureID() {
01118 return SignatureString<R, T0, T1, T2>::GetSignatureID();
01119 }
01120
01121
01122 };
01123
01124
01125
01126
01127
01128
01129
01130
01131 template <typename CLASS, typename R, typename T0, typename T1>
01132 class MethodSignature<CLASS, R, T0, T1> {
01133
01134
01135 public:
01136
01137 typedef typename Type<R> ::_Type _R;
01138 typedef typename Type<T0>::_Type _T0;
01139 typedef typename Type<T1>::_Type _T1;
01140
01141
01142 typedef _R (*FuncType)(_T0, _T1);
01143 typedef _R (CLASS::*MemFuncType)(_T0, _T1);
01144
01145
01146 static String GetSignatureID() {
01147 return SignatureString<R, T0, T1>::GetSignatureID();
01148 }
01149
01150
01151 };
01152
01153
01154
01155
01156
01157
01158
01159
01160 template <typename CLASS, typename R, typename T0>
01161 class MethodSignature<CLASS, R, T0> {
01162
01163
01164 public:
01165
01166 typedef typename Type<R> ::_Type _R;
01167 typedef typename Type<T0>::_Type _T0;
01168
01169
01170 typedef _R (*FuncType)(_T0);
01171 typedef _R (CLASS::*MemFuncType)(_T0);
01172
01173
01174 static String GetSignatureID() {
01175 return SignatureString<R, T0>::GetSignatureID();
01176 }
01177
01178
01179 };
01180
01181
01182
01183
01184
01185
01186
01187
01188 template <typename CLASS, typename R>
01189 class MethodSignature<CLASS, R> {
01190
01191
01192 public:
01193
01194 typedef typename Type<R>::_Type _R;
01195
01196
01197 typedef _R (*FuncType)();
01198 typedef _R (CLASS::*MemFuncType)();
01199
01200
01201 static String GetSignatureID() {
01202 return SignatureString<R>::GetSignatureID();
01203 }
01204
01205
01206 };
01207
01208
01209 template <typename R = NullType, 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>
01210 class Typelist {
01211 public:
01212 typedef typename Type<R> ::_Type TypeR;
01213 typedef typename Type<T0> ::_Type Type0;
01214 typedef typename Type<T1> ::_Type Type1;
01215 typedef typename Type<T2> ::_Type Type2;
01216 typedef typename Type<T3> ::_Type Type3;
01217 typedef typename Type<T4> ::_Type Type4;
01218 typedef typename Type<T5> ::_Type Type5;
01219 typedef typename Type<T6> ::_Type Type6;
01220 typedef typename Type<T7> ::_Type Type7;
01221 typedef typename Type<T8> ::_Type Type8;
01222 typedef typename Type<T9> ::_Type Type9;
01223 typedef typename Type<T10>::_Type Type10;
01224 typedef typename Type<T11>::_Type Type11;
01225 typedef typename Type<T12>::_Type Type12;
01226 typedef typename Type<T13>::_Type Type13;
01227 typedef typename Type<T14>::_Type Type14;
01228 typedef typename Type<T15>::_Type Type15;
01229 };
01230
01231 template <typename CLASS, typename TYPELIST>
01232 class ClassTypelist {
01233 public:
01234 typedef CLASS Class;
01235 typedef typename TYPELIST::TypeR TypeR;
01236 typedef typename TYPELIST::Type0 Type0;
01237 typedef typename TYPELIST::Type1 Type1;
01238 typedef typename TYPELIST::Type2 Type2;
01239 typedef typename TYPELIST::Type3 Type3;
01240 typedef typename TYPELIST::Type4 Type4;
01241 typedef typename TYPELIST::Type5 Type5;
01242 typedef typename TYPELIST::Type6 Type6;
01243 typedef typename TYPELIST::Type7 Type7;
01244 typedef typename TYPELIST::Type8 Type8;
01245 typedef typename TYPELIST::Type9 Type9;
01246 typedef typename TYPELIST::Type10 Type10;
01247 typedef typename TYPELIST::Type11 Type11;
01248 typedef typename TYPELIST::Type12 Type12;
01249 typedef typename TYPELIST::Type13 Type13;
01250 typedef typename TYPELIST::Type14 Type14;
01251 typedef typename TYPELIST::Type15 Type15;
01252
01253 typedef MethodSignature<Class, TypeR, Type0, Type1, Type2, Type3, Type4, Type5, Type6, Type7,
01254 Type8, Type9, Type10, Type11, Type12, Type13, Type14, Type15> TypeMethodSignature;
01255 };
01256
01257
01258
01259
01260
01261 }
01262
01263
01264 #endif // __PLCORE_SIGNATURE_H__