00001
00006 #ifndef ITERATE_H
00007 #define ITERATE_H
00008
00015 #define array_foreach(type,instance, label ) \
00016 type* label = (instance);\
00017 type* ppConcat(endof_,label) = (label+countof(instance));\
00018 for ( ; label < ppConcat(endof_,label); ++label )
00019
00027 #define array_foreach_const(type,instance, label ) \
00028 const type* label = (const type*)(instance);\
00029 const type* ppConcat(endof_,label) = (const type*)(label+countof(instance));\
00030 for ( ; label < ppConcat(endof_,label); ++label )
00031
00039 #define array_foreach_reverse(type,instance, label ) \
00040 type* label = ((instance)+countof(instance));\
00041 while ( label-- > (instance) )
00042
00050 #define array_foreach_const_reverse(type,instance, label ) \
00051 const type* label = (const type*)((instance)+countof(instance));\
00052 while ( label-- > (instance) )
00053
00054
00062 #define pointer_foreach(type,instance,count, label ) \
00063 type* label = (instance);\
00064 type* ppConcat(endof_,label) = label+(count);\
00065 for ( ; label < ppConcat(endof_,label); ++label )
00066
00075 #define pointer_foreach_const(type,instance,count, label ) \
00076 const type* label = (const type*)(instance);\
00077 const type* ppConcat(endof_,label) = (const type*)(label+(count)); \
00078 for ( ; label < ppConcat(endof_,label); ++label )
00079
00088 #define pointer_foreach_reverse(type,instance,count, label ) \
00089 type* label = ((instance)+(count));\
00090 while ( label-- > (instance) )
00091
00100 #define pointer_foreach_const_reverse(type,instance, count, label ) \
00101 const type* label = (const type*)((instance)+(count));\
00102 while ( label-- > (const type*)(instance) )
00103
00104
00105 #ifdef __cplusplus
00106
00112 #define stl_foreach(class,instance, label ) \
00113 class::iterator label = (instance).begin();\
00114 for( class::const_iterator label##_end = (instance).end(); label != label##_end; ++label )
00115
00123 #define stl_foreach_const(class,instance, label ) \
00124 class::const_iterator label = (instance).begin();\
00125 for( class::const_iterator label##_end = (instance).end(); label != label##_end; ++label )
00126
00134 #define stl_foreach_reverse(class,instance, label ) \
00135 class::reverse_iterator label = (instance).rbegin();\
00136 for( class::const_reverse_iterator label##_end = (instance).rend(); label != label##_end; ++label )
00137
00146 #define stl_foreach_const_reverse(class,instance,count, label ) \
00147 class::const_reverse_iterator label = (instance).rbegin();\
00148 for( class::const_reverse_iterator label##_end = (instance).rend(); label != label##_end; ++label )
00149 #endif
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159
00160
00170 #define exponents_2( p1,p2, begin,end )\
00171 for( (p1) = (begin); (p1) < (end); ++(p1) )\
00172 for( (p2) = (begin); (p2) < (end); ++(p2) )\
00173
00174
00179 #define exponents_2_calc(begin,end) ( ((end)-(begin)) * ((end)-(begin)) )
00180
00191 #define arrangements_2( p1,p2, begin,end )\
00192 exponents_2( p1,p2, begin,end )\
00193 if( (p1) != (p2) )
00194
00200 #define arrangements_2_calc(begin,end) ( ((end)-(begin)) * ((end)-(begin)-1) )
00201
00211 #define combinations_2( p1,p2, begin,end )\
00212 for( (p1) = (begin); (p1) < ((end)-1); ++(p1) )\
00213 for( (p2) = (p1)+1; (p2) < (end); ++(p2) )
00214
00220 #define combinations_2_calc(begin,end) ( ((end)-(begin)) * ((end)-(begin)-1) / (2) )
00221
00222
00223
00232 #define exponents_3( p1,p2,p3, begin,end )\
00233 for( (p1) = (begin); (p1) < (end); ++(p1) )\
00234 for( (p2) = (begin); (p2) < (end); ++(p2) )\
00235 for( (p3) = (begin); (p3) < (end); ++(p3) )\
00236
00237
00242 #define exponents_3_calc(begin,end) ( ((end)-(begin)) * ((end)-(begin)) * ((end)-(begin)) )
00243
00253 #define arrangements_3( p1,p2,p3, begin,end )\
00254 exponents_3( p1,p2,p3, begin,end )\
00255 if( ppCombination3( &&, ppNOTEQUAL, p1,p2,p3 ) )
00256
00257
00263 #define arrangements_3_calc(begin,end) ( ((end)-(begin)) * ((end)-(begin)-1) * ((end)-(begin)-2) )
00264
00273 #define combinations_3( p1,p2,p3, begin,end )\
00274 for( (p1) = (begin); (p1) < ((end)-2); ++(p1) )\
00275 for( (p2) = (p1)+1; (p2) < ((end)-1); ++(p2) )\
00276 for( (p3) = (p2)+1; (p3) < (end); ++(p3) )
00277
00283 #define combinations_3_calc(begin,end) ( ((end)-(begin)) * ((end)-(begin)-1) * ((end)-(begin)-2) / (3*2) )
00284
00285
00286
00295 #define exponents_4( p1,p2,p3,p4, begin,end )\
00296 for( (p1) = (begin); (p1) < (end); ++(p1) )\
00297 for( (p2) = (begin); (p2) < (end); ++(p2) )\
00298 for( (p3) = (begin); (p3) < (end); ++(p3) )\
00299 for( (p4) = (begin); (p4) < (end); ++(p4) )\
00300
00301
00306 #define exponents_4_calc(begin,end) ( ((end)-(begin)) * ((end)-(begin)) * ((end)-(begin)) * ((end)-(begin)) )
00307
00317 #define arrangements_4( p1,p2,p3,p4, begin,end )\
00318 exponents_4( p1,p2,p3,p4, begin,end )\
00319 if( ppCombination4( &&, ppNOTEQUAL, p1,p2,p3,p4 ) )
00320
00321
00327 #define arrangements_4_calc(begin,end) (((end)-(begin))*(((end)-(begin))-1)*(((end)-(begin))-2)*(((end)-(begin))-3))
00328
00329
00338 #define combinations_4( p1,p2,p3,p4, begin,end )\
00339 for( (p1) = (begin); (p1) < ((end)-3); ++(p1) )\
00340 for( (p2) = (p1)+1; (p2) < ((end)-2); ++(p2) )\
00341 for( (p3) = (p2)+1; (p3) < ((end)-1); ++(p3) )\
00342 for( (p4) = (p3)+1; (p4) < (end); ++(p4) )
00343
00349 #define combinations_4_calc(begin,end) ((((end)-(begin))*(((end)-(begin))-1)*(((end)-(begin))-2)*(((end)-(begin))-3))/(4*3*2))
00350
00351
00360 #define exponents_5( p1,p2,p3,p4,p5, begin,end )\
00361 for( (p1) = (begin); (p1) < (end); ++(p1) )\
00362 for( (p2) = (begin); (p2) < (end); ++(p2) )\
00363 for( (p3) = (begin); (p3) < (end); ++(p3) )\
00364 for( (p4) = (begin); (p4) < (end); ++(p4) )\
00365 for( (p5) = (begin); (p5) < (end); ++(p5) )\
00366
00367
00372 #define exponents_5_calc(begin,end) ( ((end)-(begin)) * ((end)-(begin)) * ((end)-(begin)) * ((end)-(begin)) * ((end)-(begin)) )
00373
00383 #define arrangements_5( p1,p2,p3,p4,p5, begin,end )\
00384 exponents_5( p1,p2,p3,p4,p5, begin,end )\
00385 if( ppCombination5( &&, ppNOTEQUAL, p1,p2,p3,p4,p5 ) )
00386
00387
00393 #define arrangements_5_calc(begin,end) (((end)-(begin))*(((end)-(begin))-1)*(((end)-(begin))-2)*(((end)-(begin))-3)*(((end)-(begin))-4))
00394
00403 #define combinations_5( p1,p2,p3,p4,p5, begin,end )\
00404 for( (p1) = (begin); (p1) < ((end)-4); ++(p1) )\
00405 for( (p2) = (p1)+1; (p2) < ((end)-3); ++(p2) )\
00406 for( (p3) = (p2)+1; (p3) < ((end)-2); ++(p3) )\
00407 for( (p4) = (p3)+1; (p4) < ((end)-1); ++(p4) )\
00408 for( (p5) = (p4)+1; (p5) < (end); ++(p5) )
00409
00415 #define combinations_5_calc(begin,end) ((((end)-(begin))*(((end)-(begin))-1)*(((end)-(begin))-2)*(((end)-(begin))-3)*(((end)-(begin))-4))/(5*4*3*2))
00416
00417
00424 #define ppDuff( unroll, count, op ) ppConcat(ppDuff,unroll)(count,op)
00425 #define ppDuff1 ppDuff4
00426 #define ppDuff2 ppDuff4
00427 #define ppDuffBegin(op) op;
00428 #define ppDuffBlock(op,start) case start+3: op; case start+2: op; case start+1: op; case start: op;
00429 #define ppDuffMore(op,start) ppDuffBlock(op,start+12) ppDuffBlock(op,start+8) ppDuffBlock(op,start+4) ppDuffBlock(op,start);
00430 #define ppDuffSilly(op,start) ppDuffMore(op,start+48) ppDuffMore(op,start+32) ppDuffMore(op,start+16) ppDuffMore(op,start)
00431 #define ppDuffEnd(op) case 3: op; case 2: op; case 1: op; case 0:
00432 #define ppDuff4( count, op )\
00433 {\
00434 size_t remain = (count);\
00435 size_t jump = remain & 0x03;\
00436 remain >>= 2;\
00437 switch( jump )\
00438 {\
00439 do {\
00440 ppDuffBegin(op);\
00441 ppDuffEnd(op);\
00442 } while( remain-- );\
00443 }\
00444 }
00445 #define ppDuff8( count, op )\
00446 {\
00447 size_t remain = (count);\
00448 size_t jump = remain & 0x07;\
00449 remain >>= 3;\
00450 switch( jump )\
00451 {\
00452 do {\
00453 ppDuffBegin(op)\
00454 ppDuffBlock(op,4)\
00455 ppDuffEnd(op);\
00456 } while( remain-- );\
00457 }\
00458 }
00459 #define ppDuff16( count, op )\
00460 {\
00461 size_t remain = (count);\
00462 size_t jump = remain & 0x0f;\
00463 remain >>= 4;\
00464 switch( jump )\
00465 {\
00466 do {\
00467 ppDuffBegin(op)\
00468 ppDuffBlock(op,12)\
00469 ppDuffBlock(op,8)\
00470 ppDuffBlock(op,4)\
00471 ppDuffEnd(op);\
00472 } while( remain-- );\
00473 }\
00474 }
00475 #define ppDuff32( count, op )\
00476 {\
00477 size_t remain = (count);\
00478 size_t jump = remain & 0x1f;\
00479 remain >>= 5;\
00480 switch( jump )\
00481 {\
00482 do {\
00483 ppDuffBegin(op)\
00484 ppDuffMore(op,16) \
00485 ppDuffBlock(op,12) ppDuffBlock(op,8) ppDuffBlock(op,4) ppDuffEnd(op);\
00486 } while( remain-- );\
00487 }\
00488 }
00489 #define ppDuff64( count, op )\
00490 {\
00491 size_t remain = (count);\
00492 size_t jump = remain & 0x3f;\
00493 remain >>= 6;\
00494 switch( jump )\
00495 {\
00496 do {\
00497 ppDuffBegin(op)\
00498 ppDuffMore(op,48)\
00499 ppDuffMore(op,32)\
00500 ppDuffMore(op,16)\
00501 ppDuffBlock(op,12) ppDuffBlock(op,8) ppDuffBlock(op,4) ppDuffEnd(op);\
00502 } while( remain-- );\
00503 }\
00504 }
00505 #define ppDuff128( count, op )\
00506 {\
00507 size_t remain = (count);\
00508 size_t jump = remain & 0x7f;\
00509 remain >>= 7;\
00510 switch( jump )\
00511 {\
00512 do {\
00513 ppDuffBegin(op)\
00514 ppDuffSilly(op,64)\
00515 ppDuffMore(op,48)\
00516 ppDuffMore(op,32)\
00517 ppDuffMore(op,16)\
00518 ppDuffBlock(op,12) ppDuffBlock(op,8) ppDuffBlock(op,4) ppDuffEnd(op);\
00519 } while( remain-- );\
00520 }\
00521 }
00522 #define ppDuff256( count, op )\
00523 {\
00524 size_t remain = (count);\
00525 size_t jump = remain & 0xff;\
00526 remain >>= 8;\
00527 switch( jump )\
00528 {\
00529 do {\
00530 ppDuffBegin(op)\
00531 ppDuffSilly(op,192)\
00532 ppDuffSilly(op,128)\
00533 ppDuffSilly(op,64)\
00534 ppDuffMore(op,48)\
00535 ppDuffMore(op,32)\
00536 ppDuffMore(op,16)\
00537 ppDuffBlock(op,12) ppDuffBlock(op,8) ppDuffBlock(op,4) ppDuffEnd(op);\
00538 } while( remain-- );\
00539 }\
00540 }
00541
00542
00543
00544
00545
00546
00547
00548
00549
00550
00551 #define ppAND(a,b) ((a) && (b))
00552 #define ppOR(a,b) ((a) || (b))
00553 #define ppEQUAL(a,b) ((a) == (b))
00554 #define ppNOTEQUAL(a,b) ((a) != (b))
00555 #define ppGREATER(a,b) ((a) > (b))
00556 #define ppLESSTHAN(a,b) ((a) < (b))
00557 #define ppGREATEREQUAL(a,b) ((a) >= (b))
00558 #define ppLESSTHANEQUAL(a,b) ((a) <= (b))
00559
00560
00568 #define ppCombination3( op, fn, a,b,c ) \
00569 ( \
00570 fn((a),(b)) op fn((a),(c)) op \
00571 fn((b),(c)) \
00572 )
00573
00574 #define ppCombination2( op, fn, a,b ) fn((a),(b))
00575 #define ppCombination1( op, fn, a ) (a)
00576
00577 #define ppCombination4( op, fn, a,b,c,d ) \
00578 ( \
00579 fn((a),(b)) op fn((a),(c)) op fn((a),(d)) op \
00580 ppCombination3( op, fn, b,c,d )\
00581 )
00582
00583 #define ppCombination5( op, fn, a,b,c,d,e ) \
00584 ( \
00585 fn((a),(b)) op fn((a),(c)) op fn((a),(d)) op fn((a),(e)) op \
00586 ppCombination4( op, fn, b,c,d,e )\
00587 )
00588
00589 #define ppCombination6( op, fn, a,b,c,d,e,f ) \
00590 ( \
00591 fn((a),(b)) op fn((a),(c)) op fn((a),(d)) op fn((a),(e)) op \
00592 fn((a),(f)) op \
00593 ppCombination5( op, fn, b,c,d,e,f )\
00594 )
00595
00596 #define ppCombination7( op, fn, a,b,c,d,e,f,g ) \
00597 ( \
00598 fn((a),(b)) op fn((a),(c)) op fn((a),(d)) op fn((a),(e)) op \
00599 fn((a),(f)) op fn((a),(g)) op \
00600 ppCombination6( op, fn, b,c,d,e,f,g )\
00601 )
00602
00603 #define ppCombination8( op, fn, a,b,c,d,e,f,g,h ) \
00604 ( \
00605 fn((a),(b)) op fn((a),(c)) op fn((a),(d)) op fn((a),(e)) op \
00606 fn((a),(f)) op fn((a),(g)) op fn((a),(h)) op \
00607 ppCombination7( op, fn, b,c,d,e,f,g,h )\
00608 )
00609
00610 #define ppCombination9( op, fn, a,b,c,d,e,f,g,h,i ) \
00611 ( \
00612 fn((a),(b)) op fn((a),(c)) op fn((a),(d)) op fn((a),(e)) op \
00613 fn((a),(f)) op fn((a),(g)) op fn((a),(h)) op fn((a),(i)) op \
00614 ppCombination8( op, fn, b,c,d,e,f,g,h,i )\
00615 )
00616
00617 #define ppCombination10( op, fn, a,b,c,d,e,f,g,h,i,j ) \
00618 ( \
00619 fn((a),(b)) op fn((a),(c)) op fn((a),(d)) op fn((a),(e)) op \
00620 fn((a),(f)) op fn((a),(g)) op fn((a),(h)) op fn((a),(i)) op \
00621 fn((a),(j)) op \
00622 ppCombination9( op, fn, b,c,d,e,f,g,h,i,j )\
00623 )
00624
00625
00626
00627
00628
00629
00630
00631
00632 #define ppOps( op, count ) ppConcat( _ppOP, ppToken(count) )(op)
00633 #define _ppOP0(op)
00634 #define _ppOP1(op) op
00635 #define _ppOP2(op) op op
00636 #define _ppOP3(op) op op op
00637 #define _ppOP4(op) op op op op
00638 #define _ppOP5(op) op op op op op
00639 #define _ppOP6(op) op op op op op op
00640 #define _ppOP7(op) op op op op op op op
00641 #define _ppOP8(op) op op op op op op op op
00642 #define _ppOP9(op) op op op op op op op op op
00643 #define _ppOP10(op) op op op op op op op op op op
00644 #define _ppOP11(op) _ppOP10(op) _ppOP1(op)
00645 #define _ppOP12(op) _ppOP10(op) _ppOP2(op)
00646 #define _ppOP13(op) _ppOP10(op) _ppOP3(op)
00647 #define _ppOP14(op) _ppOP10(op) _ppOP4(op)
00648 #define _ppOP15(op) _ppOP10(op) _ppOP5(op)
00649 #define _ppOP16(op) _ppOP10(op) _ppOP6(op)
00650 #define _ppOP17(op) _ppOP10(op) _ppOP7(op)
00651 #define _ppOP18(op) _ppOP10(op) _ppOP8(op)
00652 #define _ppOP19(op) _ppOP10(op) _ppOP9(op)
00653 #define _ppOP20(op) _ppOP10(op) _ppOP10(op)
00654 #define _ppOP21(op) _ppOP20(op) _ppOP1(op)
00655 #define _ppOP22(op) _ppOP20(op) _ppOP2(op)
00656 #define _ppOP23(op) _ppOP20(op) _ppOP3(op)
00657 #define _ppOP24(op) _ppOP20(op) _ppOP4(op)
00658 #define _ppOP25(op) _ppOP20(op) _ppOP5(op)
00659 #define _ppOP26(op) _ppOP20(op) _ppOP6(op)
00660 #define _ppOP27(op) _ppOP20(op) _ppOP7(op)
00661 #define _ppOP28(op) _ppOP20(op) _ppOP8(op)
00662 #define _ppOP29(op) _ppOP20(op) _ppOP9(op)
00663 #define _ppOP30(op) _ppOP20(op) _ppOP10(op)
00664 #define _ppOP31(op) _ppOP30(op) _ppOP1(op)
00665 #define _ppOP32(op) _ppOP30(op) _ppOP2(op)
00666 #define _ppOP33(op) _ppOP30(op) _ppOP3(op)
00667 #define _ppOP34(op) _ppOP30(op) _ppOP4(op)
00668 #define _ppOP35(op) _ppOP30(op) _ppOP5(op)
00669 #define _ppOP36(op) _ppOP30(op) _ppOP6(op)
00670 #define _ppOP37(op) _ppOP30(op) _ppOP7(op)
00671 #define _ppOP38(op) _ppOP30(op) _ppOP8(op)
00672 #define _ppOP39(op) _ppOP30(op) _ppOP9(op)
00673 #define _ppOP40(op) _ppOP30(op) _ppOP10(op)
00674 #define _ppOP41(op) _ppOP40(op) _ppOP1(op)
00675 #define _ppOP42(op) _ppOP40(op) _ppOP2(op)
00676 #define _ppOP43(op) _ppOP40(op) _ppOP3(op)
00677 #define _ppOP44(op) _ppOP40(op) _ppOP4(op)
00678 #define _ppOP45(op) _ppOP40(op) _ppOP5(op)
00679 #define _ppOP46(op) _ppOP40(op) _ppOP6(op)
00680 #define _ppOP47(op) _ppOP40(op) _ppOP7(op)
00681 #define _ppOP48(op) _ppOP40(op) _ppOP8(op)
00682 #define _ppOP49(op) _ppOP40(op) _ppOP9(op)
00683 #define _ppOP50(op) _ppOP40(op) _ppOP10(op)
00684 #define _ppOP51(op) _ppOP50(op) _ppOP1(op)
00685 #define _ppOP52(op) _ppOP50(op) _ppOP2(op)
00686 #define _ppOP53(op) _ppOP50(op) _ppOP3(op)
00687 #define _ppOP54(op) _ppOP50(op) _ppOP4(op)
00688 #define _ppOP55(op) _ppOP50(op) _ppOP5(op)
00689 #define _ppOP56(op) _ppOP50(op) _ppOP6(op)
00690 #define _ppOP57(op) _ppOP50(op) _ppOP7(op)
00691 #define _ppOP58(op) _ppOP50(op) _ppOP8(op)
00692 #define _ppOP59(op) _ppOP50(op) _ppOP9(op)
00693 #define _ppOP60(op) _ppOP50(op) _ppOP10(op)
00694 #define _ppOP61(op) _ppOP60(op) _ppOP1(op)
00695 #define _ppOP62(op) _ppOP60(op) _ppOP2(op)
00696 #define _ppOP63(op) _ppOP60(op) _ppOP3(op)
00697 #define _ppOP64(op) _ppOP60(op) _ppOP4(op)
00698 #define _ppOP65(op) _ppOP60(op) _ppOP5(op)
00699 #define _ppOP66(op) _ppOP60(op) _ppOP6(op)
00700 #define _ppOP67(op) _ppOP60(op) _ppOP7(op)
00701 #define _ppOP68(op) _ppOP60(op) _ppOP8(op)
00702 #define _ppOP69(op) _ppOP60(op) _ppOP9(op)
00703 #define _ppOP70(op) _ppOP60(op) _ppOP10(op)
00704 #define _ppOP71(op) _ppOP70(op) _ppOP1(op)
00705 #define _ppOP72(op) _ppOP70(op) _ppOP2(op)
00706 #define _ppOP73(op) _ppOP70(op) _ppOP3(op)
00707 #define _ppOP74(op) _ppOP70(op) _ppOP4(op)
00708 #define _ppOP75(op) _ppOP70(op) _ppOP5(op)
00709 #define _ppOP76(op) _ppOP70(op) _ppOP6(op)
00710 #define _ppOP77(op) _ppOP70(op) _ppOP7(op)
00711 #define _ppOP78(op) _ppOP70(op) _ppOP8(op)
00712 #define _ppOP79(op) _ppOP70(op) _ppOP9(op)
00713 #define _ppOP80(op) _ppOP70(op) _ppOP10(op)
00714 #define _ppOP81(op) _ppOP80(op) _ppOP1(op)
00715 #define _ppOP82(op) _ppOP80(op) _ppOP2(op)
00716 #define _ppOP83(op) _ppOP80(op) _ppOP3(op)
00717 #define _ppOP84(op) _ppOP80(op) _ppOP4(op)
00718 #define _ppOP85(op) _ppOP80(op) _ppOP5(op)
00719 #define _ppOP86(op) _ppOP80(op) _ppOP6(op)
00720 #define _ppOP87(op) _ppOP80(op) _ppOP7(op)
00721 #define _ppOP88(op) _ppOP80(op) _ppOP8(op)
00722 #define _ppOP89(op) _ppOP80(op) _ppOP9(op)
00723 #define _ppOP90(op) _ppOP80(op) _ppOP10(op)
00724 #define _ppOP91(op) _ppOP90(op) _ppOP1(op)
00725 #define _ppOP92(op) _ppOP90(op) _ppOP2(op)
00726 #define _ppOP93(op) _ppOP90(op) _ppOP3(op)
00727 #define _ppOP94(op) _ppOP90(op) _ppOP4(op)
00728 #define _ppOP95(op) _ppOP90(op) _ppOP5(op)
00729 #define _ppOP96(op) _ppOP90(op) _ppOP6(op)
00730 #define _ppOP97(op) _ppOP90(op) _ppOP7(op)
00731 #define _ppOP98(op) _ppOP90(op) _ppOP8(op)
00732 #define _ppOP99(op) _ppOP90(op) _ppOP9(op)
00733 #define _ppOP100(op) _ppOP90(op) _ppOP10(op)
00734 #define _ppOP101(op) _ppOP100(op) _ppOP1(op)
00735 #define _ppOP102(op) _ppOP100(op) _ppOP2(op)
00736 #define _ppOP103(op) _ppOP100(op) _ppOP3(op)
00737 #define _ppOP104(op) _ppOP100(op) _ppOP4(op)
00738 #define _ppOP105(op) _ppOP100(op) _ppOP5(op)
00739 #define _ppOP106(op) _ppOP100(op) _ppOP6(op)
00740 #define _ppOP107(op) _ppOP100(op) _ppOP7(op)
00741 #define _ppOP108(op) _ppOP100(op) _ppOP8(op)
00742 #define _ppOP109(op) _ppOP100(op) _ppOP9(op)
00743 #define _ppOP110(op) _ppOP100(op) _ppOP10(op)
00744 #define _ppOP111(op) _ppOP110(op) _ppOP1(op)
00745 #define _ppOP112(op) _ppOP110(op) _ppOP2(op)
00746 #define _ppOP113(op) _ppOP110(op) _ppOP3(op)
00747 #define _ppOP114(op) _ppOP110(op) _ppOP4(op)
00748 #define _ppOP115(op) _ppOP110(op) _ppOP5(op)
00749 #define _ppOP116(op) _ppOP110(op) _ppOP6(op)
00750 #define _ppOP117(op) _ppOP110(op) _ppOP7(op)
00751 #define _ppOP118(op) _ppOP110(op) _ppOP8(op)
00752 #define _ppOP119(op) _ppOP110(op) _ppOP9(op)
00753 #define _ppOP120(op) _ppOP110(op) _ppOP10(op)
00754 #define _ppOP121(op) _ppOP120(op) _ppOP1(op)
00755 #define _ppOP122(op) _ppOP120(op) _ppOP2(op)
00756 #define _ppOP123(op) _ppOP120(op) _ppOP3(op)
00757 #define _ppOP124(op) _ppOP120(op) _ppOP4(op)
00758 #define _ppOP125(op) _ppOP120(op) _ppOP5(op)
00759 #define _ppOP126(op) _ppOP120(op) _ppOP6(op)
00760 #define _ppOP127(op) _ppOP120(op) _ppOP7(op)
00761 #define _ppOP128(op) _ppOP120(op) _ppOP8(op)
00762 #define _ppOP129(op) _ppOP120(op) _ppOP9(op)
00763 #define _ppOP130(op) _ppOP120(op) _ppOP10(op)
00764 #define _ppOP131(op) _ppOP130(op) _ppOP1(op)
00765 #define _ppOP132(op) _ppOP130(op) _ppOP2(op)
00766 #define _ppOP133(op) _ppOP130(op) _ppOP3(op)
00767 #define _ppOP134(op) _ppOP130(op) _ppOP4(op)
00768 #define _ppOP135(op) _ppOP130(op) _ppOP5(op)
00769 #define _ppOP136(op) _ppOP130(op) _ppOP6(op)
00770 #define _ppOP137(op) _ppOP130(op) _ppOP7(op)
00771 #define _ppOP138(op) _ppOP130(op) _ppOP8(op)
00772 #define _ppOP139(op) _ppOP130(op) _ppOP9(op)
00773 #define _ppOP140(op) _ppOP130(op) _ppOP10(op)
00774 #define _ppOP141(op) _ppOP140(op) _ppOP1(op)
00775 #define _ppOP142(op) _ppOP140(op) _ppOP2(op)
00776 #define _ppOP143(op) _ppOP140(op) _ppOP3(op)
00777 #define _ppOP144(op) _ppOP140(op) _ppOP4(op)
00778 #define _ppOP145(op) _ppOP140(op) _ppOP5(op)
00779 #define _ppOP146(op) _ppOP140(op) _ppOP6(op)
00780 #define _ppOP147(op) _ppOP140(op) _ppOP7(op)
00781 #define _ppOP148(op) _ppOP140(op) _ppOP8(op)
00782 #define _ppOP149(op) _ppOP140(op) _ppOP9(op)
00783 #define _ppOP150(op) _ppOP140(op) _ppOP10(op)
00784
00785
00786
00787
00788
00789
00790 #define ppExponent( b, x ) ( 1 ppOps( * (b), x ) )
00791
00792 #endif