00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef Reflex_Tools
00013 #define Reflex_Tools
00014
00015
00016 #include "Reflex/Kernel.h"
00017 #include <vector>
00018 #include <typeinfo>
00019 #include <string>
00020
00021 namespace Reflex {
00022
00023 class Function;
00024 class Type;
00025
00026 enum EFUNDAMENTALTYPE {
00027 kCHAR,
00028 kSIGNED_CHAR,
00029 kSHORT_INT,
00030 kINT,
00031 kLONG_INT,
00032 kUNSIGNED_CHAR,
00033 kUNSIGNED_SHORT_INT,
00034 kUNSIGNED_INT,
00035 kUNSIGNED_LONG_INT,
00036 kBOOL,
00037 kFLOAT,
00038 kDOUBLE,
00039 kLONG_DOUBLE,
00040 kVOID,
00041 kLONGLONG,
00042 kULONGLONG,
00043 kNOTFUNDAMENTAL
00044 };
00045
00046
00047 namespace Tools {
00048
00049
00050
00051
00052
00053
00054 RFLX_API EFUNDAMENTALTYPE FundamentalType(const Type& typ);
00055
00056
00057
00058
00059
00060
00061
00062
00063 RFLX_API std::string Demangle(const std::type_info& ti);
00064
00065
00066
00067
00068
00069
00070
00071
00072 RFLX_API void StringSplit(std::vector<std::string>& splitValues,
00073 const std::string& str,
00074 const std::string& delim = ",");
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084 RFLX_API void StringSplitPair(std::string& val1,
00085 std::string& val2,
00086 const std::string& str,
00087 const std::string& delim = ",");
00088
00089
00090
00091
00092
00093
00094 RFLX_API void StringStrip(std::string& str);
00095
00096
00097
00098
00099
00100
00101
00102
00103 RFLX_API std::string StringVec2String(const std::vector<std::string>& vec);
00104
00105
00106 RFLX_API std::string BuildTypeName(Type& t,
00107 unsigned int modifiers);
00108
00109
00110 RFLX_API std::vector<std::string> GenTemplateArgVec(const std::string& name);
00111
00112
00113
00114
00115
00116 RFLX_API void GetTemplateComponents(const std::string& Name,
00117 std::string& templatename,
00118 std::vector<std::string>& args);
00119
00120
00121
00122
00123
00124 RFLX_API size_t GetBasePosition(const std::string& name);
00125
00126
00127 RFLX_API size_t GetFirstScopePosition(const std::string& name, size_t& start);
00128
00129
00130
00131
00132
00133 RFLX_API std::string GetScopeName(const std::string& name,
00134 bool startFromLeft = false);
00135
00136
00137
00138
00139
00140 RFLX_API std::string GetBaseName(const std::string& name,
00141 bool startFromLeft = false);
00142
00143
00144
00145
00146
00147
00148
00149 RFLX_API bool IsTemplated(const char* name);
00150
00151
00152
00153
00154
00155
00156
00157
00158 RFLX_API std::string GetTemplateArguments(const char* name);
00159
00160
00161
00162
00163
00164
00165
00166 RFLX_API std::string GetTemplateName(const char* name);
00167
00168
00169 RFLX_API std::string NormalizeName(const std::string& name);
00170
00171
00172 RFLX_API std::string NormalizeName(const char* name);
00173
00174
00175
00176
00177
00178
00179
00180
00181 template <typename T>
00182 inline std::vector<T>
00183 MakeVector(T t0) {
00184 std::vector<T> v;
00185 v.reserve(1);
00186 v.push_back(t0);
00187 return v;
00188 }
00189
00190
00191 template <typename T>
00192 inline std::vector<T>
00193 MakeVector(T t0,
00194 T t1) {
00195 std::vector<T> v;
00196 v.reserve(2);
00197 v.push_back(t0); v.push_back(t1);
00198 return v;
00199 }
00200
00201
00202 template <typename T>
00203 inline std::vector<T>
00204 MakeVector(T t0,
00205 T t1,
00206 T t2) {
00207 std::vector<T> v;
00208 v.reserve(3);
00209 v.push_back(t0); v.push_back(t1); v.push_back(t2);
00210 return v;
00211 }
00212
00213
00214 template <typename T>
00215 inline std::vector<T>
00216 MakeVector(T t0,
00217 T t1,
00218 T t2,
00219 T t3) {
00220 std::vector<T> v;
00221 v.reserve(4);
00222 v.push_back(t0); v.push_back(t1); v.push_back(t2); v.push_back(t3);
00223 return v;
00224 }
00225
00226
00227 template <typename T>
00228 inline std::vector<T>
00229 MakeVector(T t0,
00230 T t1,
00231 T t2,
00232 T t3,
00233 T t4) {
00234 std::vector<T> v;
00235 v.reserve(5);
00236 v.push_back(t0); v.push_back(t1); v.push_back(t2); v.push_back(t3); v.push_back(t4);
00237 return v;
00238 }
00239
00240
00241 template <typename T>
00242 inline std::vector<T>
00243 MakeVector(T t0,
00244 T t1,
00245 T t2,
00246 T t3,
00247 T t4,
00248 T t5) {
00249 std::vector<T> v;
00250 v.reserve(6);
00251 v.push_back(t0); v.push_back(t1); v.push_back(t2); v.push_back(t3); v.push_back(t4);
00252 v.push_back(t5);
00253 return v;
00254 }
00255
00256
00257 template <typename T>
00258 inline std::vector<T>
00259 MakeVector(T t0,
00260 T t1,
00261 T t2,
00262 T t3,
00263 T t4,
00264 T t5,
00265 T t6) {
00266 std::vector<T> v;
00267 v.reserve(7);
00268 v.push_back(t0); v.push_back(t1); v.push_back(t2); v.push_back(t3); v.push_back(t4);
00269 v.push_back(t5); v.push_back(t6);
00270 return v;
00271 }
00272
00273
00274 template <typename T>
00275 inline std::vector<T>
00276 MakeVector(T t0,
00277 T t1,
00278 T t2,
00279 T t3,
00280 T t4,
00281 T t5,
00282 T t6,
00283 T t7) {
00284 std::vector<T> v;
00285 v.reserve(8);
00286 v.push_back(t0); v.push_back(t1); v.push_back(t2); v.push_back(t3); v.push_back(t4);
00287 v.push_back(t5); v.push_back(t6); v.push_back(t7);
00288 return v;
00289 }
00290
00291
00292 template <typename T>
00293 inline std::vector<T>
00294 MakeVector(T t0,
00295 T t1,
00296 T t2,
00297 T t3,
00298 T t4,
00299 T t5,
00300 T t6,
00301 T t7,
00302 T t8) {
00303 std::vector<T> v;
00304 v.reserve(9);
00305 v.push_back(t0); v.push_back(t1); v.push_back(t2); v.push_back(t3); v.push_back(t4);
00306 v.push_back(t5); v.push_back(t6); v.push_back(t7), v.push_back(t8);
00307 return v;
00308 }
00309
00310
00311 template <typename T>
00312 inline std::vector<T>
00313 MakeVector(T t0,
00314 T t1,
00315 T t2,
00316 T t3,
00317 T t4,
00318 T t5,
00319 T t6,
00320 T t7,
00321 T t8,
00322 T t9) {
00323 std::vector<T> v;
00324 v.reserve(10);
00325 v.push_back(t0); v.push_back(t1); v.push_back(t2); v.push_back(t3); v.push_back(t4);
00326 v.push_back(t5); v.push_back(t6); v.push_back(t7), v.push_back(t8); v.push_back(t9);
00327 return v;
00328 }
00329
00330
00331 template <typename T>
00332 inline std::vector<T>
00333 MakeVector(T t0,
00334 T t1,
00335 T t2,
00336 T t3,
00337 T t4,
00338 T t5,
00339 T t6,
00340 T t7,
00341 T t8,
00342 T t9,
00343 T t10) {
00344 std::vector<T> v;
00345 v.reserve(11);
00346 v.push_back(t0); v.push_back(t1); v.push_back(t2); v.push_back(t3); v.push_back(t4);
00347 v.push_back(t5); v.push_back(t6); v.push_back(t7), v.push_back(t8); v.push_back(t9);
00348 v.push_back(t10);
00349 return v;
00350 }
00351
00352
00353 template <typename T>
00354 inline std::vector<T>
00355 MakeVector(T t0,
00356 T t1,
00357 T t2,
00358 T t3,
00359 T t4,
00360 T t5,
00361 T t6,
00362 T t7,
00363 T t8,
00364 T t9,
00365 T t10,
00366 T t11) {
00367 std::vector<T> v;
00368 v.reserve(12);
00369 v.push_back(t0); v.push_back(t1); v.push_back(t2); v.push_back(t3); v.push_back(t4);
00370 v.push_back(t5); v.push_back(t6); v.push_back(t7), v.push_back(t8); v.push_back(t9);
00371 v.push_back(t10); v.push_back(t11);
00372 return v;
00373 }
00374
00375
00376 template <typename T>
00377 inline std::vector<T>
00378 MakeVector(T t0,
00379 T t1,
00380 T t2,
00381 T t3,
00382 T t4,
00383 T t5,
00384 T t6,
00385 T t7,
00386 T t8,
00387 T t9,
00388 T t10,
00389 T t11,
00390 T t12) {
00391 std::vector<T> v;
00392 v.reserve(13);
00393 v.push_back(t0); v.push_back(t1); v.push_back(t2); v.push_back(t3); v.push_back(t4);
00394 v.push_back(t5); v.push_back(t6); v.push_back(t7), v.push_back(t8); v.push_back(t9);
00395 v.push_back(t10); v.push_back(t11); v.push_back(t12);
00396 return v;
00397 }
00398
00399
00400 template <typename T>
00401 inline std::vector<T>
00402 MakeVector(T t0,
00403 T t1,
00404 T t2,
00405 T t3,
00406 T t4,
00407 T t5,
00408 T t6,
00409 T t7,
00410 T t8,
00411 T t9,
00412 T t10,
00413 T t11,
00414 T t12,
00415 T t13) {
00416 std::vector<T> v;
00417 v.reserve(14);
00418 v.push_back(t0); v.push_back(t1); v.push_back(t2); v.push_back(t3); v.push_back(t4);
00419 v.push_back(t5); v.push_back(t6); v.push_back(t7), v.push_back(t8); v.push_back(t9);
00420 v.push_back(t10); v.push_back(t11); v.push_back(t12); v.push_back(t13);
00421 return v;
00422 }
00423
00424
00425 template <typename T>
00426 inline std::vector<T>
00427 MakeVector(T t0,
00428 T t1,
00429 T t2,
00430 T t3,
00431 T t4,
00432 T t5,
00433 T t6,
00434 T t7,
00435 T t8,
00436 T t9,
00437 T t10,
00438 T t11,
00439 T t12,
00440 T t13,
00441 T t14) {
00442 std::vector<T> v;
00443 v.reserve(15);
00444 v.push_back(t0); v.push_back(t1); v.push_back(t2); v.push_back(t3); v.push_back(t4);
00445 v.push_back(t5); v.push_back(t6); v.push_back(t7), v.push_back(t8); v.push_back(t9);
00446 v.push_back(t10); v.push_back(t11); v.push_back(t12); v.push_back(t13); v.push_back(t14);
00447 return v;
00448 }
00449
00450
00451 template <typename T>
00452 inline std::vector<T>
00453 MakeVector(T t0,
00454 T t1,
00455 T t2,
00456 T t3,
00457 T t4,
00458 T t5,
00459 T t6,
00460 T t7,
00461 T t8,
00462 T t9,
00463 T t10,
00464 T t11,
00465 T t12,
00466 T t13,
00467 T t14,
00468 T t15) {
00469 std::vector<T> v;
00470 v.reserve(16);
00471 v.push_back(t0); v.push_back(t1); v.push_back(t2); v.push_back(t3); v.push_back(t4);
00472 v.push_back(t5); v.push_back(t6); v.push_back(t7), v.push_back(t8); v.push_back(t9);
00473 v.push_back(t10); v.push_back(t11); v.push_back(t12); v.push_back(t13); v.push_back(t14);
00474 v.push_back(t15);
00475 return v;
00476 }
00477
00478
00479 template <typename T>
00480 inline std::vector<T>
00481 MakeVector(T t0,
00482 T t1,
00483 T t2,
00484 T t3,
00485 T t4,
00486 T t5,
00487 T t6,
00488 T t7,
00489 T t8,
00490 T t9,
00491 T t10,
00492 T t11,
00493 T t12,
00494 T t13,
00495 T t14,
00496 T t15,
00497 T t16) {
00498 std::vector<T> v;
00499 v.reserve(17);
00500 v.push_back(t0); v.push_back(t1); v.push_back(t2); v.push_back(t3); v.push_back(t4);
00501 v.push_back(t5); v.push_back(t6); v.push_back(t7), v.push_back(t8); v.push_back(t9);
00502 v.push_back(t10); v.push_back(t11); v.push_back(t12); v.push_back(t13); v.push_back(t14);
00503 v.push_back(t15); v.push_back(t16);
00504 return v;
00505 }
00506
00507
00508 template <typename T>
00509 inline std::vector<T>
00510 MakeVector(T t0,
00511 T t1,
00512 T t2,
00513 T t3,
00514 T t4,
00515 T t5,
00516 T t6,
00517 T t7,
00518 T t8,
00519 T t9,
00520 T t10,
00521 T t11,
00522 T t12,
00523 T t13,
00524 T t14,
00525 T t15,
00526 T t16,
00527 T t17) {
00528 std::vector<T> v;
00529 v.reserve(18);
00530 v.push_back(t0); v.push_back(t1); v.push_back(t2); v.push_back(t3); v.push_back(t4);
00531 v.push_back(t5); v.push_back(t6); v.push_back(t7), v.push_back(t8); v.push_back(t9);
00532 v.push_back(t10); v.push_back(t11); v.push_back(t12); v.push_back(t13); v.push_back(t14);
00533 v.push_back(t15); v.push_back(t16); v.push_back(t17);
00534 return v;
00535 }
00536
00537
00538 template <typename T>
00539 inline std::vector<T>
00540 MakeVector(T t0,
00541 T t1,
00542 T t2,
00543 T t3,
00544 T t4,
00545 T t5,
00546 T t6,
00547 T t7,
00548 T t8,
00549 T t9,
00550 T t10,
00551 T t11,
00552 T t12,
00553 T t13,
00554 T t14,
00555 T t15,
00556 T t16,
00557 T t17,
00558 T t18) {
00559 std::vector<T> v;
00560 v.reserve(19);
00561 v.push_back(t0); v.push_back(t1); v.push_back(t2); v.push_back(t3); v.push_back(t4);
00562 v.push_back(t5); v.push_back(t6); v.push_back(t7), v.push_back(t8); v.push_back(t9);
00563 v.push_back(t10); v.push_back(t11); v.push_back(t12); v.push_back(t13); v.push_back(t14);
00564 v.push_back(t15); v.push_back(t16); v.push_back(t17); v.push_back(t18);
00565 return v;
00566 }
00567
00568
00569 template <typename T>
00570 inline std::vector<T>
00571 MakeVector(T t0,
00572 T t1,
00573 T t2,
00574 T t3,
00575 T t4,
00576 T t5,
00577 T t6,
00578 T t7,
00579 T t8,
00580 T t9,
00581 T t10,
00582 T t11,
00583 T t12,
00584 T t13,
00585 T t14,
00586 T t15,
00587 T t16,
00588 T t17,
00589 T t18,
00590 T t19) {
00591 std::vector<T> v;
00592 v.reserve(20);
00593 v.push_back(t0); v.push_back(t1); v.push_back(t2); v.push_back(t3); v.push_back(t4);
00594 v.push_back(t5); v.push_back(t6); v.push_back(t7), v.push_back(t8); v.push_back(t9);
00595 v.push_back(t10); v.push_back(t11); v.push_back(t12); v.push_back(t13); v.push_back(t14);
00596 v.push_back(t15); v.push_back(t16); v.push_back(t17); v.push_back(t18); v.push_back(t19);
00597 return v;
00598 }
00599
00600
00601 template <typename T>
00602 inline std::vector<T>
00603 MakeVector(T t0,
00604 T t1,
00605 T t2,
00606 T t3,
00607 T t4,
00608 T t5,
00609 T t6,
00610 T t7,
00611 T t8,
00612 T t9,
00613 T t10,
00614 T t11,
00615 T t12,
00616 T t13,
00617 T t14,
00618 T t15,
00619 T t16,
00620 T t17,
00621 T t18,
00622 T t19,
00623 T t20) {
00624 std::vector<T> v;
00625 v.reserve(21);
00626 v.push_back(t0); v.push_back(t1); v.push_back(t2); v.push_back(t3); v.push_back(t4);
00627 v.push_back(t5); v.push_back(t6); v.push_back(t7), v.push_back(t8); v.push_back(t9);
00628 v.push_back(t10); v.push_back(t11); v.push_back(t12); v.push_back(t13); v.push_back(t14);
00629 v.push_back(t15); v.push_back(t16); v.push_back(t17); v.push_back(t18); v.push_back(t19);
00630 v.push_back(t20);
00631 return v;
00632 }
00633
00634
00635 template <typename T>
00636 inline std::vector<T>
00637 MakeVector(T t0,
00638 T t1,
00639 T t2,
00640 T t3,
00641 T t4,
00642 T t5,
00643 T t6,
00644 T t7,
00645 T t8,
00646 T t9,
00647 T t10,
00648 T t11,
00649 T t12,
00650 T t13,
00651 T t14,
00652 T t15,
00653 T t16,
00654 T t17,
00655 T t18,
00656 T t19,
00657 T t20,
00658 T t21) {
00659 std::vector<T> v;
00660 v.reserve(22);
00661 v.push_back(t0); v.push_back(t1); v.push_back(t2); v.push_back(t3); v.push_back(t4);
00662 v.push_back(t5); v.push_back(t6); v.push_back(t7), v.push_back(t8); v.push_back(t9);
00663 v.push_back(t10); v.push_back(t11); v.push_back(t12); v.push_back(t13); v.push_back(t14);
00664 v.push_back(t15); v.push_back(t16); v.push_back(t17); v.push_back(t18); v.push_back(t19);
00665 v.push_back(t20); v.push_back(t21);
00666 return v;
00667 }
00668
00669
00670 template <typename T>
00671 inline std::vector<T>
00672 MakeVector(T t0,
00673 T t1,
00674 T t2,
00675 T t3,
00676 T t4,
00677 T t5,
00678 T t6,
00679 T t7,
00680 T t8,
00681 T t9,
00682 T t10,
00683 T t11,
00684 T t12,
00685 T t13,
00686 T t14,
00687 T t15,
00688 T t16,
00689 T t17,
00690 T t18,
00691 T t19,
00692 T t20,
00693 T t21,
00694 T t22) {
00695 std::vector<T> v;
00696 v.reserve(23);
00697 v.push_back(t0); v.push_back(t1); v.push_back(t2); v.push_back(t3); v.push_back(t4);
00698 v.push_back(t5); v.push_back(t6); v.push_back(t7), v.push_back(t8); v.push_back(t9);
00699 v.push_back(t10); v.push_back(t11); v.push_back(t12); v.push_back(t13); v.push_back(t14);
00700 v.push_back(t15); v.push_back(t16); v.push_back(t17); v.push_back(t18); v.push_back(t19);
00701 v.push_back(t20); v.push_back(t21); v.push_back(t22);
00702 return v;
00703 }
00704
00705
00706 template <typename T>
00707 inline std::vector<T>
00708 MakeVector(T t0,
00709 T t1,
00710 T t2,
00711 T t3,
00712 T t4,
00713 T t5,
00714 T t6,
00715 T t7,
00716 T t8,
00717 T t9,
00718 T t10,
00719 T t11,
00720 T t12,
00721 T t13,
00722 T t14,
00723 T t15,
00724 T t16,
00725 T t17,
00726 T t18,
00727 T t19,
00728 T t20,
00729 T t21,
00730 T t22,
00731 T t23) {
00732 std::vector<T> v;
00733 v.reserve(24);
00734 v.push_back(t0); v.push_back(t1); v.push_back(t2); v.push_back(t3); v.push_back(t4);
00735 v.push_back(t5); v.push_back(t6); v.push_back(t7), v.push_back(t8); v.push_back(t9);
00736 v.push_back(t10); v.push_back(t11); v.push_back(t12); v.push_back(t13); v.push_back(t14);
00737 v.push_back(t15); v.push_back(t16); v.push_back(t17); v.push_back(t18); v.push_back(t19);
00738 v.push_back(t20); v.push_back(t21); v.push_back(t22); v.push_back(t23);
00739 return v;
00740 }
00741
00742
00743 template <typename T>
00744 inline std::vector<T>
00745 MakeVector(T t0,
00746 T t1,
00747 T t2,
00748 T t3,
00749 T t4,
00750 T t5,
00751 T t6,
00752 T t7,
00753 T t8,
00754 T t9,
00755 T t10,
00756 T t11,
00757 T t12,
00758 T t13,
00759 T t14,
00760 T t15,
00761 T t16,
00762 T t17,
00763 T t18,
00764 T t19,
00765 T t20,
00766 T t21,
00767 T t22,
00768 T t23,
00769 T t24) {
00770 std::vector<T> v;
00771 v.reserve(25);
00772 v.push_back(t0); v.push_back(t1); v.push_back(t2); v.push_back(t3); v.push_back(t4);
00773 v.push_back(t5); v.push_back(t6); v.push_back(t7), v.push_back(t8); v.push_back(t9);
00774 v.push_back(t10); v.push_back(t11); v.push_back(t12); v.push_back(t13); v.push_back(t14);
00775 v.push_back(t15); v.push_back(t16); v.push_back(t17); v.push_back(t18); v.push_back(t19);
00776 v.push_back(t20); v.push_back(t21); v.push_back(t22); v.push_back(t23); v.push_back(t24);
00777 return v;
00778 }
00779
00780
00781 template <typename T>
00782 inline std::vector<T>
00783 MakeVector(T t0,
00784 T t1,
00785 T t2,
00786 T t3,
00787 T t4,
00788 T t5,
00789 T t6,
00790 T t7,
00791 T t8,
00792 T t9,
00793 T t10,
00794 T t11,
00795 T t12,
00796 T t13,
00797 T t14,
00798 T t15,
00799 T t16,
00800 T t17,
00801 T t18,
00802 T t19,
00803 T t20,
00804 T t21,
00805 T t22,
00806 T t23,
00807 T t24,
00808 T t25) {
00809 std::vector<T> v;
00810 v.reserve(26);
00811 v.push_back(t0); v.push_back(t1); v.push_back(t2); v.push_back(t3); v.push_back(t4);
00812 v.push_back(t5); v.push_back(t6); v.push_back(t7), v.push_back(t8); v.push_back(t9);
00813 v.push_back(t10); v.push_back(t11); v.push_back(t12); v.push_back(t13); v.push_back(t14);
00814 v.push_back(t15); v.push_back(t16); v.push_back(t17); v.push_back(t18); v.push_back(t19);
00815 v.push_back(t20); v.push_back(t21); v.push_back(t22); v.push_back(t23); v.push_back(t24);
00816 v.push_back(t25);
00817 return v;
00818 }
00819
00820
00821 template <typename T>
00822 inline std::vector<T>
00823 MakeVector(T t0,
00824 T t1,
00825 T t2,
00826 T t3,
00827 T t4,
00828 T t5,
00829 T t6,
00830 T t7,
00831 T t8,
00832 T t9,
00833 T t10,
00834 T t11,
00835 T t12,
00836 T t13,
00837 T t14,
00838 T t15,
00839 T t16,
00840 T t17,
00841 T t18,
00842 T t19,
00843 T t20,
00844 T t21,
00845 T t22,
00846 T t23,
00847 T t24,
00848 T t25,
00849 T t26) {
00850 std::vector<T> v;
00851 v.reserve(27);
00852 v.push_back(t0); v.push_back(t1); v.push_back(t2); v.push_back(t3); v.push_back(t4);
00853 v.push_back(t5); v.push_back(t6); v.push_back(t7), v.push_back(t8); v.push_back(t9);
00854 v.push_back(t10); v.push_back(t11); v.push_back(t12); v.push_back(t13); v.push_back(t14);
00855 v.push_back(t15); v.push_back(t16); v.push_back(t17); v.push_back(t18); v.push_back(t19);
00856 v.push_back(t20); v.push_back(t21); v.push_back(t22); v.push_back(t23); v.push_back(t24);
00857 v.push_back(t25); v.push_back(t26);
00858 return v;
00859 }
00860
00861
00862 template <typename T>
00863 inline std::vector<T>
00864 MakeVector(T t0,
00865 T t1,
00866 T t2,
00867 T t3,
00868 T t4,
00869 T t5,
00870 T t6,
00871 T t7,
00872 T t8,
00873 T t9,
00874 T t10,
00875 T t11,
00876 T t12,
00877 T t13,
00878 T t14,
00879 T t15,
00880 T t16,
00881 T t17,
00882 T t18,
00883 T t19,
00884 T t20,
00885 T t21,
00886 T t22,
00887 T t23,
00888 T t24,
00889 T t25,
00890 T t26,
00891 T t27) {
00892 std::vector<T> v;
00893 v.reserve(28);
00894 v.push_back(t0); v.push_back(t1); v.push_back(t2); v.push_back(t3); v.push_back(t4);
00895 v.push_back(t5); v.push_back(t6); v.push_back(t7), v.push_back(t8); v.push_back(t9);
00896 v.push_back(t10); v.push_back(t11); v.push_back(t12); v.push_back(t13); v.push_back(t14);
00897 v.push_back(t15); v.push_back(t16); v.push_back(t17); v.push_back(t18); v.push_back(t19);
00898 v.push_back(t20); v.push_back(t21); v.push_back(t22); v.push_back(t23); v.push_back(t24);
00899 v.push_back(t25); v.push_back(t26); v.push_back(t27);
00900 return v;
00901 }
00902
00903
00904 template <typename T>
00905 inline std::vector<T>
00906 MakeVector(T t0,
00907 T t1,
00908 T t2,
00909 T t3,
00910 T t4,
00911 T t5,
00912 T t6,
00913 T t7,
00914 T t8,
00915 T t9,
00916 T t10,
00917 T t11,
00918 T t12,
00919 T t13,
00920 T t14,
00921 T t15,
00922 T t16,
00923 T t17,
00924 T t18,
00925 T t19,
00926 T t20,
00927 T t21,
00928 T t22,
00929 T t23,
00930 T t24,
00931 T t25,
00932 T t26,
00933 T t27,
00934 T t28) {
00935 std::vector<T> v;
00936 v.reserve(29);
00937 v.push_back(t0); v.push_back(t1); v.push_back(t2); v.push_back(t3); v.push_back(t4);
00938 v.push_back(t5); v.push_back(t6); v.push_back(t7), v.push_back(t8); v.push_back(t9);
00939 v.push_back(t10); v.push_back(t11); v.push_back(t12); v.push_back(t13); v.push_back(t14);
00940 v.push_back(t15); v.push_back(t16); v.push_back(t17); v.push_back(t18); v.push_back(t19);
00941 v.push_back(t20); v.push_back(t21); v.push_back(t22); v.push_back(t23); v.push_back(t24);
00942 v.push_back(t25); v.push_back(t26); v.push_back(t27); v.push_back(t28);
00943 return v;
00944 }
00945
00946
00947 template <typename T>
00948 inline std::vector<T>
00949 MakeVector(T t0,
00950 T t1,
00951 T t2,
00952 T t3,
00953 T t4,
00954 T t5,
00955 T t6,
00956 T t7,
00957 T t8,
00958 T t9,
00959 T t10,
00960 T t11,
00961 T t12,
00962 T t13,
00963 T t14,
00964 T t15,
00965 T t16,
00966 T t17,
00967 T t18,
00968 T t19,
00969 T t20,
00970 T t21,
00971 T t22,
00972 T t23,
00973 T t24,
00974 T t25,
00975 T t26,
00976 T t27,
00977 T t28,
00978 T t29) {
00979 std::vector<T> v;
00980 v.reserve(30);
00981 v.push_back(t0); v.push_back(t1); v.push_back(t2); v.push_back(t3); v.push_back(t4);
00982 v.push_back(t5); v.push_back(t6); v.push_back(t7), v.push_back(t8); v.push_back(t9);
00983 v.push_back(t10); v.push_back(t11); v.push_back(t12); v.push_back(t13); v.push_back(t14);
00984 v.push_back(t15); v.push_back(t16); v.push_back(t17); v.push_back(t18); v.push_back(t19);
00985 v.push_back(t20); v.push_back(t21); v.push_back(t22); v.push_back(t23); v.push_back(t24);
00986 v.push_back(t25); v.push_back(t26); v.push_back(t27); v.push_back(t28); v.push_back(t29);
00987 return v;
00988 }
00989
00990
00991 template <typename T>
00992 inline std::vector<T>
00993 MakeVector(T t0,
00994 T t1,
00995 T t2,
00996 T t3,
00997 T t4,
00998 T t5,
00999 T t6,
01000 T t7,
01001 T t8,
01002 T t9,
01003 T t10,
01004 T t11,
01005 T t12,
01006 T t13,
01007 T t14,
01008 T t15,
01009 T t16,
01010 T t17,
01011 T t18,
01012 T t19,
01013 T t20,
01014 T t21,
01015 T t22,
01016 T t23,
01017 T t24,
01018 T t25,
01019 T t26,
01020 T t27,
01021 T t28,
01022 T t29,
01023 T t30) {
01024 std::vector<T> v;
01025 v.reserve(31);
01026 v.push_back(t0); v.push_back(t1); v.push_back(t2); v.push_back(t3); v.push_back(t4);
01027 v.push_back(t5); v.push_back(t6); v.push_back(t7), v.push_back(t8); v.push_back(t9);
01028 v.push_back(t10); v.push_back(t11); v.push_back(t12); v.push_back(t13); v.push_back(t14);
01029 v.push_back(t15); v.push_back(t16); v.push_back(t17); v.push_back(t18); v.push_back(t19);
01030 v.push_back(t20); v.push_back(t21); v.push_back(t22); v.push_back(t23); v.push_back(t24);
01031 v.push_back(t25); v.push_back(t26); v.push_back(t27); v.push_back(t28); v.push_back(t29);
01032 v.push_back(t30);
01033 return v;
01034 }
01035
01036
01037 template <typename T>
01038 inline std::vector<T>
01039 MakeVector(T t0,
01040 T t1,
01041 T t2,
01042 T t3,
01043 T t4,
01044 T t5,
01045 T t6,
01046 T t7,
01047 T t8,
01048 T t9,
01049 T t10,
01050 T t11,
01051 T t12,
01052 T t13,
01053 T t14,
01054 T t15,
01055 T t16,
01056 T t17,
01057 T t18,
01058 T t19,
01059 T t20,
01060 T t21,
01061 T t22,
01062 T t23,
01063 T t24,
01064 T t25,
01065 T t26,
01066 T t27,
01067 T t28,
01068 T t29,
01069 T t30,
01070 T t31) {
01071 std::vector<T> v;
01072 v.reserve(32);
01073 v.push_back(t0); v.push_back(t1); v.push_back(t2); v.push_back(t3); v.push_back(t4);
01074 v.push_back(t5); v.push_back(t6); v.push_back(t7), v.push_back(t8); v.push_back(t9);
01075 v.push_back(t10); v.push_back(t11); v.push_back(t12); v.push_back(t13); v.push_back(t14);
01076 v.push_back(t15); v.push_back(t16); v.push_back(t17); v.push_back(t18); v.push_back(t19);
01077 v.push_back(t20); v.push_back(t21); v.push_back(t22); v.push_back(t23); v.push_back(t24);
01078 v.push_back(t25); v.push_back(t26); v.push_back(t27); v.push_back(t28); v.push_back(t29);
01079 v.push_back(t30); v.push_back(t31);
01080 return v;
01081 }
01082
01083
01084 template <typename T> class CheckPointer {
01085 public:
01086 static void*
01087 Get(const T& value) { return (void*) &value; }
01088
01089 };
01090
01091 template <typename T> class CheckPointer<T*> {
01092 public:
01093 static void*
01094 Get(const T& value) { return (void*) value; }
01095
01096 };
01097
01098 }
01099 }
01100
01101 #endif // Reflex_Tools