From c68f655dcd1f61fc04c17d9a1d725761e55d6bb6 Mon Sep 17 00:00:00 2001 From: Cormac Cannon Date: Thu, 5 Apr 2018 12:56:36 +0100 Subject: [PATCH 01/15] Variadic macro extensions to the FFF See header comment in fff.h for details -- summary extracted below: Return value macros: SET_RETURN_VAL_SEQ(function_name, ...) Accepts a raw list of appropriately typed values SET_RETURN_VAL(function_name, value) Provided for API consistency Assertion macros: TEST_ASSERT_CALLS(function_name, expected_call_count) TEST_ASSERT_CALLED(function_name) Only one call made to the function. TEST_ASSERT_NOT_CALLED(function_name) No calls made to the function. TEST_ASSERT_CALL(function_name, ...parameters) Only one call made to the function with the specified parameter values. TEST_ASSERT_LAST_CALL(function_name, ...parameters) The final call to this function was made with the specified parameter values. TEST_ASSERT_ANY_CALL(function_name, ...parameters) At least one call was made with the specified parameter values. TEST_ASSERT_NO_CALL(function_name, ...parameters) No calls were made with the specified parameter values. TEST_ASSERT_NTH_CALL(function_name, call_index, ...parameters) A specified invocation of the function used the specified parameter values. <> Added unit tests. Added TEST_ASSERT_CALL(...), as couldn't get optional parameter verification for TEST_ASSERT_CALLED to work in c99 mode. <> Updated generator. Function name changes for consistency. Initial documentation updates. <> FFF_RETURN: Made array declaration static to allow use in a fixture setup method <> FFF_RETURN Reverted static array declaration as it prevented some types of initialisation. Reformulated macro to use dedicated struct member for single values while still allowing macro invocation to be prefixed with `static` keyboard when used outside the test body. --- README.md | 136 ++++++++++- fakegen.rb | 159 ++++++++++--- fff.h | 266 ++++++++++++++++++++-- pp_iterators.rb | 213 +++++++++++++++++ test/fff_test_c.c | 133 +++++++---- test/test_cases_assertions.include | 351 +++++++++++++++++++++++++++++ 6 files changed, 1158 insertions(+), 100 deletions(-) create mode 100755 pp_iterators.rb create mode 100644 test/test_cases_assertions.include diff --git a/README.md b/README.md index a9757fd..43bb62d 100644 --- a/README.md +++ b/README.md @@ -51,6 +51,16 @@ FAKE_VOID_FUNC(DISPLAY_init); And the unit test might look something like this: +```c +TEST_F(GreeterTests, init_initialises_display) +{ + UI_init(); + FFF_ASSERT_CALLS(DISPLAY_init, 1); +} +``` + +... or ... + ```c TEST_F(GreeterTests, init_initialises_display) { @@ -101,6 +111,17 @@ FAKE_VOID_FUNC(DISPLAY_output, char *); And the unit test might look something like this: +```c +TEST_F(UITests, write_line_outputs_lines_to_display) +{ + char msg[] = "helloworld"; + UI_write_line(msg); + FFF_ASSERT(DISPLAY_output, msg); +} +``` + +... or ... + ```c TEST_F(UITests, write_line_outputs_lines_to_display) { @@ -111,7 +132,6 @@ TEST_F(UITests, write_line_outputs_lines_to_display) } ``` - There is no more magic here, the `FAKE_VOID_FUNC` works as in the previous example. The number of arguments that the function takes is calculated, and the macro arguments following the function name defines the argument @@ -120,7 +140,23 @@ type (a char pointer in this example). A variable is created for every argument in the form `"function_name"fake.argN_val` -## Return Values +### Variadic argument assertions + +These are a recent addition to the framework. The range of available assertions is +listed in the cheat sheet at the foot of this page. The assertions use a simple +assertion macro defined internally. To override with a macro from some test framework, +do the following in some header you include in all your tests: + +```c +// my_test_framework_header.h +... +#define _FFF_ASSERT_EQ_MSG(expected, actual, message) MY_CUSTOM_ASSERTION(expected, actual, message) +#include "fff.h" +... +``` + + +## Return values When you want to define a fake function that returns a value, you should use the `FAKE_VALUE_FUNC` macro. For instance: @@ -142,6 +178,21 @@ FAKE_VALUE_FUNC(unsigned int, DISPLAY_get_line_insert_index); And the unit test might look something like this: +```c +TEST_F(UITests, when_empty_lines_write_line_doesnt_clear_screen) +{ + // given + FFF_RETURN(DISPLAY_get_line_insert_index,1); + char msg[] = "helloworld"; + // when + UI_write_line(msg); + // then + FFF_ASSERT_NOT_CALLED(DISPLAY_clear); +} +``` + +... or ... + ```c TEST_F(UITests, when_empty_lines_write_line_doesnt_clear_screen) { @@ -167,7 +218,37 @@ you would use a syntax like this: ```c FAKE_VALUE_FUNC(double, pow, double, double); ``` -## Resetting a Fake + +*N.B.* When using the variadic form (i.e. `FFF_RETURN(FN, ...)`), the hidden value sequence array +is declared locally by default. If you want to set a return sequence in a function other than +the test body (e.g. in a fixture setup method or helper function used in multiple tests), you'll +need to prefix the macro invocation with the `static` keyword. e.g. + +```c +void setup(void) +{ + // given + static FFF_RETURN(DISPLAY_get_line_insert_index, 1, 2, 3); +} + +TEST_F(UITests, when_empty_lines_write_line_doesnt_clear_screen) +{ +... +//Some test logic exercising DISPLAY_get_line_insert_index +... +} + +TEST_F(UITests, when_empty_lines_write_line_bla) +{ +... +//Some more test logic exercising DISPLAY_get_line_insert_index +... +} +``` + +The static keyword is not necessary when specifying a single value, as the macro uses the dedicated struct member in this case. + +## Resetting a fake Good tests are isolated tests, so it is important to reset the fakes for each unit test. All the fakes have a reset function to reset their arguments and @@ -237,6 +318,18 @@ They are reset by calling `FFF_RESET_HISTORY();` The framework will by default store the arguments for the last ten calls made to a fake function. +```c +TEST_F(FFFTestSuite, when_fake_func_called_then_arguments_captured_in_history) +{ + voidfunc2('g', 'h'); + voidfunc2('i', 'j'); + FFF_ASSERT_NTH(voidfunc2, 1, 'g', 'h'); + FFF_ASSERT_NTH(voidfunc2, 2, 'i', 'j'); +} +``` + +... or ... + ```c TEST_F(FFFTestSuite, when_fake_func_called_then_arguments_captured_in_history) { @@ -298,6 +391,21 @@ with for the fake function. It is probably easier to describe with an example: // faking "long longfunc();" FAKE_VALUE_FUNC(long, longfunc0); +TEST_F(FFFTestSuite, return_value_sequences_exhausted) +{ + FFF_RETURN(longfunc0, myReturnVals, 3, 7, 9); + ASSERT_EQ(3, longfunc0()); + ASSERT_EQ(7, longfunc0()); + ASSERT_EQ(9, longfunc0()); + ASSERT_EQ(9, longfunc0()); + ASSERT_EQ(9, longfunc0()); +} +``` +... or ... +```c +// faking "long longfunc();" +FAKE_VALUE_FUNC(long, longfunc0); + TEST_F(FFFTestSuite, return_value_sequences_exhausted) { long myReturnVals[3] = { 3, 7, 9 }; @@ -638,10 +746,20 @@ So whats the point? ## Cheat Sheet -| Macro | Description | Example | -|-------|-------------|---------| -| FAKE_VOID_FUNC(fn [,arg_types*]); | Define a fake function named fn returning void with n arguments | FAKE_VOID_FUNC(DISPLAY_output_message, const char*); | -| FAKE_VALUE_FUNC(return_type, fn [,arg_types*]); | Define a fake function returning a value with type return_type taking n arguments | FAKE_VALUE_FUNC(int, DISPLAY_get_line_insert_index); | -| FAKE_VOID_FUNC_VARARG(fn [,arg_types*], ...); | Define a fake variadic function returning void with type return_type taking n arguments and n variadic arguments | FAKE_VOID_FUNC_VARARG(fn, const char*, ...) | +| Macro | Description | Example | +|-------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------| +| FAKE_VOID_FUNC(fn [,arg_types*]); | Define a fake function named fn returning void with n arguments | FAKE_VOID_FUNC(DISPLAY_output_message, const char*); | +| FAKE_VALUE_FUNC(return_type, fn [,arg_types*]); | Define a fake function returning a value with type return_type taking n arguments | FAKE_VALUE_FUNC(int, DISPLAY_get_line_insert_index); | +| FAKE_VOID_FUNC_VARARG(fn [,arg_types*], ...); | Define a fake variadic function returning void with type return_type taking n arguments and n variadic arguments | FAKE_VOID_FUNC_VARARG(fn, const char*, ...) | | FAKE_VALUE_FUNC_VARARG(return_type, fn [,arg_types*], ...); | Define a fake variadic function returning a value with type return_type taking n arguments and n variadic arguments | FAKE_VALUE_FUNC_VARARG(int, fprintf, FILE*, const char*, ...) | -| RESET_FAKE(fn); | Reset the state of fake function called fn | RESET_FAKE(DISPLAY_init); | +| RESET_FAKE(fn); | Reset the state of fake function called fn | RESET_FAKE(DISPLAY_init); | +| FFF_RETURN(fn, ...return_value(s)*); | Set one or more return values (final value repeated if calls > values) | FFF_RETURN(DISPLAY_init, 1, 2, 3); | +| FFF_ASSERT_CALLED(fn); | Assert that a function was called once and only once. | FFF_ASSERT_CALLED(DISPLAY_init); | +| FFF_ASSERT_NOT_CALLED(fn); | Assert that a function was not called. | FFF_ASSERT_NOT_CALLED(DISPLAY_init); | +| FFF_ASSERT_CALLS(fn, call_count); | Assert that a function was called the specified number of times. | FFF_ASSERT_CALLS(DISPLAY_init, 3); | +| FFF_ASSERT(fn, ...arg_value(s)) | Assert that a function was called only once with the specified argument values. | FFF_ASSERT(DISPLAY_output_message, my_message_ptr); | +| FFF_ASSERT_LAST(fn, ...arg_value(s)) | Assert that the last call to a function had the specified argument values. | FFF_ASSERT_LAST(DISPLAY_output_message, my_message_ptr); | +| FFF_ASSERT_ANY(fn, ...arg_value(s)) | Assert that any call to a function had the specified argument values. | FFF_ASSERT_ANY(DISPLAY_output_message, my_message_ptr); | +| FFF_ASSERT_NONE(fn, ...arg_value(s)) | Assert that no calls to a function had the specified argument values. | FFF_ASSERT_NONE(DISPLAY_output_message, my_message_ptr); | + +*N.B.* All of the function argument assertions support partial specification of arguments. I.e. Given a function taking 3 args, you may just specify the first argument for verification. Any arguments that are specified must be specified from left to right however. i.e. it is possibly to specify arguments 0 and 1, but not arguments 0 and 2 (ignoring the value of 1). diff --git a/fakegen.rb b/fakegen.rb index 075c8f7..b67d9c8 100644 --- a/fakegen.rb +++ b/fakegen.rb @@ -1,10 +1,11 @@ - # fakegen.rb # A simple code generator to create some C macros for defining test fake functions +require_relative './pp_iterators.rb' $cpp_output = true -$MAX_ARGS = 20 +$MAX_ARGS = 20 # Max faked function argument count +$MAX_ITER = 64 # Max args for iteration and arg counting macros $DEFAULT_ARG_HISTORY = 50 $MAX_CALL_HISTORY = 50 @@ -31,18 +32,15 @@ def output_constants putd "#define FFF_GCC_FUNCTION_ATTRIBUTES" } putd "#endif" - -end - - +end # ------ Helper macros to use internally ------ # def output_internal_helper_macros putd "/* -- INTERNAL HELPER MACROS -- */" - define_return_sequence_helper + define_return_sequence_helpers define_custom_fake_sequence_helper define_reset_fake_macro define_declare_arg_helper @@ -59,17 +57,37 @@ def output_internal_helper_macros define_return_fake_result_helper define_extern_c_helper define_reset_fake_helper + define_fake_helpers + define_call_verification_helpers putd "/* -- END INTERNAL HELPER MACROS -- */" puts end -def define_return_sequence_helper +def define_return_sequence_helpers putd_backslash "#define SET_RETURN_SEQ(FUNCNAME, ARRAY_POINTER, ARRAY_LEN)" indent { putd_backslash "FUNCNAME##_fake.return_val_seq = ARRAY_POINTER;" putd "FUNCNAME##_fake.return_val_seq_len = ARRAY_LEN;" } + # The elaborate construction of SET_RETURN allows it to be prefixed with `static` + # in case you want to initialise a sequence outside the test body (e.g. in a fixture + # setup method or whatever) + putd <<-'EOT' + +/* FFF_RETURN (begin) */ +#define FFF_RETURN(...) \ + _FFF_SEQ_DEF(__VA_ARGS__); if(PP_NARG(__VA_ARGS__) == 2) {FFF_RETURN_VAL(__VA_ARGS__, 0);} else {_FFF_RETURN_SEQ(HEAD(__VA_ARGS__));} +#define _FFF_RET_TYPE(FN) __typeof__(FFF_RET(FN)) +#define _FFF_SEQ(FN) CAT(FN, __LINE__) +#define _FFF_SEQ_DEF(FN, ...) _FFF_RET_TYPE(FN) _FFF_SEQ(FN)[] = {__VA_ARGS__} +#define _FFF_SEQ_LEN(FN) (sizeof(_FFF_SEQ(FN))/sizeof(FFF_RET(FN))) +#define FFF_RETURN_VAL(FN, ...) FFF_RET(FN) = HEAD(__VA_ARGS__) +#define _FFF_RETURN_SEQ(FN) SET_RETURN_SEQ(FN, _FFF_SEQ(FN), _FFF_SEQ_LEN(FN)); \ + _FFF_ASSERT_TRUE_MSG(FFF(FN).return_val_seq_len>0, "No return values specified") +/* FFF_RETURN (end) */ + +EOT end def define_custom_fake_sequence_helper @@ -237,6 +255,39 @@ def define_reset_fake_helper putd "}" } end + +def define_fake_helpers + putd <<-EOH +#define FFF(FN) FN##_fake +#define FFF_CALLS(FN) FFF(FN).call_count +#define FFF_LAST_ARG_VAL(FN, ARG_IDX) FFF(FN).arg##ARG_IDX##_val +#define FFF_NTH_ARG_VAL(FN, CALL_IDX, ARG_IDX) FFF(FN).arg##ARG_IDX##_history[CALL_IDX-1] +#define FFF_RET(FN) FFF(FN).return_val + EOH +end + +def define_call_verification_helpers + putd <<-EOH +#define _FFF_VERIFY_ARG(FN, VAL, ARG_IDX) VAL == FFF_LAST_ARG_VAL(FN, ARG_IDX) +#define _FFF_VERIFY_HISTORICAL_ARG(FN, CALL_IDX, VAL, ARG_IDX) (VAL == FFF_NTH_ARG_VAL(FN, CALL_IDX, ARG_IDX)) +#define _FFF_AND_VERIFY_NTH_CALL_ARG(FN, CALL_IDX, VAL, ARG_IDX) && _FFF_VERIFY_HISTORICAL_ARG(FN, CALL_IDX, VAL, ARG_IDX) +#define _FFF_VERIFY_NTH_CALL(FN, CALL_IDX, ...) \ + ( (CALL_IDX > 0) && (CALL_IDX <= FFF_CALLS(FN)) PP_2PAR_EACH_IDX(_FFF_AND_VERIFY_NTH_CALL_ARG, FN, CALL_IDX, __VA_ARGS__) ) + +//This uses GCC compound statement expression: +//https://gcc.gnu.org/onlinedocs/gcc/Statement-Exprs.html +#define _FFF_VERIFY_ANY_CALL(FN, ...) ({ \ + int verified = 0; \ + int call_idx = FFF_CALLS(FN); \ + while(call_idx && !verified) { \ + verified |= _FFF_VERIFY_NTH_CALL(FN, call_idx, __VA_ARGS__); \ + call_idx--; \ + } \ + verified; \ + }) + + EOH +end # ------ End Helper macros ------ # #fakegen helpers to print at levels of indentation @@ -553,9 +604,9 @@ def msvc_expand_macro_fix putd "#define EXPAND(x) x" end -def generate_arg_sequence(args, prefix, do_reverse, joinstr) - fmap = (0..args).flat_map {|i| [prefix + i.to_s]} - if do_reverse then fmap.reverse.join(joinstr) else fmap.join(", ") end +def generate_arg_sequence(args, prefix, do_reverse, joinstr, first_idx = 0) + fmap = (first_idx..args).flat_map {|i| [prefix + i.to_s]} + if do_reverse then fmap.reverse.join(joinstr) else fmap.join(", ") end end def counting_macro_instance(type, has_calling_conventions, vararg = :non_vararg, prefix = "") @@ -580,36 +631,28 @@ def counting_macro_instance(type, has_calling_conventions, vararg = :non_vararg, end def output_macro_counting_shortcuts(has_calling_conventions) - has_calling_conventions ? - (arg_depth = ["3", "2"]; calling_conv = "callingConv, ") : - (arg_depth = ["2", "1"]; calling_conv = "") - msvc_expand_macro_fix + ppiter = PPIterators.new() putd <<-MACRO_COUNTING -#define PP_NARG_MINUS#{arg_depth[0]}(...) \ - EXPAND(PP_NARG_MINUS#{arg_depth[0]}_(__VA_ARGS__, PP_RSEQ_N_MINUS#{arg_depth[0]}())) - -#define PP_NARG_MINUS#{arg_depth[0]}_(...) \ - EXPAND(PP_ARG_MINUS#{arg_depth[0]}_N(__VA_ARGS__)) - -#define PP_ARG_MINUS#{arg_depth[0]}_N(returnVal, #{calling_conv} #{generate_arg_sequence($MAX_ARGS, '_', false, ", ")}, N, ...) N - -#define PP_RSEQ_N_MINUS#{arg_depth[0]}() \ - #{generate_arg_sequence($MAX_ARGS, '', true, ',')} - -#define PP_NARG_MINUS#{arg_depth[1]}(...) \ - EXPAND(PP_NARG_MINUS#{arg_depth[1]}_(__VA_ARGS__, PP_RSEQ_N_MINUS#{arg_depth[1]}())) +#ifndef PP_NARG +#{ppiter.narg_common} +#{ppiter.narg} +#endif -#define PP_NARG_MINUS#{arg_depth[1]}_(...) \ - EXPAND(PP_ARG_MINUS#{arg_depth[1]}_N(__VA_ARGS__)) +#{ppiter.narg_minus(1)} -#define PP_ARG_MINUS#{arg_depth[1]}_N(#{calling_conv} #{generate_arg_sequence($MAX_ARGS, '_', false, ", ")}, N, ...) N +#{ppiter.narg_minus(2)} -#define PP_RSEQ_N_MINUS#{arg_depth[1]}() \ - #{generate_arg_sequence($MAX_ARGS, '', true, ',')} +#{ppiter.narg_minus(3)} +#ifndef PP_1PAR_EACH_IDX +#{ppiter.parameterised_each_with_index(1)} +#endif +#ifndef PP_2PAR_EACH_IDX +#{ppiter.parameterised_each_with_index(2)} +#endif /* DECLARE AND DEFINE FAKE FUNCTIONS - PLACE IN TEST FILES */ @@ -635,6 +678,55 @@ def output_macro_counting_shortcuts(has_calling_conventions) MACRO_COUNTING end +def output_assertions + putd <<-'EOA' +/* ASSERTIONS (Public API) */ + +#define FFF_ASSERT_CALLS(FN, COUNT) _FFF_ASSERT_EQ_MSG(COUNT, FFF_CALLS(FN), #FN " called incorrect number of times") + +#define FFF_ASSERT_CALLED(FN) FFF_ASSERT_CALLS(FN, 1); + +#define FFF_ASSERT_NOT_CALLED(FN) FFF_ASSERT_CALLS(FN, 0); + +#define FFF_ASSERT(FN, ...) \ + FFF_ASSERT_CALLS(FN, 1); \ + PP_1PAR_EACH_IDX(_FFF_ASSERT_ARG, FN, __VA_ARGS__) + +#define FFF_ASSERT_NTH(FN, CALL_IDX, ...) \ + _FFF_ASSERT_TRUE_MSG(CALL_IDX > 0, "Invalid call index -- expected >0, got " #CALL_IDX); \ + _FFF_ASSERT_TRUE_MSG(FFF_CALLS(FN) >= CALL_IDX, #FN " not called " #CALL_IDX " times"); \ + PP_2PAR_EACH_IDX(_FFF_ASSERT_HISTORICAL_ARG, FN, CALL_IDX, __VA_ARGS__) + +#define FFF_ASSERT_LAST(FN, ...) FFF_ASSERT_NTH(FN, FFF_CALLS(FN), __VA_ARGS__) + +#define FFF_ASSERT_ANY(FN, ...) _FFF_ASSERT_TRUE_MSG(_FFF_VERIFY_ANY_CALL(FN, __VA_ARGS__), "No calls made to '"#FN"("#__VA_ARGS__")'") + +#define FFF_ASSERT_NONE(FN, ...) _FFF_ASSERT_FALSE_MSG(_FFF_VERIFY_ANY_CALL(FN, __VA_ARGS__), "At least one call made to '"#FN"("#__VA_ARGS__")'") + +/* ASSERTIONS (Internal) */ + +#ifndef _FFF_ASSERT_EQ_MSG +#include +#include +#define _FFF_ASSERT_EQ_MSG(expected, actual, message) do { \ + if(expected!=actual) {printf(message);} \ + assert(expected==actual); \ +} while(0) +#endif + +#ifndef _FFF_ASSERT_EQ +#define _FFF_ASSERT_EQ(expected, actual) _FFF_ASSERT_EQ_MSG(expected, actual, "Expected " #expected " / Got " #actual) +#endif + +#define _FFF_ASSERT_TRUE_MSG(COND, MSG) _FFF_ASSERT_EQ_MSG(((COND)>0), 1, MSG) +#define _FFF_ASSERT_FALSE_MSG(COND, MSG) _FFF_ASSERT_EQ_MSG((COND), 0, MSG) + +#define _FFF_ASSERT_ARG(FN, VAL, ARG_IDX) _FFF_ASSERT_EQ_MSG(VAL, FFF_LAST_ARG_VAL(FN, ARG_IDX), #FN" parameter value mismatch at ARG"#ARG_IDX); + +#define _FFF_ASSERT_HISTORICAL_ARG(FN, CALL_IDX, VAL, ARG_IDX) _FFF_ASSERT_EQ_MSG(VAL, FFF_NTH_ARG_VAL(FN, CALL_IDX, ARG_IDX), #FN", call "#CALL_IDX": value mismatch for arg"#ARG_IDX); +EOA +end + def output_c_and_cpp(has_calling_conventions) include_guard { include_dependencies @@ -642,6 +734,7 @@ def output_c_and_cpp(has_calling_conventions) output_internal_helper_macros yield output_macro_counting_shortcuts(has_calling_conventions) + output_assertions } end diff --git a/fff.h b/fff.h index aa38912..4517fbc 100644 --- a/fff.h +++ b/fff.h @@ -43,6 +43,19 @@ SOFTWARE. #define SET_RETURN_SEQ(FUNCNAME, ARRAY_POINTER, ARRAY_LEN) \ FUNCNAME##_fake.return_val_seq = ARRAY_POINTER; \ FUNCNAME##_fake.return_val_seq_len = ARRAY_LEN; + +/* FFF_RETURN (begin) */ +#define FFF_RETURN(...) \ + _FFF_SEQ_DEF(__VA_ARGS__); if(PP_NARG(__VA_ARGS__) == 2) {FFF_RETURN_VAL(__VA_ARGS__, 0);} else {_FFF_RETURN_SEQ(HEAD(__VA_ARGS__));} +#define _FFF_RET_TYPE(FN) __typeof__(FFF_RET(FN)) +#define _FFF_SEQ(FN) CAT(FN, __LINE__) +#define _FFF_SEQ_DEF(FN, ...) _FFF_RET_TYPE(FN) _FFF_SEQ(FN)[] = {__VA_ARGS__} +#define _FFF_SEQ_LEN(FN) (sizeof(_FFF_SEQ(FN))/sizeof(FFF_RET(FN))) +#define FFF_RETURN_VAL(FN, ...) FFF_RET(FN) = HEAD(__VA_ARGS__) +#define _FFF_RETURN_SEQ(FN) SET_RETURN_SEQ(FN, _FFF_SEQ(FN), _FFF_SEQ_LEN(FN)); \ + _FFF_ASSERT_TRUE_MSG(FFF(FN).return_val_seq_len>0, "No return values specified") +/* FFF_RETURN (end) */ + #define SET_CUSTOM_FAKE_SEQ(FUNCNAME, ARRAY_POINTER, ARRAY_LEN) \ FUNCNAME##_fake.custom_fake_seq = ARRAY_POINTER; \ FUNCNAME##_fake.custom_fake_seq_len = ARRAY_LEN; @@ -119,6 +132,20 @@ SOFTWARE. memset(&FUNCNAME##_fake, 0, sizeof(FUNCNAME##_fake)); \ FUNCNAME##_fake.arg_history_len = FFF_ARG_HISTORY_LEN; \ } +#define FFF(FN) FN##_fake +#define FFF_CALLS(FN) FFF(FN).call_count +#define FFF_LAST_ARG_VAL(FN, ARG_IDX) FFF(FN).arg##ARG_IDX##_val +#define FFF_NTH_ARG_VAL(FN, CALL_IDX, ARG_IDX) FFF(FN).arg##ARG_IDX##_history[CALL_IDX-1] +#define FFF_RET(FN) FFF(FN).return_val +#define _FFF_VERIFY_ARG(FN, VAL, ARG_IDX) VAL == FFF_LAST_ARG_VAL(FN, ARG_IDX) +#define _FFF_VERIFY_HISTORICAL_ARG(FN, CALL_IDX, VAL, ARG_IDX) (VAL == FFF_NTH_ARG_VAL(FN, CALL_IDX, ARG_IDX)) +#define _FFF_AND_VERIFY_NTH_CALL_ARG(FN, CALL_IDX, VAL, ARG_IDX) && _FFF_VERIFY_HISTORICAL_ARG(FN, CALL_IDX, VAL, ARG_IDX) +#define _FFF_VERIFY_NTH_CALL(FN, CALL_IDX, ...) ( (CALL_IDX > 0) && (CALL_IDX <= FFF_CALLS(FN)) PP_2PAR_EACH_IDX(_FFF_AND_VERIFY_NTH_CALL_ARG, FN, CALL_IDX, __VA_ARGS__) ) + +//This uses GCC compound statement expression: +//https://gcc.gnu.org/onlinedocs/gcc/Statement-Exprs.html +#define _FFF_VERIFY_ANY_CALL(FN, ...) ({ int verified = 0; int call_idx = FFF_CALLS(FN); while(call_idx && !verified) { verified |= _FFF_VERIFY_NTH_CALL(FN, call_idx, __VA_ARGS__); call_idx--; } verified; }) + /* -- END INTERNAL HELPER MACROS -- */ typedef void (*fff_function_t)(void); @@ -6525,26 +6552,195 @@ FFF_END_EXTERN_C DECLARE_FAKE_VALUE_FUNC20_VARARG(RETURN_TYPE, FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE, ARG4_TYPE, ARG5_TYPE, ARG6_TYPE, ARG7_TYPE, ARG8_TYPE, ARG9_TYPE, ARG10_TYPE, ARG11_TYPE, ARG12_TYPE, ARG13_TYPE, ARG14_TYPE, ARG15_TYPE, ARG16_TYPE, ARG17_TYPE, ARG18_TYPE, ...) \ DEFINE_FAKE_VALUE_FUNC20_VARARG(RETURN_TYPE, FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE, ARG4_TYPE, ARG5_TYPE, ARG6_TYPE, ARG7_TYPE, ARG8_TYPE, ARG9_TYPE, ARG10_TYPE, ARG11_TYPE, ARG12_TYPE, ARG13_TYPE, ARG14_TYPE, ARG15_TYPE, ARG16_TYPE, ARG17_TYPE, ARG18_TYPE, ...) \ -/* MSVC expand macro fix */ -#define EXPAND(x) x - -#define PP_NARG_MINUS2(...) EXPAND(PP_NARG_MINUS2_(__VA_ARGS__, PP_RSEQ_N_MINUS2())) -#define PP_NARG_MINUS2_(...) EXPAND(PP_ARG_MINUS2_N(__VA_ARGS__)) +#ifndef PP_NARG +#ifndef PP_UTIL + #define EXPAND(x) x + #define HEAD(FIRST, ...) FIRST + #define TAIL(FIRST, ...) __VA_ARGS__ + #define CAT(A, B) _CAT(A,B) + #define _CAT(A, B) A ## B + #define PP_RSEQ_N() 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 +#endif //PP_UTIL -#define PP_ARG_MINUS2_N(returnVal, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, N, ...) N +#ifndef PP_NARG + #define PP_NARG(...) EXPAND(PP_ARG_N(__VA_ARGS__, PP_RSEQ_N())) + #define PP_ARG_N(...) EXPAND(_PP_ARG_N(__VA_ARGS__)) + #define _PP_ARG_N(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, N, ...) N +#endif //PP_NARG -#define PP_RSEQ_N_MINUS2() 20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 - -#define PP_NARG_MINUS1(...) EXPAND(PP_NARG_MINUS1_(__VA_ARGS__, PP_RSEQ_N_MINUS1())) - -#define PP_NARG_MINUS1_(...) EXPAND(PP_ARG_MINUS1_N(__VA_ARGS__)) +#endif -#define PP_ARG_MINUS1_N( _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, N, ...) N +#ifndef PP_NARG_MINUS1 + #define PP_NARG_MINUS1(...) EXPAND(PP_ARG_MINUS1_N(__VA_ARGS__, PP_RSEQ_N())) + #define PP_ARG_MINUS1_N(...) EXPAND(_PP_ARG_MINUS1_N(__VA_ARGS__)) + #define _PP_ARG_MINUS1_N(__0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, N, ...) N +#endif //PP_NARG_MINUS1 + + +#ifndef PP_NARG_MINUS2 + #define PP_NARG_MINUS2(...) EXPAND(PP_ARG_MINUS2_N(__VA_ARGS__, PP_RSEQ_N())) + #define PP_ARG_MINUS2_N(...) EXPAND(_PP_ARG_MINUS2_N(__VA_ARGS__)) + #define _PP_ARG_MINUS2_N(__1, __0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, N, ...) N +#endif //PP_NARG_MINUS2 + + +#ifndef PP_NARG_MINUS3 + #define PP_NARG_MINUS3(...) EXPAND(PP_ARG_MINUS3_N(__VA_ARGS__, PP_RSEQ_N())) + #define PP_ARG_MINUS3_N(...) EXPAND(_PP_ARG_MINUS3_N(__VA_ARGS__)) + #define _PP_ARG_MINUS3_N(__2, __1, __0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, N, ...) N +#endif //PP_NARG_MINUS3 + + +#ifndef PP_1PAR_EACH_IDX +#ifndef PP_1PAR_EACH_IDX + #define PP_1PAR_EACH_IDX(TF, P1, ...) _PP_1PAR_EACH_IDX(TF, P1, PP_NARG(__VA_ARGS__), __VA_ARGS__) + #define _PP_1PAR_EACH_IDX(TF, P1, N, ...) __PP_1PAR_EACH_IDX(TF, P1, N, __VA_ARGS__) + #define __PP_1PAR_EACH_IDX(TF, P1, N, ...) _PP_1PAR_IDX_##N(TF, P1, __VA_ARGS__) + + #define _PP_1PAR_IDX_0(TF, ARG, dummy) + #define _PP_1PAR_IDX_1(TF, P1, _0) TF(P1, _0, 0) + #define _PP_1PAR_IDX_2(TF, P1, _0, _1) TF(P1, _0, 0) TF(P1, _1, 1) + #define _PP_1PAR_IDX_3(TF, P1, _0, _1, _2) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) + #define _PP_1PAR_IDX_4(TF, P1, _0, _1, _2, _3) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) + #define _PP_1PAR_IDX_5(TF, P1, _0, _1, _2, _3, _4) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) + #define _PP_1PAR_IDX_6(TF, P1, _0, _1, _2, _3, _4, _5) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) + #define _PP_1PAR_IDX_7(TF, P1, _0, _1, _2, _3, _4, _5, _6) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) + #define _PP_1PAR_IDX_8(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) + #define _PP_1PAR_IDX_9(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) + #define _PP_1PAR_IDX_10(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) + #define _PP_1PAR_IDX_11(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) + #define _PP_1PAR_IDX_12(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) + #define _PP_1PAR_IDX_13(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) + #define _PP_1PAR_IDX_14(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) + #define _PP_1PAR_IDX_15(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) + #define _PP_1PAR_IDX_16(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) + #define _PP_1PAR_IDX_17(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) + #define _PP_1PAR_IDX_18(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) + #define _PP_1PAR_IDX_19(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) + #define _PP_1PAR_IDX_20(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) + #define _PP_1PAR_IDX_21(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) + #define _PP_1PAR_IDX_22(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) + #define _PP_1PAR_IDX_23(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) + #define _PP_1PAR_IDX_24(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) + #define _PP_1PAR_IDX_25(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) + #define _PP_1PAR_IDX_26(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) + #define _PP_1PAR_IDX_27(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) + #define _PP_1PAR_IDX_28(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) + #define _PP_1PAR_IDX_29(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) + #define _PP_1PAR_IDX_30(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) + #define _PP_1PAR_IDX_31(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) + #define _PP_1PAR_IDX_32(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) + #define _PP_1PAR_IDX_33(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) + #define _PP_1PAR_IDX_34(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) + #define _PP_1PAR_IDX_35(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) + #define _PP_1PAR_IDX_36(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) + #define _PP_1PAR_IDX_37(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) + #define _PP_1PAR_IDX_38(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) + #define _PP_1PAR_IDX_39(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) + #define _PP_1PAR_IDX_40(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) + #define _PP_1PAR_IDX_41(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) + #define _PP_1PAR_IDX_42(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) TF(P1, _41, 41) + #define _PP_1PAR_IDX_43(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) TF(P1, _41, 41) TF(P1, _42, 42) + #define _PP_1PAR_IDX_44(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) TF(P1, _41, 41) TF(P1, _42, 42) TF(P1, _43, 43) + #define _PP_1PAR_IDX_45(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) TF(P1, _41, 41) TF(P1, _42, 42) TF(P1, _43, 43) TF(P1, _44, 44) + #define _PP_1PAR_IDX_46(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) TF(P1, _41, 41) TF(P1, _42, 42) TF(P1, _43, 43) TF(P1, _44, 44) TF(P1, _45, 45) + #define _PP_1PAR_IDX_47(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) TF(P1, _41, 41) TF(P1, _42, 42) TF(P1, _43, 43) TF(P1, _44, 44) TF(P1, _45, 45) TF(P1, _46, 46) + #define _PP_1PAR_IDX_48(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) TF(P1, _41, 41) TF(P1, _42, 42) TF(P1, _43, 43) TF(P1, _44, 44) TF(P1, _45, 45) TF(P1, _46, 46) TF(P1, _47, 47) + #define _PP_1PAR_IDX_49(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) TF(P1, _41, 41) TF(P1, _42, 42) TF(P1, _43, 43) TF(P1, _44, 44) TF(P1, _45, 45) TF(P1, _46, 46) TF(P1, _47, 47) TF(P1, _48, 48) + #define _PP_1PAR_IDX_50(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) TF(P1, _41, 41) TF(P1, _42, 42) TF(P1, _43, 43) TF(P1, _44, 44) TF(P1, _45, 45) TF(P1, _46, 46) TF(P1, _47, 47) TF(P1, _48, 48) TF(P1, _49, 49) + #define _PP_1PAR_IDX_51(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) TF(P1, _41, 41) TF(P1, _42, 42) TF(P1, _43, 43) TF(P1, _44, 44) TF(P1, _45, 45) TF(P1, _46, 46) TF(P1, _47, 47) TF(P1, _48, 48) TF(P1, _49, 49) TF(P1, _50, 50) + #define _PP_1PAR_IDX_52(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) TF(P1, _41, 41) TF(P1, _42, 42) TF(P1, _43, 43) TF(P1, _44, 44) TF(P1, _45, 45) TF(P1, _46, 46) TF(P1, _47, 47) TF(P1, _48, 48) TF(P1, _49, 49) TF(P1, _50, 50) TF(P1, _51, 51) + #define _PP_1PAR_IDX_53(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) TF(P1, _41, 41) TF(P1, _42, 42) TF(P1, _43, 43) TF(P1, _44, 44) TF(P1, _45, 45) TF(P1, _46, 46) TF(P1, _47, 47) TF(P1, _48, 48) TF(P1, _49, 49) TF(P1, _50, 50) TF(P1, _51, 51) TF(P1, _52, 52) + #define _PP_1PAR_IDX_54(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) TF(P1, _41, 41) TF(P1, _42, 42) TF(P1, _43, 43) TF(P1, _44, 44) TF(P1, _45, 45) TF(P1, _46, 46) TF(P1, _47, 47) TF(P1, _48, 48) TF(P1, _49, 49) TF(P1, _50, 50) TF(P1, _51, 51) TF(P1, _52, 52) TF(P1, _53, 53) + #define _PP_1PAR_IDX_55(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) TF(P1, _41, 41) TF(P1, _42, 42) TF(P1, _43, 43) TF(P1, _44, 44) TF(P1, _45, 45) TF(P1, _46, 46) TF(P1, _47, 47) TF(P1, _48, 48) TF(P1, _49, 49) TF(P1, _50, 50) TF(P1, _51, 51) TF(P1, _52, 52) TF(P1, _53, 53) TF(P1, _54, 54) + #define _PP_1PAR_IDX_56(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) TF(P1, _41, 41) TF(P1, _42, 42) TF(P1, _43, 43) TF(P1, _44, 44) TF(P1, _45, 45) TF(P1, _46, 46) TF(P1, _47, 47) TF(P1, _48, 48) TF(P1, _49, 49) TF(P1, _50, 50) TF(P1, _51, 51) TF(P1, _52, 52) TF(P1, _53, 53) TF(P1, _54, 54) TF(P1, _55, 55) + #define _PP_1PAR_IDX_57(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) TF(P1, _41, 41) TF(P1, _42, 42) TF(P1, _43, 43) TF(P1, _44, 44) TF(P1, _45, 45) TF(P1, _46, 46) TF(P1, _47, 47) TF(P1, _48, 48) TF(P1, _49, 49) TF(P1, _50, 50) TF(P1, _51, 51) TF(P1, _52, 52) TF(P1, _53, 53) TF(P1, _54, 54) TF(P1, _55, 55) TF(P1, _56, 56) + #define _PP_1PAR_IDX_58(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) TF(P1, _41, 41) TF(P1, _42, 42) TF(P1, _43, 43) TF(P1, _44, 44) TF(P1, _45, 45) TF(P1, _46, 46) TF(P1, _47, 47) TF(P1, _48, 48) TF(P1, _49, 49) TF(P1, _50, 50) TF(P1, _51, 51) TF(P1, _52, 52) TF(P1, _53, 53) TF(P1, _54, 54) TF(P1, _55, 55) TF(P1, _56, 56) TF(P1, _57, 57) + #define _PP_1PAR_IDX_59(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) TF(P1, _41, 41) TF(P1, _42, 42) TF(P1, _43, 43) TF(P1, _44, 44) TF(P1, _45, 45) TF(P1, _46, 46) TF(P1, _47, 47) TF(P1, _48, 48) TF(P1, _49, 49) TF(P1, _50, 50) TF(P1, _51, 51) TF(P1, _52, 52) TF(P1, _53, 53) TF(P1, _54, 54) TF(P1, _55, 55) TF(P1, _56, 56) TF(P1, _57, 57) TF(P1, _58, 58) + #define _PP_1PAR_IDX_60(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) TF(P1, _41, 41) TF(P1, _42, 42) TF(P1, _43, 43) TF(P1, _44, 44) TF(P1, _45, 45) TF(P1, _46, 46) TF(P1, _47, 47) TF(P1, _48, 48) TF(P1, _49, 49) TF(P1, _50, 50) TF(P1, _51, 51) TF(P1, _52, 52) TF(P1, _53, 53) TF(P1, _54, 54) TF(P1, _55, 55) TF(P1, _56, 56) TF(P1, _57, 57) TF(P1, _58, 58) TF(P1, _59, 59) + #define _PP_1PAR_IDX_61(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) TF(P1, _41, 41) TF(P1, _42, 42) TF(P1, _43, 43) TF(P1, _44, 44) TF(P1, _45, 45) TF(P1, _46, 46) TF(P1, _47, 47) TF(P1, _48, 48) TF(P1, _49, 49) TF(P1, _50, 50) TF(P1, _51, 51) TF(P1, _52, 52) TF(P1, _53, 53) TF(P1, _54, 54) TF(P1, _55, 55) TF(P1, _56, 56) TF(P1, _57, 57) TF(P1, _58, 58) TF(P1, _59, 59) TF(P1, _60, 60) + #define _PP_1PAR_IDX_62(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) TF(P1, _41, 41) TF(P1, _42, 42) TF(P1, _43, 43) TF(P1, _44, 44) TF(P1, _45, 45) TF(P1, _46, 46) TF(P1, _47, 47) TF(P1, _48, 48) TF(P1, _49, 49) TF(P1, _50, 50) TF(P1, _51, 51) TF(P1, _52, 52) TF(P1, _53, 53) TF(P1, _54, 54) TF(P1, _55, 55) TF(P1, _56, 56) TF(P1, _57, 57) TF(P1, _58, 58) TF(P1, _59, 59) TF(P1, _60, 60) TF(P1, _61, 61) + #define _PP_1PAR_IDX_63(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) TF(P1, _41, 41) TF(P1, _42, 42) TF(P1, _43, 43) TF(P1, _44, 44) TF(P1, _45, 45) TF(P1, _46, 46) TF(P1, _47, 47) TF(P1, _48, 48) TF(P1, _49, 49) TF(P1, _50, 50) TF(P1, _51, 51) TF(P1, _52, 52) TF(P1, _53, 53) TF(P1, _54, 54) TF(P1, _55, 55) TF(P1, _56, 56) TF(P1, _57, 57) TF(P1, _58, 58) TF(P1, _59, 59) TF(P1, _60, 60) TF(P1, _61, 61) TF(P1, _62, 62) + #define _PP_1PAR_IDX_64(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) TF(P1, _41, 41) TF(P1, _42, 42) TF(P1, _43, 43) TF(P1, _44, 44) TF(P1, _45, 45) TF(P1, _46, 46) TF(P1, _47, 47) TF(P1, _48, 48) TF(P1, _49, 49) TF(P1, _50, 50) TF(P1, _51, 51) TF(P1, _52, 52) TF(P1, _53, 53) TF(P1, _54, 54) TF(P1, _55, 55) TF(P1, _56, 56) TF(P1, _57, 57) TF(P1, _58, 58) TF(P1, _59, 59) TF(P1, _60, 60) TF(P1, _61, 61) TF(P1, _62, 62) TF(P1, _63, 63) +#endif //PP_1PAR_EACH_IDX -#define PP_RSEQ_N_MINUS1() 20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 +#endif +#ifndef PP_2PAR_EACH_IDX +#ifndef PP_2PAR_EACH_IDX + #define PP_2PAR_EACH_IDX(TF, P1, P2, ...) _PP_2PAR_EACH_IDX(TF, P1, P2, PP_NARG(__VA_ARGS__), __VA_ARGS__) + #define _PP_2PAR_EACH_IDX(TF, P1, P2, N, ...) __PP_2PAR_EACH_IDX(TF, P1, P2, N, __VA_ARGS__) + #define __PP_2PAR_EACH_IDX(TF, P1, P2, N, ...) _PP_2PAR_IDX_##N(TF, P1, P2, __VA_ARGS__) + + #define _PP_2PAR_IDX_0(TF, ARG, dummy) + #define _PP_2PAR_IDX_1(TF, P1, P2, _0) TF(P1, P2, _0, 0) + #define _PP_2PAR_IDX_2(TF, P1, P2, _0, _1) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) + #define _PP_2PAR_IDX_3(TF, P1, P2, _0, _1, _2) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) + #define _PP_2PAR_IDX_4(TF, P1, P2, _0, _1, _2, _3) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) + #define _PP_2PAR_IDX_5(TF, P1, P2, _0, _1, _2, _3, _4) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) + #define _PP_2PAR_IDX_6(TF, P1, P2, _0, _1, _2, _3, _4, _5) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) + #define _PP_2PAR_IDX_7(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) + #define _PP_2PAR_IDX_8(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) + #define _PP_2PAR_IDX_9(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) + #define _PP_2PAR_IDX_10(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) + #define _PP_2PAR_IDX_11(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) + #define _PP_2PAR_IDX_12(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) + #define _PP_2PAR_IDX_13(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) + #define _PP_2PAR_IDX_14(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) + #define _PP_2PAR_IDX_15(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) + #define _PP_2PAR_IDX_16(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) + #define _PP_2PAR_IDX_17(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) + #define _PP_2PAR_IDX_18(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) + #define _PP_2PAR_IDX_19(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) + #define _PP_2PAR_IDX_20(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) + #define _PP_2PAR_IDX_21(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) + #define _PP_2PAR_IDX_22(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) + #define _PP_2PAR_IDX_23(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) + #define _PP_2PAR_IDX_24(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) + #define _PP_2PAR_IDX_25(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) + #define _PP_2PAR_IDX_26(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) + #define _PP_2PAR_IDX_27(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) + #define _PP_2PAR_IDX_28(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) + #define _PP_2PAR_IDX_29(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) + #define _PP_2PAR_IDX_30(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) + #define _PP_2PAR_IDX_31(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) + #define _PP_2PAR_IDX_32(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) + #define _PP_2PAR_IDX_33(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) + #define _PP_2PAR_IDX_34(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) + #define _PP_2PAR_IDX_35(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) + #define _PP_2PAR_IDX_36(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) + #define _PP_2PAR_IDX_37(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) + #define _PP_2PAR_IDX_38(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) + #define _PP_2PAR_IDX_39(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) + #define _PP_2PAR_IDX_40(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) + #define _PP_2PAR_IDX_41(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) + #define _PP_2PAR_IDX_42(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) TF(P1, P2, _41, 41) + #define _PP_2PAR_IDX_43(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) TF(P1, P2, _41, 41) TF(P1, P2, _42, 42) + #define _PP_2PAR_IDX_44(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) TF(P1, P2, _41, 41) TF(P1, P2, _42, 42) TF(P1, P2, _43, 43) + #define _PP_2PAR_IDX_45(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) TF(P1, P2, _41, 41) TF(P1, P2, _42, 42) TF(P1, P2, _43, 43) TF(P1, P2, _44, 44) + #define _PP_2PAR_IDX_46(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) TF(P1, P2, _41, 41) TF(P1, P2, _42, 42) TF(P1, P2, _43, 43) TF(P1, P2, _44, 44) TF(P1, P2, _45, 45) + #define _PP_2PAR_IDX_47(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) TF(P1, P2, _41, 41) TF(P1, P2, _42, 42) TF(P1, P2, _43, 43) TF(P1, P2, _44, 44) TF(P1, P2, _45, 45) TF(P1, P2, _46, 46) + #define _PP_2PAR_IDX_48(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) TF(P1, P2, _41, 41) TF(P1, P2, _42, 42) TF(P1, P2, _43, 43) TF(P1, P2, _44, 44) TF(P1, P2, _45, 45) TF(P1, P2, _46, 46) TF(P1, P2, _47, 47) + #define _PP_2PAR_IDX_49(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) TF(P1, P2, _41, 41) TF(P1, P2, _42, 42) TF(P1, P2, _43, 43) TF(P1, P2, _44, 44) TF(P1, P2, _45, 45) TF(P1, P2, _46, 46) TF(P1, P2, _47, 47) TF(P1, P2, _48, 48) + #define _PP_2PAR_IDX_50(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) TF(P1, P2, _41, 41) TF(P1, P2, _42, 42) TF(P1, P2, _43, 43) TF(P1, P2, _44, 44) TF(P1, P2, _45, 45) TF(P1, P2, _46, 46) TF(P1, P2, _47, 47) TF(P1, P2, _48, 48) TF(P1, P2, _49, 49) + #define _PP_2PAR_IDX_51(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) TF(P1, P2, _41, 41) TF(P1, P2, _42, 42) TF(P1, P2, _43, 43) TF(P1, P2, _44, 44) TF(P1, P2, _45, 45) TF(P1, P2, _46, 46) TF(P1, P2, _47, 47) TF(P1, P2, _48, 48) TF(P1, P2, _49, 49) TF(P1, P2, _50, 50) + #define _PP_2PAR_IDX_52(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) TF(P1, P2, _41, 41) TF(P1, P2, _42, 42) TF(P1, P2, _43, 43) TF(P1, P2, _44, 44) TF(P1, P2, _45, 45) TF(P1, P2, _46, 46) TF(P1, P2, _47, 47) TF(P1, P2, _48, 48) TF(P1, P2, _49, 49) TF(P1, P2, _50, 50) TF(P1, P2, _51, 51) + #define _PP_2PAR_IDX_53(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) TF(P1, P2, _41, 41) TF(P1, P2, _42, 42) TF(P1, P2, _43, 43) TF(P1, P2, _44, 44) TF(P1, P2, _45, 45) TF(P1, P2, _46, 46) TF(P1, P2, _47, 47) TF(P1, P2, _48, 48) TF(P1, P2, _49, 49) TF(P1, P2, _50, 50) TF(P1, P2, _51, 51) TF(P1, P2, _52, 52) + #define _PP_2PAR_IDX_54(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) TF(P1, P2, _41, 41) TF(P1, P2, _42, 42) TF(P1, P2, _43, 43) TF(P1, P2, _44, 44) TF(P1, P2, _45, 45) TF(P1, P2, _46, 46) TF(P1, P2, _47, 47) TF(P1, P2, _48, 48) TF(P1, P2, _49, 49) TF(P1, P2, _50, 50) TF(P1, P2, _51, 51) TF(P1, P2, _52, 52) TF(P1, P2, _53, 53) + #define _PP_2PAR_IDX_55(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) TF(P1, P2, _41, 41) TF(P1, P2, _42, 42) TF(P1, P2, _43, 43) TF(P1, P2, _44, 44) TF(P1, P2, _45, 45) TF(P1, P2, _46, 46) TF(P1, P2, _47, 47) TF(P1, P2, _48, 48) TF(P1, P2, _49, 49) TF(P1, P2, _50, 50) TF(P1, P2, _51, 51) TF(P1, P2, _52, 52) TF(P1, P2, _53, 53) TF(P1, P2, _54, 54) + #define _PP_2PAR_IDX_56(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) TF(P1, P2, _41, 41) TF(P1, P2, _42, 42) TF(P1, P2, _43, 43) TF(P1, P2, _44, 44) TF(P1, P2, _45, 45) TF(P1, P2, _46, 46) TF(P1, P2, _47, 47) TF(P1, P2, _48, 48) TF(P1, P2, _49, 49) TF(P1, P2, _50, 50) TF(P1, P2, _51, 51) TF(P1, P2, _52, 52) TF(P1, P2, _53, 53) TF(P1, P2, _54, 54) TF(P1, P2, _55, 55) + #define _PP_2PAR_IDX_57(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) TF(P1, P2, _41, 41) TF(P1, P2, _42, 42) TF(P1, P2, _43, 43) TF(P1, P2, _44, 44) TF(P1, P2, _45, 45) TF(P1, P2, _46, 46) TF(P1, P2, _47, 47) TF(P1, P2, _48, 48) TF(P1, P2, _49, 49) TF(P1, P2, _50, 50) TF(P1, P2, _51, 51) TF(P1, P2, _52, 52) TF(P1, P2, _53, 53) TF(P1, P2, _54, 54) TF(P1, P2, _55, 55) TF(P1, P2, _56, 56) + #define _PP_2PAR_IDX_58(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) TF(P1, P2, _41, 41) TF(P1, P2, _42, 42) TF(P1, P2, _43, 43) TF(P1, P2, _44, 44) TF(P1, P2, _45, 45) TF(P1, P2, _46, 46) TF(P1, P2, _47, 47) TF(P1, P2, _48, 48) TF(P1, P2, _49, 49) TF(P1, P2, _50, 50) TF(P1, P2, _51, 51) TF(P1, P2, _52, 52) TF(P1, P2, _53, 53) TF(P1, P2, _54, 54) TF(P1, P2, _55, 55) TF(P1, P2, _56, 56) TF(P1, P2, _57, 57) + #define _PP_2PAR_IDX_59(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) TF(P1, P2, _41, 41) TF(P1, P2, _42, 42) TF(P1, P2, _43, 43) TF(P1, P2, _44, 44) TF(P1, P2, _45, 45) TF(P1, P2, _46, 46) TF(P1, P2, _47, 47) TF(P1, P2, _48, 48) TF(P1, P2, _49, 49) TF(P1, P2, _50, 50) TF(P1, P2, _51, 51) TF(P1, P2, _52, 52) TF(P1, P2, _53, 53) TF(P1, P2, _54, 54) TF(P1, P2, _55, 55) TF(P1, P2, _56, 56) TF(P1, P2, _57, 57) TF(P1, P2, _58, 58) + #define _PP_2PAR_IDX_60(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) TF(P1, P2, _41, 41) TF(P1, P2, _42, 42) TF(P1, P2, _43, 43) TF(P1, P2, _44, 44) TF(P1, P2, _45, 45) TF(P1, P2, _46, 46) TF(P1, P2, _47, 47) TF(P1, P2, _48, 48) TF(P1, P2, _49, 49) TF(P1, P2, _50, 50) TF(P1, P2, _51, 51) TF(P1, P2, _52, 52) TF(P1, P2, _53, 53) TF(P1, P2, _54, 54) TF(P1, P2, _55, 55) TF(P1, P2, _56, 56) TF(P1, P2, _57, 57) TF(P1, P2, _58, 58) TF(P1, P2, _59, 59) + #define _PP_2PAR_IDX_61(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) TF(P1, P2, _41, 41) TF(P1, P2, _42, 42) TF(P1, P2, _43, 43) TF(P1, P2, _44, 44) TF(P1, P2, _45, 45) TF(P1, P2, _46, 46) TF(P1, P2, _47, 47) TF(P1, P2, _48, 48) TF(P1, P2, _49, 49) TF(P1, P2, _50, 50) TF(P1, P2, _51, 51) TF(P1, P2, _52, 52) TF(P1, P2, _53, 53) TF(P1, P2, _54, 54) TF(P1, P2, _55, 55) TF(P1, P2, _56, 56) TF(P1, P2, _57, 57) TF(P1, P2, _58, 58) TF(P1, P2, _59, 59) TF(P1, P2, _60, 60) + #define _PP_2PAR_IDX_62(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) TF(P1, P2, _41, 41) TF(P1, P2, _42, 42) TF(P1, P2, _43, 43) TF(P1, P2, _44, 44) TF(P1, P2, _45, 45) TF(P1, P2, _46, 46) TF(P1, P2, _47, 47) TF(P1, P2, _48, 48) TF(P1, P2, _49, 49) TF(P1, P2, _50, 50) TF(P1, P2, _51, 51) TF(P1, P2, _52, 52) TF(P1, P2, _53, 53) TF(P1, P2, _54, 54) TF(P1, P2, _55, 55) TF(P1, P2, _56, 56) TF(P1, P2, _57, 57) TF(P1, P2, _58, 58) TF(P1, P2, _59, 59) TF(P1, P2, _60, 60) TF(P1, P2, _61, 61) + #define _PP_2PAR_IDX_63(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) TF(P1, P2, _41, 41) TF(P1, P2, _42, 42) TF(P1, P2, _43, 43) TF(P1, P2, _44, 44) TF(P1, P2, _45, 45) TF(P1, P2, _46, 46) TF(P1, P2, _47, 47) TF(P1, P2, _48, 48) TF(P1, P2, _49, 49) TF(P1, P2, _50, 50) TF(P1, P2, _51, 51) TF(P1, P2, _52, 52) TF(P1, P2, _53, 53) TF(P1, P2, _54, 54) TF(P1, P2, _55, 55) TF(P1, P2, _56, 56) TF(P1, P2, _57, 57) TF(P1, P2, _58, 58) TF(P1, P2, _59, 59) TF(P1, P2, _60, 60) TF(P1, P2, _61, 61) TF(P1, P2, _62, 62) + #define _PP_2PAR_IDX_64(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) TF(P1, P2, _41, 41) TF(P1, P2, _42, 42) TF(P1, P2, _43, 43) TF(P1, P2, _44, 44) TF(P1, P2, _45, 45) TF(P1, P2, _46, 46) TF(P1, P2, _47, 47) TF(P1, P2, _48, 48) TF(P1, P2, _49, 49) TF(P1, P2, _50, 50) TF(P1, P2, _51, 51) TF(P1, P2, _52, 52) TF(P1, P2, _53, 53) TF(P1, P2, _54, 54) TF(P1, P2, _55, 55) TF(P1, P2, _56, 56) TF(P1, P2, _57, 57) TF(P1, P2, _58, 58) TF(P1, P2, _59, 59) TF(P1, P2, _60, 60) TF(P1, P2, _61, 61) TF(P1, P2, _62, 62) TF(P1, P2, _63, 63) +#endif //PP_2PAR_EACH_IDX +#endif /* DECLARE AND DEFINE FAKE FUNCTIONS - PLACE IN TEST FILES */ @@ -6639,5 +6835,49 @@ FFF_END_EXTERN_C +/* ASSERTIONS (Public API) */ + +#define FFF_ASSERT_CALLS(FN, COUNT) _FFF_ASSERT_EQ_MSG(COUNT, FFF_CALLS(FN), #FN " called incorrect number of times") + +#define FFF_ASSERT_CALLED(FN) FFF_ASSERT_CALLS(FN, 1); + +#define FFF_ASSERT_NOT_CALLED(FN) FFF_ASSERT_CALLS(FN, 0); + +#define FFF_ASSERT(FN, ...) \ + FFF_ASSERT_CALLS(FN, 1); \ + PP_1PAR_EACH_IDX(_FFF_ASSERT_ARG, FN, __VA_ARGS__) + +#define FFF_ASSERT_NTH(FN, CALL_IDX, ...) \ + _FFF_ASSERT_TRUE_MSG(CALL_IDX > 0, "Invalid call index -- expected >0, got " #CALL_IDX); \ + _FFF_ASSERT_TRUE_MSG(FFF_CALLS(FN) >= CALL_IDX, #FN " not called " #CALL_IDX " times"); \ + PP_2PAR_EACH_IDX(_FFF_ASSERT_HISTORICAL_ARG, FN, CALL_IDX, __VA_ARGS__) + +#define FFF_ASSERT_LAST(FN, ...) FFF_ASSERT_NTH(FN, FFF_CALLS(FN), __VA_ARGS__) + +#define FFF_ASSERT_ANY(FN, ...) _FFF_ASSERT_TRUE_MSG(_FFF_VERIFY_ANY_CALL(FN, __VA_ARGS__), "No calls made to '"#FN"("#__VA_ARGS__")'") + +#define FFF_ASSERT_NONE(FN, ...) _FFF_ASSERT_FALSE_MSG(_FFF_VERIFY_ANY_CALL(FN, __VA_ARGS__), "At least one call made to '"#FN"("#__VA_ARGS__")'") + +/* ASSERTIONS (Internal) */ + +#ifndef _FFF_ASSERT_EQ_MSG +#include +#include +#define _FFF_ASSERT_EQ_MSG(expected, actual, message) do { \ + if(expected!=actual) {printf(message);} \ + assert(expected==actual); \ +} while(0) +#endif + +#ifndef _FFF_ASSERT_EQ +#define _FFF_ASSERT_EQ(expected, actual) _FFF_ASSERT_EQ_MSG(expected, actual, "Expected " #expected " / Got " #actual) +#endif + +#define _FFF_ASSERT_TRUE_MSG(COND, MSG) _FFF_ASSERT_EQ_MSG(((COND)>0), 1, MSG) +#define _FFF_ASSERT_FALSE_MSG(COND, MSG) _FFF_ASSERT_EQ_MSG((COND), 0, MSG) + +#define _FFF_ASSERT_ARG(FN, VAL, ARG_IDX) _FFF_ASSERT_EQ_MSG(VAL, FFF_LAST_ARG_VAL(FN, ARG_IDX), #FN" parameter value mismatch at ARG"#ARG_IDX); + +#define _FFF_ASSERT_HISTORICAL_ARG(FN, CALL_IDX, VAL, ARG_IDX) _FFF_ASSERT_EQ_MSG(VAL, FFF_NTH_ARG_VAL(FN, CALL_IDX, ARG_IDX), #FN", call "#CALL_IDX": value mismatch for arg"#ARG_IDX); #endif /* FAKE_FUNCTIONS */ diff --git a/pp_iterators.rb b/pp_iterators.rb new file mode 100755 index 0000000..1689abc --- /dev/null +++ b/pp_iterators.rb @@ -0,0 +1,213 @@ +#!/usr/bin/env ruby + +# Generator logic for a family of macros for C metaprogramming +# See these blog posts in relation to VA_EACH: +# - http://ptspts.blogspot.ie/2013/11/how-to-apply-macro-to-all-arguments-of.html +# - https://codecraft.co/2014/11/25/variadic-macros-tricks/ (Similar, but recursive) +# There's a recursive approach described here, that i couldn't get to work... +# - http://saadahmad.ca/cc-preprocessor-metaprogramming-2/ + +require 'date' + +class PPIterators + + class CFile + INDENT = 2 + class << self + + def indent(content) + " " * INDENT + content.gsub("\n","\n ") + end + + def include_guard(name, content) + "#ifndef #{name}\n" + indent(content) + "\n#endif //#{name}\n" + + end + + def wrap_macro_body(m) + m.empty? ? m : "\#define #{m}" + end + + def wrap_macro_bodies(macros) + macros.map{ |m| wrap_macro_body(m) }.join("\n") + end + + def wrap_macro_set(guard_name, macros) + include_guard(guard_name, wrap_macro_bodies(macros)) + end + end + end + + MAX_ARG_COUNT_DEFAULT = 64 + attr_reader :max_arg_count + def initialize(n = MAX_ARG_COUNT_DEFAULT, use_gcc_extensions: false) + @gcc = use_gcc_extensions + @max_arg_count = n + end + + def arg_seq(reverse: false, first: 0, last: @max_arg_count, prefix: '', sep:', ') + seq = (first..last).map{ |i| "#{prefix}#{i}"} + seq.reverse! if reverse + seq.join(sep) + end + + def narg_common + CFile::wrap_macro_set('PP_UTIL', + [ + # Fix for MSVC expansion order (nicked from fff project) + "EXPAND(x) x", + "HEAD(FIRST, ...) FIRST", + "TAIL(FIRST, ...) __VA_ARGS__", + "CAT(A, B) _CAT(A,B)", + "_CAT(A, B) A ## B", + "PP_RSEQ_N() #{arg_seq(reverse: true)}" + ] + ) + end + + def arg_n_seq(delta) + seq = arg_seq(first: 1, last: @gcc ? @max_arg_count+1 : @max_arg_count, prefix: '_') + delta==0 ? seq :[arg_seq(first: 0, last: delta-1, prefix: '__', reverse: true), seq].join(', ') + end + + def narg + narg_minus(0) + end + + def narg_minus(m) + suffix = m>0 ? "_MINUS#{m}" : '' + CFile::wrap_macro_set("PP_NARG#{suffix}", + [ + "PP_NARG#{suffix}(...) EXPAND(PP_ARG#{suffix}_N(#{'_0, ##' if @gcc}__VA_ARGS__, PP_RSEQ_N()))", + "PP_ARG#{suffix}_N(...) EXPAND(_PP_ARG#{suffix}_N(__VA_ARGS__))", + "_PP_ARG#{suffix}_N(#{arg_n_seq(m)}, N, ...) N", + ] + ) + end + + def each + CFile::wrap_macro_set('PP_EACH', + [ + "PP_EACH(TF, ...) _PP_EACH(TF, PP_NARG(__VA_ARGS__), __VA_ARGS__)", + "_PP_EACH(TF, N, ...) __PP_EACH(TF, N, __VA_ARGS__)", + "__PP_EACH(TF, N, ...) _PP_EACH_##N(TF, __VA_ARGS__)", + "", + "_PP_EACH_0(TF, ...)", + "_PP_EACH_1(TF, next_arg) TF(next_arg)", + ] + (2..@max_arg_count).map { |arg_count| "_PP_EACH_#{arg_count}(TF, next_arg, ...) TF(next_arg) _PP_EACH_#{arg_count-1}(TF, __VA_ARGS__)" } + ) + end + + def each_with_index + CFile::wrap_macro_set('PP_EACH_IDX', + [ + "PP_EACH_IDX(TF, ...) _PP_EACH_IDX(TF, PP_NARG(__VA_ARGS__), __VA_ARGS__)", + "_PP_EACH_IDX(TF, N, ...) __PP_EACH_IDX(TF, N, __VA_ARGS__)", + "__PP_EACH_IDX(TF, N, ...) _PP_EACH_IDX_##N(TF, __VA_ARGS__)", + "", + "_PP_EACH_IDX_0(TF, dummy)" + ] + (1..@max_arg_count).map do |arg_count| + arg_indices = (0..arg_count-1) + arg_ids = arg_indices.map{ |aidx| "_#{aidx}"} + macro_signature = "_PP_EACH_IDX_#{arg_count}(TF, #{arg_ids.join(', ')})" + macro_body = arg_indices.map { |aidx| "TF(_#{aidx}, #{aidx})" }.join(' ') + "#{macro_signature} #{macro_body}" + end + ) + end + + def parameterised_each_with_index(n) + fargs = (1..n).map { |aidx| "P#{aidx}"}.join(", ") + CFile::wrap_macro_set("PP_#{n}PAR_EACH_IDX", + [ + "PP_#{n}PAR_EACH_IDX(TF, #{fargs}, ...) _PP_#{n}PAR_EACH_IDX(TF, #{fargs}, PP_NARG(__VA_ARGS__), __VA_ARGS__)", + "_PP_#{n}PAR_EACH_IDX(TF, #{fargs}, N, ...) __PP_#{n}PAR_EACH_IDX(TF, #{fargs}, N, __VA_ARGS__)", + "__PP_#{n}PAR_EACH_IDX(TF, #{fargs}, N, ...) _PP_#{n}PAR_IDX_##N(TF, #{fargs}, __VA_ARGS__)", + "", + "_PP_#{n}PAR_IDX_0(TF, ARG, dummy)", + ] + (1..@max_arg_count).map do |arg_count| + arg_indices = (0..arg_count-1) + arg_ids = arg_indices.map{ |aidx| "_#{aidx}"} + macro_signature = "_PP_#{n}PAR_IDX_#{arg_count}(TF, #{fargs}, #{arg_ids.join(', ')})" + macro_body = arg_indices.map { |aidx| "TF(#{fargs}, _#{aidx}, #{aidx})" }.join(' ') + "#{macro_signature} #{macro_body}" + end + ) + end + + def generate_header + <<-EOH +/** + * @file + * + * pp_iter.h + * Some useful c preprocessor extensions for dealing with variadic macros + * + * @author Cormac Cannon (cormacc.public@gmail.com) + * + * This is auto-generated code. The generator script and further background/usage info may be found here: + * https://github.com/cormacc/va_args_iterators + * + * Autogenerated on #{DateTime.now.strftime("%d/%m/%Y %H:%M")} + * - Script: #{$0} + * - Max argument count: #{@max_arg_count} + * + * I initially encountered the variadic macro counting logic in this post by Laurent Deniau: + * https://groups.google.com/forum/#!topic/comp.std.c/d-6Mj5Lko_s + * Refined by arpad. and zhangj to handle the no-argument case + * + * Recursive PP_EACH implementation based on this blog post by Daniel Hardman: + * https://codecraft.co/2014/11/25/variadic-macros-tricks/ + * + * The PP_nPAR_EACH_IDX macro implementations extend the non-recursive PP_EACH implementation + * described in this (anonymous) blog post: + * http://ptspts.blogspot.ie/2013/11/how-to-apply-macro-to-all-arguments-of.html + * + * This MSVC macro expansion fix was lifted from the excellent fake function framework: + * https://github.com/meekrosoft/fff + */ + +#ifndef PP_ITER_H +# define PP_ITER_H + +# ifdef __cplusplus +extern "C" { +# endif + +//MSVC non-standard macro expansion fix +#{narg_common} + +//Argument counting +#{narg} + + +//PP_EACH +#{each} + + +//PP_EACH_IDX +#{each_with_index} + + +//PP_1PAR_EACH_IDX +#{parameterised_each_with_index(1)} + + +//PP_2PAR_EACH_IDX +#{parameterised_each_with_index(2)} + +# ifdef __cplusplus +} +# endif + +#endif /* PP_ITER_H */ +EOH + end + +end + +# Generate a header if run standalone rather than required as a dependency +if __FILE__==$0 + ppi = ARGV.empty? ? PPIterators.new() : PPIterators.new(ARGV[0].to_i) + puts ppi.generate_header +end diff --git a/test/fff_test_c.c b/test/fff_test_c.c index 8f7af90..d0339c4 100644 --- a/test/fff_test_c.c +++ b/test/fff_test_c.c @@ -1,4 +1,3 @@ - // Want to keep the argument history for 13 calls #define OVERRIDE_ARG_HIST_LEN 13u #define FFF_ARG_HISTORY_LEN OVERRIDE_ARG_HIST_LEN @@ -6,6 +5,7 @@ #define OVERRIDE_CALL_HIST_LEN 17u #define FFF_CALL_HISTORY_LEN OVERRIDE_CALL_HIST_LEN + #include "../fff.h" #include "c_test_framework.h" @@ -13,7 +13,9 @@ #include #include - +// Could move this into c_test_framework.h, but it uses the PP iteration macros from fff.h.... +#define RUN_INDEXED_TEST(SUITE, TEST_COUNT, TESTNAME, IDX) do { printf(" Running (%d/%d) %s.%s: \n", IDX+1, TEST_COUNT, #SUITE, #TESTNAME); setup(); TESTNAME(); printf(" SUCCESS\n"); } while (0); +#define RUN_TESTS(SUITE, ...) PP_2PAR_EACH_IDX(RUN_INDEXED_TEST, SUITE, PP_NARG(__VA_ARGS__), __VA_ARGS__) enum MYBOOL { FALSE = 899, TRUE }; struct MyStruct { @@ -47,6 +49,9 @@ FAKE_VOID_FUNC(__cdecl, voidfunc20, int, int, int, int, int, int, int, int, int, FAKE_VALUE_FUNC(int, __cdecl, valuefunc20, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int); #endif +#include "test_cases.include" +#include "test_cases_assertions.include" + void setup() { RESET_FAKE(voidfunc1); @@ -59,10 +64,10 @@ void setup() RESET_FAKE(valuefunc3var); RESET_FAKE(strlcpy3); FFF_RESET_HISTORY(); + RESET_FAKE_ASSERTIONS(); } -#include "test_cases.include" TEST_F(FFFTestSuite, default_constants_can_be_overridden) { @@ -81,48 +86,86 @@ int main() fflush(0); /* Run tests */ - RUN_TEST(FFFTestSuite, when_void_func_never_called_then_callcount_is_zero); - RUN_TEST(FFFTestSuite, when_void_func_called_once_then_callcount_is_one); - RUN_TEST(FFFTestSuite, when_void_func_called_once_and_reset_then_callcount_is_zero); - RUN_TEST(FFFTestSuite, when_void_func_with_1_integer_arg_called_then_last_arg_captured); - RUN_TEST(FFFTestSuite, when_void_func_with_1_integer_arg_called_twice_then_last_arg_captured); - RUN_TEST(FFFTestSuite, when_void_func_with_1_integer_arg_called_and_reset_then_captured_arg_is_zero); - RUN_TEST(FFFTestSuite, when_void_func_with_2_char_args_called_then_last_args_captured); - RUN_TEST(FFFTestSuite, when_void_func_with_2_char_args_called_twice_then_last_args_captured); - RUN_TEST(FFFTestSuite, when_void_func_with_2_char_args_called_and_reset_then_captured_arg_is_zero); - RUN_TEST(FFFTestSuite, when_fake_func_called_then_const_arguments_captured); - - RUN_TEST(FFFTestSuite, when_fake_func_created_default_history_is_fifty_calls); - RUN_TEST(FFFTestSuite, when_fake_func_called_then_arguments_captured_in_history); - RUN_TEST(FFFTestSuite, argument_history_is_reset_when_RESET_FAKE_called); - RUN_TEST(FFFTestSuite, when_fake_func_called_max_times_then_no_argument_histories_dropped); - RUN_TEST(FFFTestSuite, when_fake_func_called_max_times_plus_one_then_one_argument_history_dropped); - - RUN_TEST(FFFTestSuite, value_func_will_return_zero_by_default); - RUN_TEST(FFFTestSuite, value_func_will_return_value_given); - RUN_TEST(FFFTestSuite, value_func_will_return_zero_after_reset); - RUN_TEST(FFFTestSuite, register_call_macro_registers_one_call); - RUN_TEST(FFFTestSuite, register_call_macro_registers_two_calls); - RUN_TEST(FFFTestSuite, reset_call_history_resets_call_history); - RUN_TEST(FFFTestSuite, call_history_will_not_write_past_array_bounds); - RUN_TEST(FFFTestSuite, calling_fake_registers_one_call); - - RUN_TEST(FFFTestSuite, return_value_sequences_not_exhausted); - RUN_TEST(FFFTestSuite, return_value_sequences_exhausted); - RUN_TEST(FFFTestSuite, default_constants_can_be_overridden); - - RUN_TEST(FFFTestSuite, can_register_custom_fake); - RUN_TEST(FFFTestSuite, when_value_custom_fake_called_THEN_it_returns_custom_return_value); - - RUN_TEST(FFFTestSuite, use_void_vararg_fake_with_different_number_of_arguments); - RUN_TEST(FFFTestSuite, use_value_vararg_fake_with_different_number_of_arguments); - RUN_TEST(FFFTestSuite, vararg_custom_fake_sequence_not_exhausted); - RUN_TEST(FFFTestSuite, vararg_custom_fake_seq_return_values_saved_in_history); - RUN_TEST(FFFTestSuite, vararg_custom_fake_sequence_exhausted); - RUN_TEST(FFFTestSuite, vararg_custom_fake_sequence_reset); - - RUN_TEST(FFFTestSuite, can_capture_upto_20_arguments_correctly); - RUN_TEST(FFFTestSuite, value_func_can_capture_upto_20_arguments_correctly); + RUN_TESTS(FFFTestSuite, + when_void_func_never_called_then_callcount_is_zero, + when_void_func_called_once_then_callcount_is_one, + when_void_func_called_once_and_reset_then_callcount_is_zero, + when_void_func_with_1_integer_arg_called_then_last_arg_captured, + when_void_func_with_1_integer_arg_called_twice_then_last_arg_captured, + when_void_func_with_1_integer_arg_called_and_reset_then_captured_arg_is_zero, + when_void_func_with_2_char_args_called_then_last_args_captured, + when_void_func_with_2_char_args_called_twice_then_last_args_captured, + when_void_func_with_2_char_args_called_and_reset_then_captured_arg_is_zero, + when_fake_func_called_then_const_arguments_captured, + + when_fake_func_created_default_history_is_fifty_calls, + when_fake_func_called_then_arguments_captured_in_history, + argument_history_is_reset_when_RESET_FAKE_called, + when_fake_func_called_max_times_then_no_argument_histories_dropped, + when_fake_func_called_max_times_plus_one_then_one_argument_history_dropped, + + value_func_will_return_zero_by_default, + value_func_will_return_value_given, + value_func_will_return_zero_after_reset, + + register_call_macro_registers_one_call, + register_call_macro_registers_two_calls, + reset_call_history_resets_call_history, + call_history_will_not_write_past_array_bounds, + calling_fake_registers_one_call, + + return_value_sequences_not_exhausted, return_value_sequences_exhausted, + + default_constants_can_be_overridden, + + can_register_custom_fake, + when_value_custom_fake_called_THEN_it_returns_custom_return_value, + + use_void_vararg_fake_with_different_number_of_arguments, + use_value_vararg_fake_with_different_number_of_arguments, + vararg_custom_fake_sequence_not_exhausted, + vararg_custom_fake_seq_return_values_saved_in_history, + vararg_custom_fake_sequence_exhausted, + vararg_custom_fake_sequence_reset, + + can_capture_upto_20_arguments_correctly, + value_func_can_capture_upto_20_arguments_correctly, + + variadic_return_values_should_set_return_val_given_single_value, + variadic_return_values_should_set_return_sequence_given_multiple_values, + variadic_return_values, + variadic_return_values_no_array_name_collisions_when_called_repeatedly, + variadic_return_values_no_assertion_given_single_value, + variadic_return_values_assertion_valid_given_value_sequence, + variadic_return_values_assertion_invalid_given_0_length_sequence, + + assert_calls_assertion_valid_given_match, + assert_calls_assertion_invalid_when_underestimated, + assert_calls_assertion_invalid_when_overestimated, + + assert_called_assertion_valid_when_called_once, + assert_called_assertion_invalid_when_not_called, + assert_called_assertion_invalid_when_called_more_than_once, + + assert_not_called_assertion_valid_when_not_called, + assert_not_called_assertion_invalid_when_called_once, + assert_not_called_assertion_invalid_when_called_more_than_once, + + assert_call_assertion_valid_when_all_args_specified_and_matched, + assert_call_assertion_valid_when_some_args_specified_and_matched, + assert_call_assertion_invalid_when_called_more_than_once, + assert_call_assertion_invalid_given_arg_mismatch, + + assert_nth_call_assertion_valid_given_matching_args, + assert_nth_call_assertion_invalid_given_arg_mismatch, + + assert_last_call_assertion_valid_given_multiple_calls, + assert_last_call_assertion_invalid_given_previous_call_args, + + assert_any_call_assertion_valid_given_any_match, + assert_any_call_assertion_invalid_given_no_match, + assert_no_call_assertion_invalid_given_any_match, + assert_no_call_assertion_valid_given_no_match) printf("\n-------------\n"); printf("Complete\n"); diff --git a/test/test_cases_assertions.include b/test/test_cases_assertions.include new file mode 100644 index 0000000..00292e0 --- /dev/null +++ b/test/test_cases_assertions.include @@ -0,0 +1,351 @@ +static int valid_assertions_, invalid_assertions_; +#define _FFF_ASSERT_EQ_MSG(EXP, ACT, MSG) if ((EXP)==(ACT)) { valid_assertions_++; } else { invalid_assertions_++; } + +enum AssertionResult { + INVALID, + VALID +}; + +#define ASSERT_FAKE_ASSERTION_WAS(RSLT) \ + if((RSLT)==VALID) ASSERT_EQ(1, valid_assertions_>0); \ + ASSERT_EQ((!(RSLT)), invalid_assertions_>0) + +#define RESET_FAKE_ASSERTIONS() valid_assertions_ = invalid_assertions_ = 0 + +TEST_F(FFFTestSuite, variadic_return_values_should_set_return_val_given_single_value) +{ + FFF_RETURN(longfunc0, 3); + ASSERT_EQ(3, FFF_RET(longfunc0)); + ASSERT_EQ(NULL, FFF(longfunc0).return_val_seq); + ASSERT_EQ(0, FFF(longfunc0).return_val_seq_len); +} + +TEST_F(FFFTestSuite, variadic_return_values_should_set_return_sequence_given_multiple_values) +{ + FFF_RETURN(longfunc0, 3, 2, 1); + ASSERT_EQ(0, FFF_RET(longfunc0)); + ASSERT_EQ(3, FFF(longfunc0).return_val_seq_len); + ASSERT_EQ(3, FFF(longfunc0).return_val_seq[0]); + ASSERT_EQ(2, FFF(longfunc0).return_val_seq[1]); + ASSERT_EQ(1, FFF(longfunc0).return_val_seq[2]); +} + +TEST_F(FFFTestSuite, variadic_return_values) +{ + FFF_RETURN(longfunc0, 3, 7, 9); + ASSERT_EQ(3, longfunc0()); + ASSERT_EQ(7, longfunc0()); + ASSERT_EQ(9, longfunc0()); + ASSERT_EQ(9, longfunc0()); + ASSERT_EQ(9, longfunc0()); +} + +TEST_F(FFFTestSuite, variadic_return_values_no_array_name_collisions_when_called_repeatedly) +{ + FFF_RETURN(longfunc0, 3, 7, 9); + FFF_RETURN(longfunc0, 2, 4); + ASSERT_EQ(2, longfunc0()); + ASSERT_EQ(4, longfunc0()); + ASSERT_EQ(4, longfunc0()); +} + +TEST_F(FFFTestSuite, variadic_return_values_no_assertion_given_single_value) +{ + FFF_RETURN(longfunc0, 1); + + ASSERT_EQ(0, valid_assertions_); + ASSERT_EQ(0, invalid_assertions_); +} + +TEST_F(FFFTestSuite, variadic_return_values_assertion_valid_given_value_sequence) +{ + FFF_RETURN(longfunc0, 1, 2, 3); + + ASSERT_FAKE_ASSERTION_WAS(VALID); +} + +TEST_F(FFFTestSuite, variadic_return_values_assertion_invalid_given_0_length_sequence) +{ + FFF_RETURN(longfunc0); + + ASSERT_FAKE_ASSERTION_WAS(INVALID); +} + +static void _callFake(int ncalls) +{ + //... reset assertion counters + valid_assertions_ = invalid_assertions_ = 0; + RESET_FAKE(longfunc0); + //... make the calls + while(ncalls--) { + longfunc0(); + } +} + + +static void do_FFF_ASSERT_CALLS_test(int ncalls_made, int ncalls_asserted) +{ + + //Given + _callFake(ncalls_made); + + //When + FFF_ASSERT_CALLS(longfunc0, ncalls_asserted); + + //Then + ASSERT_FAKE_ASSERTION_WAS(ncalls_made==ncalls_asserted); +} + +TEST_F(FFFTestSuite, assert_calls_assertion_valid_given_match) +{ + do_FFF_ASSERT_CALLS_test(0,0); + do_FFF_ASSERT_CALLS_test(1,1); + do_FFF_ASSERT_CALLS_test(9,9); +} + +TEST_F(FFFTestSuite, assert_calls_assertion_invalid_when_overestimated) +{ + do_FFF_ASSERT_CALLS_test(0,1); + do_FFF_ASSERT_CALLS_test(1,3); + do_FFF_ASSERT_CALLS_test(9,15); +} + +TEST_F(FFFTestSuite, assert_calls_assertion_invalid_when_underestimated) +{ + do_FFF_ASSERT_CALLS_test(3,2); + do_FFF_ASSERT_CALLS_test(9,7); +} + +TEST_F(FFFTestSuite, assert_called_assertion_valid_when_called_once) +{ + //Given + _callFake(1); + + //When + FFF_ASSERT_CALLED(longfunc0); + + //Then + ASSERT_FAKE_ASSERTION_WAS(VALID); +} + +TEST_F(FFFTestSuite, assert_called_assertion_invalid_when_not_called) +{ + //Given + _callFake(0); + + //When + FFF_ASSERT_CALLED(longfunc0); + + //Then + ASSERT_FAKE_ASSERTION_WAS(INVALID); +} + +TEST_F(FFFTestSuite, assert_called_assertion_invalid_when_called_more_than_once) +{ + //Given + _callFake(2); + + //When + FFF_ASSERT_CALLED(longfunc0); + + //Then + ASSERT_FAKE_ASSERTION_WAS(INVALID); +} + +TEST_F(FFFTestSuite, assert_not_called_assertion_valid_when_not_called) +{ + //Given + _callFake(0); + + //When + FFF_ASSERT_NOT_CALLED(longfunc0); + + //Then + ASSERT_FAKE_ASSERTION_WAS(VALID); +} + + +TEST_F(FFFTestSuite, assert_not_called_assertion_invalid_when_called_once) +{ + //Given + _callFake(1); + + //When + FFF_ASSERT_NOT_CALLED(longfunc0); + + //Then + ASSERT_FAKE_ASSERTION_WAS(INVALID); +} + +TEST_F(FFFTestSuite, assert_not_called_assertion_invalid_when_called_more_than_once) +{ + //Given + _callFake(5); + + //When + FFF_ASSERT_NOT_CALLED(longfunc0); + + //Then + ASSERT_FAKE_ASSERTION_WAS(INVALID); +} + +TEST_F(FFFTestSuite, assert_call_assertion_valid_when_all_args_specified_and_matched) +{ + //Given + voidfunc2('a', 'b'); + + //When + FFF_ASSERT(voidfunc2, 'a', 'b'); + + //Then + ASSERT_FAKE_ASSERTION_WAS(VALID); +} + +TEST_F(FFFTestSuite, assert_call_assertion_valid_when_some_args_specified_and_matched) +{ + //Given + voidfunc2('a', 'b'); + + //When + FFF_ASSERT(voidfunc2, 'a'); + + //Then + ASSERT_FAKE_ASSERTION_WAS(VALID); +} + +TEST_F(FFFTestSuite, assert_call_assertion_invalid_when_called_more_than_once) +{ + //Given + voidfunc2('a', 'b'); + voidfunc2('a', 'b'); + + //When + FFF_ASSERT(voidfunc2, 'a', 'b'); + + //Then + ASSERT_FAKE_ASSERTION_WAS(INVALID); +} + +TEST_F(FFFTestSuite, assert_call_assertion_invalid_given_arg_mismatch) +{ + //Given + voidfunc2('a', 'b'); + + //When + FFF_ASSERT(voidfunc2, 'a', 'a'); + + //Then + ASSERT_FAKE_ASSERTION_WAS(INVALID); +} + +TEST_F(FFFTestSuite, assert_nth_call_assertion_valid_given_matching_args) +{ + //Given + voidfunc2('a', 'a'); + voidfunc2('a', 'b'); + voidfunc2('b', 'a'); + + //When + FFF_ASSERT_NTH(voidfunc2, 2, 'a', 'b'); + + //Then + ASSERT_FAKE_ASSERTION_WAS(VALID); +} + +TEST_F(FFFTestSuite, assert_nth_call_assertion_invalid_given_arg_mismatch) +{ + //Given + voidfunc2('a', 'a'); + voidfunc2('a', 'b'); + voidfunc2('b', 'a'); + + //When + FFF_ASSERT_NTH(voidfunc2, 3, 'a', 'b'); + + //Then + ASSERT_FAKE_ASSERTION_WAS(INVALID); +} + +TEST_F(FFFTestSuite, assert_last_call_assertion_valid_given_multiple_calls) +{ + //Given + voidfunc2('a', 'a'); + voidfunc2('a', 'b'); + + //When + FFF_ASSERT_LAST(voidfunc2, 'a', 'b'); + + //Then + ASSERT_FAKE_ASSERTION_WAS(VALID); +} + +TEST_F(FFFTestSuite, assert_last_call_assertion_invalid_given_previous_call_args) +{ + //Given + voidfunc2('a', 'a'); + voidfunc2('a', 'b'); + + //When + FFF_ASSERT_LAST(voidfunc2, 'a', 'a'); + + //Then + ASSERT_FAKE_ASSERTION_WAS(INVALID); +} + +TEST_F(FFFTestSuite, assert_any_call_assertion_valid_given_any_match) +{ + //Given + voidfunc2('a', 'a'); + voidfunc2('a', 'b'); + voidfunc2('b', 'a'); + + //When + FFF_ASSERT_ANY(voidfunc2, 'a', 'b'); + FFF_ASSERT_ANY(voidfunc2, 'a', 'a'); + FFF_ASSERT_ANY(voidfunc2, 'b', 'a'); + + //Then + ASSERT_FAKE_ASSERTION_WAS(VALID); +} + +TEST_F(FFFTestSuite, assert_any_call_assertion_invalid_given_no_match) +{ + //Given + voidfunc2('a', 'a'); + voidfunc2('a', 'b'); + voidfunc2('b', 'a'); + + //When + FFF_ASSERT_ANY(voidfunc2, 'a', 'c'); + + //Then + ASSERT_FAKE_ASSERTION_WAS(INVALID); +} + +TEST_F(FFFTestSuite, assert_no_call_assertion_invalid_given_any_match) +{ + //Given + voidfunc2('a', 'a'); + voidfunc2('a', 'b'); + voidfunc2('b', 'a'); + + //When + FFF_ASSERT_NONE(voidfunc2, 'a', 'a'); + + //Then + ASSERT_FAKE_ASSERTION_WAS(INVALID); +} + +TEST_F(FFFTestSuite, assert_no_call_assertion_valid_given_no_match) +{ + //Given + voidfunc2('a', 'a'); + voidfunc2('a', 'b'); + voidfunc2('b', 'a'); + + //When + FFF_ASSERT_NONE(voidfunc2, 'a', 'c'); + + //Then + ASSERT_FAKE_ASSERTION_WAS(VALID); +} From fb28d0b49bac26934e29163652331392987e633d Mon Sep 17 00:00:00 2001 From: cormacc Date: Sun, 23 Jun 2019 17:11:26 +0100 Subject: [PATCH 02/15] Using tail recursion for pp_each macros (gcc extensions not required) --- buildandtest | 2 +- fakegen.rb | 11 +- fff.h | 371 +++++++++++++++----------- pp_iterators.rb | 405 +++++++++++++++++++++++------ test/Makefile | 10 +- test/fff_test_c.c | 6 +- test/test_cases_assertions.include | 10 +- 7 files changed, 564 insertions(+), 251 deletions(-) diff --git a/buildandtest b/buildandtest index bd9945b..278efa8 100755 --- a/buildandtest +++ b/buildandtest @@ -6,7 +6,7 @@ echo >> fff.h ruby fakegen.rb >> fff.h make clean make all -build/fff_test_c +build/fff_test_c build/fff_test_cpp --gtest_output=xml:build/test_results.xml build/ui_test_ansic build/ui_test_cpp --gtest_output=xml:build/example_results.xml diff --git a/fakegen.rb b/fakegen.rb index b67d9c8..01112d3 100644 --- a/fakegen.rb +++ b/fakegen.rb @@ -635,10 +635,7 @@ def output_macro_counting_shortcuts(has_calling_conventions) ppiter = PPIterators.new() putd <<-MACRO_COUNTING -#ifndef PP_NARG -#{ppiter.narg_common} -#{ppiter.narg} -#endif +#{ppiter.embed_macros} #{ppiter.narg_minus(1)} @@ -646,12 +643,14 @@ def output_macro_counting_shortcuts(has_calling_conventions) #{ppiter.narg_minus(3)} +#{ppiter.parameterised_each_with_index} + #ifndef PP_1PAR_EACH_IDX -#{ppiter.parameterised_each_with_index(1)} +#{ppiter.parameterised_each_with_index_n(1)} #endif #ifndef PP_2PAR_EACH_IDX -#{ppiter.parameterised_each_with_index(2)} +#{ppiter.parameterised_each_with_index_n(2)} #endif /* DECLARE AND DEFINE FAKE FUNCTIONS - PLACE IN TEST FILES */ diff --git a/fff.h b/fff.h index 4517fbc..ac51ffb 100644 --- a/fff.h +++ b/fff.h @@ -6553,192 +6553,257 @@ FFF_END_EXTERN_C DEFINE_FAKE_VALUE_FUNC20_VARARG(RETURN_TYPE, FUNCNAME, ARG0_TYPE, ARG1_TYPE, ARG2_TYPE, ARG3_TYPE, ARG4_TYPE, ARG5_TYPE, ARG6_TYPE, ARG7_TYPE, ARG8_TYPE, ARG9_TYPE, ARG10_TYPE, ARG11_TYPE, ARG12_TYPE, ARG13_TYPE, ARG14_TYPE, ARG15_TYPE, ARG16_TYPE, ARG17_TYPE, ARG18_TYPE, ...) \ -#ifndef PP_NARG -#ifndef PP_UTIL - #define EXPAND(x) x + +//Defer / evaluate macros +#ifndef DEFER + #define PP_NOP() + #define DEFER(...) __VA_ARGS__ PP_NOP() + #define DEFER2(...) __VA_ARGS__ DEFER(PP_NOP) () + #define DEFER3(...) __VA_ARGS__ DEFER2(PP_NOP) () + #define DEFER4(...) __VA_ARGS__ DEFER3(PP_NOP) () + #define DEFER5(...) __VA_ARGS__ DEFER4(PP_NOP) () + #define DEFER6(...) __VA_ARGS__ DEFER5(PP_NOP) () +#endif //DEFER + +#ifndef EVAL + #define EVAL(...) _EVAL_8(__VA_ARGS__) + #define _EVAL_1(...) __VA_ARGS__ + #define _EVAL_2(...) _EVAL_1(_EVAL_1(__VA_ARGS__)) + #define _EVAL_3(...) _EVAL_2(_EVAL_2(__VA_ARGS__)) + #define _EVAL_4(...) _EVAL_3(_EVAL_3(__VA_ARGS__)) + #define _EVAL_5(...) _EVAL_4(_EVAL_4(__VA_ARGS__)) + #define _EVAL_6(...) _EVAL_5(_EVAL_5(__VA_ARGS__)) + #define _EVAL_7(...) _EVAL_6(_EVAL_6(__VA_ARGS__)) + #define _EVAL_8(...) _EVAL_7(_EVAL_7(__VA_ARGS__)) +#endif //EVAL + +#ifndef EVAL_ + #define EVAL_(...) _EVAL__8(__VA_ARGS__) + #define _EVAL__1(...) __VA_ARGS__ + #define _EVAL__2(...) _EVAL__1(_EVAL__1(__VA_ARGS__)) + #define _EVAL__3(...) _EVAL__2(_EVAL__2(__VA_ARGS__)) + #define _EVAL__4(...) _EVAL__3(_EVAL__3(__VA_ARGS__)) + #define _EVAL__5(...) _EVAL__4(_EVAL__4(__VA_ARGS__)) + #define _EVAL__6(...) _EVAL__5(_EVAL__5(__VA_ARGS__)) + #define _EVAL__7(...) _EVAL__6(_EVAL__6(__VA_ARGS__)) + #define _EVAL__8(...) _EVAL__7(_EVAL__7(__VA_ARGS__)) +#endif //EVAL_ + + +//Token concatenation (tuple-aware) +#ifndef PP_CAT + #define PP_CAT + // Defer the call to the CAT so that we get the updated parameters first + #define CAT(a, b) _CAT_EVAL ( _CAT_EXPAND_PARAMETERS(a, b) ) + #define _CAT_EVAL(...) _CAT_HELPER __VA_ARGS__ + + // Find the result of testing whether a macro is enclosed or not + #define _CAT_EXPAND_PARAMETERS(a, b) (a, _CAT_PAREN_CHECK b, DEFAULT, b ) + #define _CAT_PAREN_CHECK(...) EXPANDED, ENCLOSED, (__VA_ARGS__) ) EAT ( + + // Pattern match the result of testing if it is enclose or not + #define _CAT_HELPER(a, _, f, b) _CAT_HELPER_ ## f (a, b) + #define _CAT_HELPER_ENCLOSED(a, b) a b + #define _CAT_HELPER_DEFAULT(a, b) a ## b +#endif //PP_CAT + + +//Logical operations +#ifndef PP_LOGIC + #define PP_LOGIC + //Usage: IF() (, ) + #define IF(value) CAT(_IF_, value) + #define _IF_1(true, ...) true + #define _IF_0(true, ...) __VA_ARGS__ + + #define NOT(x) PP_MATCHER ( CAT(NOT_, x), 0 ) + #define NOT_0 EXISTS(1) + + //== Building blocks + + //PP_MATCHER + #define PP_MATCHER(value, ...) IF ( _MATCH(_MATCH_FIND(value)) ) ( _MATCH_EXTRACT(value), __VA_ARGS__ ) + + #define _MATCH(x) CAT(__MATCH_, x) + #define __MATCH_EXISTS(...) 1 + #define __MATCH_UNMATCHED 0 + + #define _MATCH_FIND(x) __MATCH_RESULT_EXTRACT ( __MATCH_RESULT_FIND(x) ) + + /** + * Extract 2nd element of a match result in the format: + * (IGNORED, EXISTS(DEFINED_VALUE)) or (IGNORED, UNMATCHED) + * This is appended to __MATCH_ to convert result to a boolean, + */ + #define __MATCH_RESULT_EXTRACT(x) __MATCH_RESULT_EXTRACT_HELPER x + #define __MATCH_RESULT_EXTRACT_HELPER(match, return_value) return_value + + /** + * __MATCH_RESULT_FIND( EXISTS(bla) ) returns ( EXPANDED, EXISTS(bla) ) + * __MATCH_RESULT_FIND( bla ) returns ( TEST_bla, UNMATCHED) + */ + #define __MATCH_RESULT_FIND(x) ( CAT(__MATCH_RESULT_EXPAND_, x), UNMATCHED ) + #define __MATCH_RESULT_EXPAND_EXISTS(...) EXPANDED, EXISTS(__VA_ARGS__) ) EAT ( + #define EAT(...) + + //_MATCH_EXTRACT / __MATCH_EXTRACT_EXISTS + #define _MATCH_EXTRACT(value) CAT(__MATCH_EXTRACT_, value) + #define __MATCH_EXTRACT_EXISTS(...) __VA_ARGS__ +#endif //PP_LOGIC + + +//Lists (HEAD, TAIL, ISEMPTY etc.) +#ifndef PP_LISTS + #define PP_LISTS #define HEAD(FIRST, ...) FIRST #define TAIL(FIRST, ...) __VA_ARGS__ - #define CAT(A, B) _CAT(A,B) - #define _CAT(A, B) A ## B - #define PP_RSEQ_N() 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 + + #define TEST_LAST EXISTS(1) + #define NOT_EMPTY(...) NOT(IS_EMPTY(__VA_ARGS__)) + #define IS_EMPTY(...) _ISEMPTY( /* test if there is just one argument, eventually an empty one */ HAS_COMMA(__VA_ARGS__), /* test if _TRIGGER_PARENTHESIS_ together with the argument adds a comma */ HAS_COMMA(_TRIGGER_PARENTHESIS_ __VA_ARGS__), /* test if the argument together with a parenthesis adds a comma */ HAS_COMMA(__VA_ARGS__ (/*empty*/)), /* test if placing it between _TRIGGER_PARENTHESIS_ and the parenthesis adds a comma */ HAS_COMMA(_TRIGGER_PARENTHESIS_ __VA_ARGS__ (/*empty*/)) ) + + #define _ISEMPTY(_0, _1, _2, _3) HAS_COMMA(PASTE5(_IS_EMPTY_CASE_, _0, _1, _2, _3)) + + #define HAS_COMMA(...) PP_ARG_N(__VA_ARGS__, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0) + + #define _TRIGGER_PARENTHESIS_(...) , + + #define PASTE5(_0, _1, _2, _3, _4) _0 ## _1 ## _2 ## _3 ## _4 + #define _IS_EMPTY_CASE_0001 , +#endif //PP_LISTS + + +//Tuples +#ifndef PP_TUPLES + #define PP_TUPLES + #define PAREN(...) ( __VA_ARGS__ ) + #define DEPAREN(...) DEPAREN_ __VA_ARGS__ + #define DEPAREN_(...) __VA_ARGS__ + + #define IS_ENCLOSED(x, ...) PP_MATCHER ( IS_ENCLOSED_TEST x, 0 ) + #define IS_ENCLOSED_TEST(...) EXISTS(1) + + #define IF_ENCLOSED(...) CAT(_IF_ENCLOSED_, IS_ENCLOSED(__VA_ARGS__)) + #define _IF_ENCLOSED_0(true, ...) __VA_ARGS__ + #define _IF_ENCLOSED_1(true, ...) true + // This function will optionally remove parentheses around its arguments + // if there are any. Otherwise it will return normally + #define OPT_DEPAREN(...) IF_ENCLOSED (__VA_ARGS__) ( DEPAREN(__VA_ARGS__), __VA_ARGS__ ) +#endif //PP_TUPLES + + +//Argument counting +#ifndef PP_UTIL + #define PP_UTIL + #define EXPAND(x) x + #define PP_SEQ_N() 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256 + #define PP_RSEQ_N() 256, 255, 254, 253, 252, 251, 250, 249, 248, 247, 246, 245, 244, 243, 242, 241, 240, 239, 238, 237, 236, 235, 234, 233, 232, 231, 230, 229, 228, 227, 226, 225, 224, 223, 222, 221, 220, 219, 218, 217, 216, 215, 214, 213, 212, 211, 210, 209, 208, 207, 206, 205, 204, 203, 202, 201, 200, 199, 198, 197, 196, 195, 194, 193, 192, 191, 190, 189, 188, 187, 186, 185, 184, 183, 182, 181, 180, 179, 178, 177, 176, 175, 174, 173, 172, 171, 170, 169, 168, 167, 166, 165, 164, 163, 162, 161, 160, 159, 158, 157, 156, 155, 154, 153, 152, 151, 150, 149, 148, 147, 146, 145, 144, 143, 142, 141, 140, 139, 138, 137, 136, 135, 134, 133, 132, 131, 130, 129, 128, 127, 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116, 115, 114, 113, 112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 #endif //PP_UTIL #ifndef PP_NARG #define PP_NARG(...) EXPAND(PP_ARG_N(__VA_ARGS__, PP_RSEQ_N())) #define PP_ARG_N(...) EXPAND(_PP_ARG_N(__VA_ARGS__)) - #define _PP_ARG_N(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, N, ...) N + #define _PP_ARG_N(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, _65, _66, _67, _68, _69, _70, _71, _72, _73, _74, _75, _76, _77, _78, _79, _80, _81, _82, _83, _84, _85, _86, _87, _88, _89, _90, _91, _92, _93, _94, _95, _96, _97, _98, _99, _100, _101, _102, _103, _104, _105, _106, _107, _108, _109, _110, _111, _112, _113, _114, _115, _116, _117, _118, _119, _120, _121, _122, _123, _124, _125, _126, _127, _128, _129, _130, _131, _132, _133, _134, _135, _136, _137, _138, _139, _140, _141, _142, _143, _144, _145, _146, _147, _148, _149, _150, _151, _152, _153, _154, _155, _156, _157, _158, _159, _160, _161, _162, _163, _164, _165, _166, _167, _168, _169, _170, _171, _172, _173, _174, _175, _176, _177, _178, _179, _180, _181, _182, _183, _184, _185, _186, _187, _188, _189, _190, _191, _192, _193, _194, _195, _196, _197, _198, _199, _200, _201, _202, _203, _204, _205, _206, _207, _208, _209, _210, _211, _212, _213, _214, _215, _216, _217, _218, _219, _220, _221, _222, _223, _224, _225, _226, _227, _228, _229, _230, _231, _232, _233, _234, _235, _236, _237, _238, _239, _240, _241, _242, _243, _244, _245, _246, _247, _248, _249, _250, _251, _252, _253, _254, _255, _256, N, ...) N #endif //PP_NARG -#endif + +//PP_EACH +#ifndef PP_EACH + #define PP_EACH(TF, ...) \ + EVAL(_PP_EACH_DEFER(TF, __VA_ARGS__)) + + #define _PP_EACH_DEFER(TF, ...) \ + IF ( NOT_EMPTY( __VA_ARGS__ ) ) \ + ( \ + DEFER(TF) (OPT_DEPAREN(HEAD(__VA_ARGS__))) \ + DEFER2 ( __PP_EACH_DEFER ) () (TF, TAIL(__VA_ARGS__)) \ + ) + + //This indirection along with the DEFER2 and EVAL macros allows the recursive implementation of _PP_EACH_DEFER + #define __PP_EACH_DEFER() _PP_EACH_DEFER +#endif //PP_EACH + + +//PP_EACH_IDX +#ifndef PP_EACH_IDX + #define PP_EACH_IDX(TF, ...) EVAL(_PP_EACH_IDX_DEFER(TF, (PP_SEQ_N()), __VA_ARGS__)) + + #define _PP_EACH_IDX_DEFER(TF, VA_INDICES, ...) \ + IF ( NOT_EMPTY( __VA_ARGS__ ) ) \ + ( \ + DEFER2(TF) (OPT_DEPAREN(HEAD(__VA_ARGS__)), DEFER(HEAD)(DEPAREN(VA_INDICES))) \ + DEFER2 ( __PP_EACH_IDX_DEFER ) () (TF, (TAIL VA_INDICES), TAIL(__VA_ARGS__)) \ + ) + + #define __PP_EACH_IDX_DEFER() _PP_EACH_IDX_DEFER +#endif //PP_EACH_IDX + + +//PP_PAR_EACH_IDX +#ifndef PP_PAR_EACH_IDX + #define PP_PAR_EACH_IDX(TF, FARGS, ...) EVAL(_PP_PAR_EACH_IDX_DEFER(TF, FARGS, (PP_SEQ_N()), __VA_ARGS__)) + + #define _PP_PAR_EACH_IDX_DEFER(TF, FARGS, VA_INDICES, ...) \ + IF ( NOT_EMPTY( __VA_ARGS__ ) ) \ + ( \ + DEFER2(TF) (OPT_DEPAREN(FARGS), OPT_DEPAREN(HEAD(__VA_ARGS__)), DEFER(HEAD)(DEPAREN(VA_INDICES))) \ + DEFER2 ( __PP_PAR_EACH_IDX_DEFER ) () (TF, FARGS, (TAIL VA_INDICES), TAIL(__VA_ARGS__)) \ + ) + + #define __PP_PAR_EACH_IDX_DEFER() _PP_PAR_EACH_IDX_DEFER +#endif //PP_PAR_EACH_IDX + + +//PP_xPAR_EACH_IDX (Wrappers for deprecated macros) +#define PP_1PAR_EACH_IDX(TF, P1, ...) PP_PAR_EACH_IDX(TF, (P1), __VA_ARGS__) + +#define PP_2PAR_EACH_IDX(TF, P1, P2, ...) PP_PAR_EACH_IDX(TF, (P1, P2), __VA_ARGS__) + + + #ifndef PP_NARG_MINUS1 #define PP_NARG_MINUS1(...) EXPAND(PP_ARG_MINUS1_N(__VA_ARGS__, PP_RSEQ_N())) #define PP_ARG_MINUS1_N(...) EXPAND(_PP_ARG_MINUS1_N(__VA_ARGS__)) - #define _PP_ARG_MINUS1_N(__0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, N, ...) N + #define _PP_ARG_MINUS1_N(__0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, _65, _66, _67, _68, _69, _70, _71, _72, _73, _74, _75, _76, _77, _78, _79, _80, _81, _82, _83, _84, _85, _86, _87, _88, _89, _90, _91, _92, _93, _94, _95, _96, _97, _98, _99, _100, _101, _102, _103, _104, _105, _106, _107, _108, _109, _110, _111, _112, _113, _114, _115, _116, _117, _118, _119, _120, _121, _122, _123, _124, _125, _126, _127, _128, _129, _130, _131, _132, _133, _134, _135, _136, _137, _138, _139, _140, _141, _142, _143, _144, _145, _146, _147, _148, _149, _150, _151, _152, _153, _154, _155, _156, _157, _158, _159, _160, _161, _162, _163, _164, _165, _166, _167, _168, _169, _170, _171, _172, _173, _174, _175, _176, _177, _178, _179, _180, _181, _182, _183, _184, _185, _186, _187, _188, _189, _190, _191, _192, _193, _194, _195, _196, _197, _198, _199, _200, _201, _202, _203, _204, _205, _206, _207, _208, _209, _210, _211, _212, _213, _214, _215, _216, _217, _218, _219, _220, _221, _222, _223, _224, _225, _226, _227, _228, _229, _230, _231, _232, _233, _234, _235, _236, _237, _238, _239, _240, _241, _242, _243, _244, _245, _246, _247, _248, _249, _250, _251, _252, _253, _254, _255, _256, N, ...) N #endif //PP_NARG_MINUS1 #ifndef PP_NARG_MINUS2 #define PP_NARG_MINUS2(...) EXPAND(PP_ARG_MINUS2_N(__VA_ARGS__, PP_RSEQ_N())) #define PP_ARG_MINUS2_N(...) EXPAND(_PP_ARG_MINUS2_N(__VA_ARGS__)) - #define _PP_ARG_MINUS2_N(__1, __0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, N, ...) N + #define _PP_ARG_MINUS2_N(__1, __0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, _65, _66, _67, _68, _69, _70, _71, _72, _73, _74, _75, _76, _77, _78, _79, _80, _81, _82, _83, _84, _85, _86, _87, _88, _89, _90, _91, _92, _93, _94, _95, _96, _97, _98, _99, _100, _101, _102, _103, _104, _105, _106, _107, _108, _109, _110, _111, _112, _113, _114, _115, _116, _117, _118, _119, _120, _121, _122, _123, _124, _125, _126, _127, _128, _129, _130, _131, _132, _133, _134, _135, _136, _137, _138, _139, _140, _141, _142, _143, _144, _145, _146, _147, _148, _149, _150, _151, _152, _153, _154, _155, _156, _157, _158, _159, _160, _161, _162, _163, _164, _165, _166, _167, _168, _169, _170, _171, _172, _173, _174, _175, _176, _177, _178, _179, _180, _181, _182, _183, _184, _185, _186, _187, _188, _189, _190, _191, _192, _193, _194, _195, _196, _197, _198, _199, _200, _201, _202, _203, _204, _205, _206, _207, _208, _209, _210, _211, _212, _213, _214, _215, _216, _217, _218, _219, _220, _221, _222, _223, _224, _225, _226, _227, _228, _229, _230, _231, _232, _233, _234, _235, _236, _237, _238, _239, _240, _241, _242, _243, _244, _245, _246, _247, _248, _249, _250, _251, _252, _253, _254, _255, _256, N, ...) N #endif //PP_NARG_MINUS2 #ifndef PP_NARG_MINUS3 #define PP_NARG_MINUS3(...) EXPAND(PP_ARG_MINUS3_N(__VA_ARGS__, PP_RSEQ_N())) #define PP_ARG_MINUS3_N(...) EXPAND(_PP_ARG_MINUS3_N(__VA_ARGS__)) - #define _PP_ARG_MINUS3_N(__2, __1, __0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, N, ...) N + #define _PP_ARG_MINUS3_N(__2, __1, __0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, _65, _66, _67, _68, _69, _70, _71, _72, _73, _74, _75, _76, _77, _78, _79, _80, _81, _82, _83, _84, _85, _86, _87, _88, _89, _90, _91, _92, _93, _94, _95, _96, _97, _98, _99, _100, _101, _102, _103, _104, _105, _106, _107, _108, _109, _110, _111, _112, _113, _114, _115, _116, _117, _118, _119, _120, _121, _122, _123, _124, _125, _126, _127, _128, _129, _130, _131, _132, _133, _134, _135, _136, _137, _138, _139, _140, _141, _142, _143, _144, _145, _146, _147, _148, _149, _150, _151, _152, _153, _154, _155, _156, _157, _158, _159, _160, _161, _162, _163, _164, _165, _166, _167, _168, _169, _170, _171, _172, _173, _174, _175, _176, _177, _178, _179, _180, _181, _182, _183, _184, _185, _186, _187, _188, _189, _190, _191, _192, _193, _194, _195, _196, _197, _198, _199, _200, _201, _202, _203, _204, _205, _206, _207, _208, _209, _210, _211, _212, _213, _214, _215, _216, _217, _218, _219, _220, _221, _222, _223, _224, _225, _226, _227, _228, _229, _230, _231, _232, _233, _234, _235, _236, _237, _238, _239, _240, _241, _242, _243, _244, _245, _246, _247, _248, _249, _250, _251, _252, _253, _254, _255, _256, N, ...) N #endif //PP_NARG_MINUS3 +#ifndef PP_PAR_EACH_IDX + #define PP_PAR_EACH_IDX(TF, FARGS, ...) EVAL(_PP_PAR_EACH_IDX_DEFER(TF, FARGS, (PP_SEQ_N()), __VA_ARGS__)) + + #define _PP_PAR_EACH_IDX_DEFER(TF, FARGS, VA_INDICES, ...) \ + IF ( NOT_EMPTY( __VA_ARGS__ ) ) \ + ( \ + DEFER2(TF) (OPT_DEPAREN(FARGS), OPT_DEPAREN(HEAD(__VA_ARGS__)), DEFER(HEAD)(DEPAREN(VA_INDICES))) \ + DEFER2 ( __PP_PAR_EACH_IDX_DEFER ) () (TF, FARGS, (TAIL VA_INDICES), TAIL(__VA_ARGS__)) \ + ) + + #define __PP_PAR_EACH_IDX_DEFER() _PP_PAR_EACH_IDX_DEFER +#endif //PP_PAR_EACH_IDX + + #ifndef PP_1PAR_EACH_IDX -#ifndef PP_1PAR_EACH_IDX - #define PP_1PAR_EACH_IDX(TF, P1, ...) _PP_1PAR_EACH_IDX(TF, P1, PP_NARG(__VA_ARGS__), __VA_ARGS__) - #define _PP_1PAR_EACH_IDX(TF, P1, N, ...) __PP_1PAR_EACH_IDX(TF, P1, N, __VA_ARGS__) - #define __PP_1PAR_EACH_IDX(TF, P1, N, ...) _PP_1PAR_IDX_##N(TF, P1, __VA_ARGS__) - - #define _PP_1PAR_IDX_0(TF, ARG, dummy) - #define _PP_1PAR_IDX_1(TF, P1, _0) TF(P1, _0, 0) - #define _PP_1PAR_IDX_2(TF, P1, _0, _1) TF(P1, _0, 0) TF(P1, _1, 1) - #define _PP_1PAR_IDX_3(TF, P1, _0, _1, _2) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) - #define _PP_1PAR_IDX_4(TF, P1, _0, _1, _2, _3) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) - #define _PP_1PAR_IDX_5(TF, P1, _0, _1, _2, _3, _4) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) - #define _PP_1PAR_IDX_6(TF, P1, _0, _1, _2, _3, _4, _5) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) - #define _PP_1PAR_IDX_7(TF, P1, _0, _1, _2, _3, _4, _5, _6) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) - #define _PP_1PAR_IDX_8(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) - #define _PP_1PAR_IDX_9(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) - #define _PP_1PAR_IDX_10(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) - #define _PP_1PAR_IDX_11(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) - #define _PP_1PAR_IDX_12(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) - #define _PP_1PAR_IDX_13(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) - #define _PP_1PAR_IDX_14(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) - #define _PP_1PAR_IDX_15(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) - #define _PP_1PAR_IDX_16(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) - #define _PP_1PAR_IDX_17(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) - #define _PP_1PAR_IDX_18(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) - #define _PP_1PAR_IDX_19(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) - #define _PP_1PAR_IDX_20(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) - #define _PP_1PAR_IDX_21(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) - #define _PP_1PAR_IDX_22(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) - #define _PP_1PAR_IDX_23(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) - #define _PP_1PAR_IDX_24(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) - #define _PP_1PAR_IDX_25(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) - #define _PP_1PAR_IDX_26(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) - #define _PP_1PAR_IDX_27(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) - #define _PP_1PAR_IDX_28(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) - #define _PP_1PAR_IDX_29(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) - #define _PP_1PAR_IDX_30(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) - #define _PP_1PAR_IDX_31(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) - #define _PP_1PAR_IDX_32(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) - #define _PP_1PAR_IDX_33(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) - #define _PP_1PAR_IDX_34(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) - #define _PP_1PAR_IDX_35(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) - #define _PP_1PAR_IDX_36(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) - #define _PP_1PAR_IDX_37(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) - #define _PP_1PAR_IDX_38(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) - #define _PP_1PAR_IDX_39(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) - #define _PP_1PAR_IDX_40(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) - #define _PP_1PAR_IDX_41(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) - #define _PP_1PAR_IDX_42(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) TF(P1, _41, 41) - #define _PP_1PAR_IDX_43(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) TF(P1, _41, 41) TF(P1, _42, 42) - #define _PP_1PAR_IDX_44(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) TF(P1, _41, 41) TF(P1, _42, 42) TF(P1, _43, 43) - #define _PP_1PAR_IDX_45(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) TF(P1, _41, 41) TF(P1, _42, 42) TF(P1, _43, 43) TF(P1, _44, 44) - #define _PP_1PAR_IDX_46(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) TF(P1, _41, 41) TF(P1, _42, 42) TF(P1, _43, 43) TF(P1, _44, 44) TF(P1, _45, 45) - #define _PP_1PAR_IDX_47(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) TF(P1, _41, 41) TF(P1, _42, 42) TF(P1, _43, 43) TF(P1, _44, 44) TF(P1, _45, 45) TF(P1, _46, 46) - #define _PP_1PAR_IDX_48(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) TF(P1, _41, 41) TF(P1, _42, 42) TF(P1, _43, 43) TF(P1, _44, 44) TF(P1, _45, 45) TF(P1, _46, 46) TF(P1, _47, 47) - #define _PP_1PAR_IDX_49(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) TF(P1, _41, 41) TF(P1, _42, 42) TF(P1, _43, 43) TF(P1, _44, 44) TF(P1, _45, 45) TF(P1, _46, 46) TF(P1, _47, 47) TF(P1, _48, 48) - #define _PP_1PAR_IDX_50(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) TF(P1, _41, 41) TF(P1, _42, 42) TF(P1, _43, 43) TF(P1, _44, 44) TF(P1, _45, 45) TF(P1, _46, 46) TF(P1, _47, 47) TF(P1, _48, 48) TF(P1, _49, 49) - #define _PP_1PAR_IDX_51(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) TF(P1, _41, 41) TF(P1, _42, 42) TF(P1, _43, 43) TF(P1, _44, 44) TF(P1, _45, 45) TF(P1, _46, 46) TF(P1, _47, 47) TF(P1, _48, 48) TF(P1, _49, 49) TF(P1, _50, 50) - #define _PP_1PAR_IDX_52(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) TF(P1, _41, 41) TF(P1, _42, 42) TF(P1, _43, 43) TF(P1, _44, 44) TF(P1, _45, 45) TF(P1, _46, 46) TF(P1, _47, 47) TF(P1, _48, 48) TF(P1, _49, 49) TF(P1, _50, 50) TF(P1, _51, 51) - #define _PP_1PAR_IDX_53(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) TF(P1, _41, 41) TF(P1, _42, 42) TF(P1, _43, 43) TF(P1, _44, 44) TF(P1, _45, 45) TF(P1, _46, 46) TF(P1, _47, 47) TF(P1, _48, 48) TF(P1, _49, 49) TF(P1, _50, 50) TF(P1, _51, 51) TF(P1, _52, 52) - #define _PP_1PAR_IDX_54(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) TF(P1, _41, 41) TF(P1, _42, 42) TF(P1, _43, 43) TF(P1, _44, 44) TF(P1, _45, 45) TF(P1, _46, 46) TF(P1, _47, 47) TF(P1, _48, 48) TF(P1, _49, 49) TF(P1, _50, 50) TF(P1, _51, 51) TF(P1, _52, 52) TF(P1, _53, 53) - #define _PP_1PAR_IDX_55(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) TF(P1, _41, 41) TF(P1, _42, 42) TF(P1, _43, 43) TF(P1, _44, 44) TF(P1, _45, 45) TF(P1, _46, 46) TF(P1, _47, 47) TF(P1, _48, 48) TF(P1, _49, 49) TF(P1, _50, 50) TF(P1, _51, 51) TF(P1, _52, 52) TF(P1, _53, 53) TF(P1, _54, 54) - #define _PP_1PAR_IDX_56(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) TF(P1, _41, 41) TF(P1, _42, 42) TF(P1, _43, 43) TF(P1, _44, 44) TF(P1, _45, 45) TF(P1, _46, 46) TF(P1, _47, 47) TF(P1, _48, 48) TF(P1, _49, 49) TF(P1, _50, 50) TF(P1, _51, 51) TF(P1, _52, 52) TF(P1, _53, 53) TF(P1, _54, 54) TF(P1, _55, 55) - #define _PP_1PAR_IDX_57(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) TF(P1, _41, 41) TF(P1, _42, 42) TF(P1, _43, 43) TF(P1, _44, 44) TF(P1, _45, 45) TF(P1, _46, 46) TF(P1, _47, 47) TF(P1, _48, 48) TF(P1, _49, 49) TF(P1, _50, 50) TF(P1, _51, 51) TF(P1, _52, 52) TF(P1, _53, 53) TF(P1, _54, 54) TF(P1, _55, 55) TF(P1, _56, 56) - #define _PP_1PAR_IDX_58(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) TF(P1, _41, 41) TF(P1, _42, 42) TF(P1, _43, 43) TF(P1, _44, 44) TF(P1, _45, 45) TF(P1, _46, 46) TF(P1, _47, 47) TF(P1, _48, 48) TF(P1, _49, 49) TF(P1, _50, 50) TF(P1, _51, 51) TF(P1, _52, 52) TF(P1, _53, 53) TF(P1, _54, 54) TF(P1, _55, 55) TF(P1, _56, 56) TF(P1, _57, 57) - #define _PP_1PAR_IDX_59(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) TF(P1, _41, 41) TF(P1, _42, 42) TF(P1, _43, 43) TF(P1, _44, 44) TF(P1, _45, 45) TF(P1, _46, 46) TF(P1, _47, 47) TF(P1, _48, 48) TF(P1, _49, 49) TF(P1, _50, 50) TF(P1, _51, 51) TF(P1, _52, 52) TF(P1, _53, 53) TF(P1, _54, 54) TF(P1, _55, 55) TF(P1, _56, 56) TF(P1, _57, 57) TF(P1, _58, 58) - #define _PP_1PAR_IDX_60(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) TF(P1, _41, 41) TF(P1, _42, 42) TF(P1, _43, 43) TF(P1, _44, 44) TF(P1, _45, 45) TF(P1, _46, 46) TF(P1, _47, 47) TF(P1, _48, 48) TF(P1, _49, 49) TF(P1, _50, 50) TF(P1, _51, 51) TF(P1, _52, 52) TF(P1, _53, 53) TF(P1, _54, 54) TF(P1, _55, 55) TF(P1, _56, 56) TF(P1, _57, 57) TF(P1, _58, 58) TF(P1, _59, 59) - #define _PP_1PAR_IDX_61(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) TF(P1, _41, 41) TF(P1, _42, 42) TF(P1, _43, 43) TF(P1, _44, 44) TF(P1, _45, 45) TF(P1, _46, 46) TF(P1, _47, 47) TF(P1, _48, 48) TF(P1, _49, 49) TF(P1, _50, 50) TF(P1, _51, 51) TF(P1, _52, 52) TF(P1, _53, 53) TF(P1, _54, 54) TF(P1, _55, 55) TF(P1, _56, 56) TF(P1, _57, 57) TF(P1, _58, 58) TF(P1, _59, 59) TF(P1, _60, 60) - #define _PP_1PAR_IDX_62(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) TF(P1, _41, 41) TF(P1, _42, 42) TF(P1, _43, 43) TF(P1, _44, 44) TF(P1, _45, 45) TF(P1, _46, 46) TF(P1, _47, 47) TF(P1, _48, 48) TF(P1, _49, 49) TF(P1, _50, 50) TF(P1, _51, 51) TF(P1, _52, 52) TF(P1, _53, 53) TF(P1, _54, 54) TF(P1, _55, 55) TF(P1, _56, 56) TF(P1, _57, 57) TF(P1, _58, 58) TF(P1, _59, 59) TF(P1, _60, 60) TF(P1, _61, 61) - #define _PP_1PAR_IDX_63(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) TF(P1, _41, 41) TF(P1, _42, 42) TF(P1, _43, 43) TF(P1, _44, 44) TF(P1, _45, 45) TF(P1, _46, 46) TF(P1, _47, 47) TF(P1, _48, 48) TF(P1, _49, 49) TF(P1, _50, 50) TF(P1, _51, 51) TF(P1, _52, 52) TF(P1, _53, 53) TF(P1, _54, 54) TF(P1, _55, 55) TF(P1, _56, 56) TF(P1, _57, 57) TF(P1, _58, 58) TF(P1, _59, 59) TF(P1, _60, 60) TF(P1, _61, 61) TF(P1, _62, 62) - #define _PP_1PAR_IDX_64(TF, P1, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63) TF(P1, _0, 0) TF(P1, _1, 1) TF(P1, _2, 2) TF(P1, _3, 3) TF(P1, _4, 4) TF(P1, _5, 5) TF(P1, _6, 6) TF(P1, _7, 7) TF(P1, _8, 8) TF(P1, _9, 9) TF(P1, _10, 10) TF(P1, _11, 11) TF(P1, _12, 12) TF(P1, _13, 13) TF(P1, _14, 14) TF(P1, _15, 15) TF(P1, _16, 16) TF(P1, _17, 17) TF(P1, _18, 18) TF(P1, _19, 19) TF(P1, _20, 20) TF(P1, _21, 21) TF(P1, _22, 22) TF(P1, _23, 23) TF(P1, _24, 24) TF(P1, _25, 25) TF(P1, _26, 26) TF(P1, _27, 27) TF(P1, _28, 28) TF(P1, _29, 29) TF(P1, _30, 30) TF(P1, _31, 31) TF(P1, _32, 32) TF(P1, _33, 33) TF(P1, _34, 34) TF(P1, _35, 35) TF(P1, _36, 36) TF(P1, _37, 37) TF(P1, _38, 38) TF(P1, _39, 39) TF(P1, _40, 40) TF(P1, _41, 41) TF(P1, _42, 42) TF(P1, _43, 43) TF(P1, _44, 44) TF(P1, _45, 45) TF(P1, _46, 46) TF(P1, _47, 47) TF(P1, _48, 48) TF(P1, _49, 49) TF(P1, _50, 50) TF(P1, _51, 51) TF(P1, _52, 52) TF(P1, _53, 53) TF(P1, _54, 54) TF(P1, _55, 55) TF(P1, _56, 56) TF(P1, _57, 57) TF(P1, _58, 58) TF(P1, _59, 59) TF(P1, _60, 60) TF(P1, _61, 61) TF(P1, _62, 62) TF(P1, _63, 63) -#endif //PP_1PAR_EACH_IDX +#define PP_1PAR_EACH_IDX(TF, P1, ...) PP_PAR_EACH_IDX(TF, (P1), __VA_ARGS__) #endif #ifndef PP_2PAR_EACH_IDX -#ifndef PP_2PAR_EACH_IDX - #define PP_2PAR_EACH_IDX(TF, P1, P2, ...) _PP_2PAR_EACH_IDX(TF, P1, P2, PP_NARG(__VA_ARGS__), __VA_ARGS__) - #define _PP_2PAR_EACH_IDX(TF, P1, P2, N, ...) __PP_2PAR_EACH_IDX(TF, P1, P2, N, __VA_ARGS__) - #define __PP_2PAR_EACH_IDX(TF, P1, P2, N, ...) _PP_2PAR_IDX_##N(TF, P1, P2, __VA_ARGS__) - - #define _PP_2PAR_IDX_0(TF, ARG, dummy) - #define _PP_2PAR_IDX_1(TF, P1, P2, _0) TF(P1, P2, _0, 0) - #define _PP_2PAR_IDX_2(TF, P1, P2, _0, _1) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) - #define _PP_2PAR_IDX_3(TF, P1, P2, _0, _1, _2) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) - #define _PP_2PAR_IDX_4(TF, P1, P2, _0, _1, _2, _3) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) - #define _PP_2PAR_IDX_5(TF, P1, P2, _0, _1, _2, _3, _4) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) - #define _PP_2PAR_IDX_6(TF, P1, P2, _0, _1, _2, _3, _4, _5) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) - #define _PP_2PAR_IDX_7(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) - #define _PP_2PAR_IDX_8(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) - #define _PP_2PAR_IDX_9(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) - #define _PP_2PAR_IDX_10(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) - #define _PP_2PAR_IDX_11(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) - #define _PP_2PAR_IDX_12(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) - #define _PP_2PAR_IDX_13(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) - #define _PP_2PAR_IDX_14(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) - #define _PP_2PAR_IDX_15(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) - #define _PP_2PAR_IDX_16(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) - #define _PP_2PAR_IDX_17(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) - #define _PP_2PAR_IDX_18(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) - #define _PP_2PAR_IDX_19(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) - #define _PP_2PAR_IDX_20(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) - #define _PP_2PAR_IDX_21(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) - #define _PP_2PAR_IDX_22(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) - #define _PP_2PAR_IDX_23(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) - #define _PP_2PAR_IDX_24(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) - #define _PP_2PAR_IDX_25(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) - #define _PP_2PAR_IDX_26(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) - #define _PP_2PAR_IDX_27(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) - #define _PP_2PAR_IDX_28(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) - #define _PP_2PAR_IDX_29(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) - #define _PP_2PAR_IDX_30(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) - #define _PP_2PAR_IDX_31(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) - #define _PP_2PAR_IDX_32(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) - #define _PP_2PAR_IDX_33(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) - #define _PP_2PAR_IDX_34(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) - #define _PP_2PAR_IDX_35(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) - #define _PP_2PAR_IDX_36(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) - #define _PP_2PAR_IDX_37(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) - #define _PP_2PAR_IDX_38(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) - #define _PP_2PAR_IDX_39(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) - #define _PP_2PAR_IDX_40(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) - #define _PP_2PAR_IDX_41(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) - #define _PP_2PAR_IDX_42(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) TF(P1, P2, _41, 41) - #define _PP_2PAR_IDX_43(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) TF(P1, P2, _41, 41) TF(P1, P2, _42, 42) - #define _PP_2PAR_IDX_44(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) TF(P1, P2, _41, 41) TF(P1, P2, _42, 42) TF(P1, P2, _43, 43) - #define _PP_2PAR_IDX_45(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) TF(P1, P2, _41, 41) TF(P1, P2, _42, 42) TF(P1, P2, _43, 43) TF(P1, P2, _44, 44) - #define _PP_2PAR_IDX_46(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) TF(P1, P2, _41, 41) TF(P1, P2, _42, 42) TF(P1, P2, _43, 43) TF(P1, P2, _44, 44) TF(P1, P2, _45, 45) - #define _PP_2PAR_IDX_47(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) TF(P1, P2, _41, 41) TF(P1, P2, _42, 42) TF(P1, P2, _43, 43) TF(P1, P2, _44, 44) TF(P1, P2, _45, 45) TF(P1, P2, _46, 46) - #define _PP_2PAR_IDX_48(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) TF(P1, P2, _41, 41) TF(P1, P2, _42, 42) TF(P1, P2, _43, 43) TF(P1, P2, _44, 44) TF(P1, P2, _45, 45) TF(P1, P2, _46, 46) TF(P1, P2, _47, 47) - #define _PP_2PAR_IDX_49(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) TF(P1, P2, _41, 41) TF(P1, P2, _42, 42) TF(P1, P2, _43, 43) TF(P1, P2, _44, 44) TF(P1, P2, _45, 45) TF(P1, P2, _46, 46) TF(P1, P2, _47, 47) TF(P1, P2, _48, 48) - #define _PP_2PAR_IDX_50(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) TF(P1, P2, _41, 41) TF(P1, P2, _42, 42) TF(P1, P2, _43, 43) TF(P1, P2, _44, 44) TF(P1, P2, _45, 45) TF(P1, P2, _46, 46) TF(P1, P2, _47, 47) TF(P1, P2, _48, 48) TF(P1, P2, _49, 49) - #define _PP_2PAR_IDX_51(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) TF(P1, P2, _41, 41) TF(P1, P2, _42, 42) TF(P1, P2, _43, 43) TF(P1, P2, _44, 44) TF(P1, P2, _45, 45) TF(P1, P2, _46, 46) TF(P1, P2, _47, 47) TF(P1, P2, _48, 48) TF(P1, P2, _49, 49) TF(P1, P2, _50, 50) - #define _PP_2PAR_IDX_52(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) TF(P1, P2, _41, 41) TF(P1, P2, _42, 42) TF(P1, P2, _43, 43) TF(P1, P2, _44, 44) TF(P1, P2, _45, 45) TF(P1, P2, _46, 46) TF(P1, P2, _47, 47) TF(P1, P2, _48, 48) TF(P1, P2, _49, 49) TF(P1, P2, _50, 50) TF(P1, P2, _51, 51) - #define _PP_2PAR_IDX_53(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) TF(P1, P2, _41, 41) TF(P1, P2, _42, 42) TF(P1, P2, _43, 43) TF(P1, P2, _44, 44) TF(P1, P2, _45, 45) TF(P1, P2, _46, 46) TF(P1, P2, _47, 47) TF(P1, P2, _48, 48) TF(P1, P2, _49, 49) TF(P1, P2, _50, 50) TF(P1, P2, _51, 51) TF(P1, P2, _52, 52) - #define _PP_2PAR_IDX_54(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) TF(P1, P2, _41, 41) TF(P1, P2, _42, 42) TF(P1, P2, _43, 43) TF(P1, P2, _44, 44) TF(P1, P2, _45, 45) TF(P1, P2, _46, 46) TF(P1, P2, _47, 47) TF(P1, P2, _48, 48) TF(P1, P2, _49, 49) TF(P1, P2, _50, 50) TF(P1, P2, _51, 51) TF(P1, P2, _52, 52) TF(P1, P2, _53, 53) - #define _PP_2PAR_IDX_55(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) TF(P1, P2, _41, 41) TF(P1, P2, _42, 42) TF(P1, P2, _43, 43) TF(P1, P2, _44, 44) TF(P1, P2, _45, 45) TF(P1, P2, _46, 46) TF(P1, P2, _47, 47) TF(P1, P2, _48, 48) TF(P1, P2, _49, 49) TF(P1, P2, _50, 50) TF(P1, P2, _51, 51) TF(P1, P2, _52, 52) TF(P1, P2, _53, 53) TF(P1, P2, _54, 54) - #define _PP_2PAR_IDX_56(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) TF(P1, P2, _41, 41) TF(P1, P2, _42, 42) TF(P1, P2, _43, 43) TF(P1, P2, _44, 44) TF(P1, P2, _45, 45) TF(P1, P2, _46, 46) TF(P1, P2, _47, 47) TF(P1, P2, _48, 48) TF(P1, P2, _49, 49) TF(P1, P2, _50, 50) TF(P1, P2, _51, 51) TF(P1, P2, _52, 52) TF(P1, P2, _53, 53) TF(P1, P2, _54, 54) TF(P1, P2, _55, 55) - #define _PP_2PAR_IDX_57(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) TF(P1, P2, _41, 41) TF(P1, P2, _42, 42) TF(P1, P2, _43, 43) TF(P1, P2, _44, 44) TF(P1, P2, _45, 45) TF(P1, P2, _46, 46) TF(P1, P2, _47, 47) TF(P1, P2, _48, 48) TF(P1, P2, _49, 49) TF(P1, P2, _50, 50) TF(P1, P2, _51, 51) TF(P1, P2, _52, 52) TF(P1, P2, _53, 53) TF(P1, P2, _54, 54) TF(P1, P2, _55, 55) TF(P1, P2, _56, 56) - #define _PP_2PAR_IDX_58(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) TF(P1, P2, _41, 41) TF(P1, P2, _42, 42) TF(P1, P2, _43, 43) TF(P1, P2, _44, 44) TF(P1, P2, _45, 45) TF(P1, P2, _46, 46) TF(P1, P2, _47, 47) TF(P1, P2, _48, 48) TF(P1, P2, _49, 49) TF(P1, P2, _50, 50) TF(P1, P2, _51, 51) TF(P1, P2, _52, 52) TF(P1, P2, _53, 53) TF(P1, P2, _54, 54) TF(P1, P2, _55, 55) TF(P1, P2, _56, 56) TF(P1, P2, _57, 57) - #define _PP_2PAR_IDX_59(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) TF(P1, P2, _41, 41) TF(P1, P2, _42, 42) TF(P1, P2, _43, 43) TF(P1, P2, _44, 44) TF(P1, P2, _45, 45) TF(P1, P2, _46, 46) TF(P1, P2, _47, 47) TF(P1, P2, _48, 48) TF(P1, P2, _49, 49) TF(P1, P2, _50, 50) TF(P1, P2, _51, 51) TF(P1, P2, _52, 52) TF(P1, P2, _53, 53) TF(P1, P2, _54, 54) TF(P1, P2, _55, 55) TF(P1, P2, _56, 56) TF(P1, P2, _57, 57) TF(P1, P2, _58, 58) - #define _PP_2PAR_IDX_60(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) TF(P1, P2, _41, 41) TF(P1, P2, _42, 42) TF(P1, P2, _43, 43) TF(P1, P2, _44, 44) TF(P1, P2, _45, 45) TF(P1, P2, _46, 46) TF(P1, P2, _47, 47) TF(P1, P2, _48, 48) TF(P1, P2, _49, 49) TF(P1, P2, _50, 50) TF(P1, P2, _51, 51) TF(P1, P2, _52, 52) TF(P1, P2, _53, 53) TF(P1, P2, _54, 54) TF(P1, P2, _55, 55) TF(P1, P2, _56, 56) TF(P1, P2, _57, 57) TF(P1, P2, _58, 58) TF(P1, P2, _59, 59) - #define _PP_2PAR_IDX_61(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) TF(P1, P2, _41, 41) TF(P1, P2, _42, 42) TF(P1, P2, _43, 43) TF(P1, P2, _44, 44) TF(P1, P2, _45, 45) TF(P1, P2, _46, 46) TF(P1, P2, _47, 47) TF(P1, P2, _48, 48) TF(P1, P2, _49, 49) TF(P1, P2, _50, 50) TF(P1, P2, _51, 51) TF(P1, P2, _52, 52) TF(P1, P2, _53, 53) TF(P1, P2, _54, 54) TF(P1, P2, _55, 55) TF(P1, P2, _56, 56) TF(P1, P2, _57, 57) TF(P1, P2, _58, 58) TF(P1, P2, _59, 59) TF(P1, P2, _60, 60) - #define _PP_2PAR_IDX_62(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) TF(P1, P2, _41, 41) TF(P1, P2, _42, 42) TF(P1, P2, _43, 43) TF(P1, P2, _44, 44) TF(P1, P2, _45, 45) TF(P1, P2, _46, 46) TF(P1, P2, _47, 47) TF(P1, P2, _48, 48) TF(P1, P2, _49, 49) TF(P1, P2, _50, 50) TF(P1, P2, _51, 51) TF(P1, P2, _52, 52) TF(P1, P2, _53, 53) TF(P1, P2, _54, 54) TF(P1, P2, _55, 55) TF(P1, P2, _56, 56) TF(P1, P2, _57, 57) TF(P1, P2, _58, 58) TF(P1, P2, _59, 59) TF(P1, P2, _60, 60) TF(P1, P2, _61, 61) - #define _PP_2PAR_IDX_63(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) TF(P1, P2, _41, 41) TF(P1, P2, _42, 42) TF(P1, P2, _43, 43) TF(P1, P2, _44, 44) TF(P1, P2, _45, 45) TF(P1, P2, _46, 46) TF(P1, P2, _47, 47) TF(P1, P2, _48, 48) TF(P1, P2, _49, 49) TF(P1, P2, _50, 50) TF(P1, P2, _51, 51) TF(P1, P2, _52, 52) TF(P1, P2, _53, 53) TF(P1, P2, _54, 54) TF(P1, P2, _55, 55) TF(P1, P2, _56, 56) TF(P1, P2, _57, 57) TF(P1, P2, _58, 58) TF(P1, P2, _59, 59) TF(P1, P2, _60, 60) TF(P1, P2, _61, 61) TF(P1, P2, _62, 62) - #define _PP_2PAR_IDX_64(TF, P1, P2, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63) TF(P1, P2, _0, 0) TF(P1, P2, _1, 1) TF(P1, P2, _2, 2) TF(P1, P2, _3, 3) TF(P1, P2, _4, 4) TF(P1, P2, _5, 5) TF(P1, P2, _6, 6) TF(P1, P2, _7, 7) TF(P1, P2, _8, 8) TF(P1, P2, _9, 9) TF(P1, P2, _10, 10) TF(P1, P2, _11, 11) TF(P1, P2, _12, 12) TF(P1, P2, _13, 13) TF(P1, P2, _14, 14) TF(P1, P2, _15, 15) TF(P1, P2, _16, 16) TF(P1, P2, _17, 17) TF(P1, P2, _18, 18) TF(P1, P2, _19, 19) TF(P1, P2, _20, 20) TF(P1, P2, _21, 21) TF(P1, P2, _22, 22) TF(P1, P2, _23, 23) TF(P1, P2, _24, 24) TF(P1, P2, _25, 25) TF(P1, P2, _26, 26) TF(P1, P2, _27, 27) TF(P1, P2, _28, 28) TF(P1, P2, _29, 29) TF(P1, P2, _30, 30) TF(P1, P2, _31, 31) TF(P1, P2, _32, 32) TF(P1, P2, _33, 33) TF(P1, P2, _34, 34) TF(P1, P2, _35, 35) TF(P1, P2, _36, 36) TF(P1, P2, _37, 37) TF(P1, P2, _38, 38) TF(P1, P2, _39, 39) TF(P1, P2, _40, 40) TF(P1, P2, _41, 41) TF(P1, P2, _42, 42) TF(P1, P2, _43, 43) TF(P1, P2, _44, 44) TF(P1, P2, _45, 45) TF(P1, P2, _46, 46) TF(P1, P2, _47, 47) TF(P1, P2, _48, 48) TF(P1, P2, _49, 49) TF(P1, P2, _50, 50) TF(P1, P2, _51, 51) TF(P1, P2, _52, 52) TF(P1, P2, _53, 53) TF(P1, P2, _54, 54) TF(P1, P2, _55, 55) TF(P1, P2, _56, 56) TF(P1, P2, _57, 57) TF(P1, P2, _58, 58) TF(P1, P2, _59, 59) TF(P1, P2, _60, 60) TF(P1, P2, _61, 61) TF(P1, P2, _62, 62) TF(P1, P2, _63, 63) -#endif //PP_2PAR_EACH_IDX +#define PP_2PAR_EACH_IDX(TF, P1, P2, ...) PP_PAR_EACH_IDX(TF, (P1, P2), __VA_ARGS__) #endif diff --git a/pp_iterators.rb b/pp_iterators.rb index 1689abc..35adcdb 100755 --- a/pp_iterators.rb +++ b/pp_iterators.rb @@ -1,11 +1,13 @@ #!/usr/bin/env ruby # Generator logic for a family of macros for C metaprogramming +# # See these blog posts in relation to VA_EACH: +# - http://saadahmad.ca/cc-preprocessor-metaprogramming-2/ # - http://ptspts.blogspot.ie/2013/11/how-to-apply-macro-to-all-arguments-of.html # - https://codecraft.co/2014/11/25/variadic-macros-tricks/ (Similar, but recursive) -# There's a recursive approach described here, that i couldn't get to work... -# - http://saadahmad.ca/cc-preprocessor-metaprogramming-2/ +# IS_EMPTY implementation adapted from here: +# - https://gustedt.wordpress.com/2010/06/08/detect-empty-macro-arguments/ require 'date' @@ -16,57 +18,219 @@ class CFile class << self def indent(content) - " " * INDENT + content.gsub("\n","\n ") + indentation = " " * INDENT + indentation + content.gsub("\n","\n#{indentation}").gsub("\n#{indentation}\n", "\n\n").sub(/\s+\Z/,"\n") end def include_guard(name, content) - "#ifndef #{name}\n" + indent(content) + "\n#endif //#{name}\n" + content.prepend("#define #{name}\n") unless content =~ /#define #{name}/ + "#ifndef #{name}\n" + indent(content) + "#endif //#{name}\n" end - def wrap_macro_body(m) - m.empty? ? m : "\#define #{m}" + def define_macro(m) + m.empty? ? m : "\#define #{m}\n" end - def wrap_macro_bodies(macros) - macros.map{ |m| wrap_macro_body(m) }.join("\n") + def define_macros(macros) + macros.map{ |m| define_macro(m) }.join end - def wrap_macro_set(guard_name, macros) - include_guard(guard_name, wrap_macro_bodies(macros)) + def define_macro_set(guard_name, macros) + include_guard(guard_name, define_macros(macros)) end end end - MAX_ARG_COUNT_DEFAULT = 64 - attr_reader :max_arg_count - def initialize(n = MAX_ARG_COUNT_DEFAULT, use_gcc_extensions: false) + MAX_ARG_COUNT_DEFAULT = 256 + MAX_ARG_COUNT_DEFAULT_NON_RECURSIVE = 64 + DEFER_LEVELS_DEFAULT = 6 + attr_reader :nargs_max, :recursive, :gcc, :defer_levels + def initialize(recursive: true, + use_gcc_extensions: false, + defer_levels: DEFER_LEVELS_DEFAULT) @gcc = use_gcc_extensions - @max_arg_count = n + @recursive = recursive + @nargs_max = @recursive ? MAX_ARG_COUNT_DEFAULT : MAX_ARG_COUNT_DEFAULT_NON_RECURSIVE + @defer_levels = defer_levels end - def arg_seq(reverse: false, first: 0, last: @max_arg_count, prefix: '', sep:', ') + + def arg_seq(reverse: false, first: 0, last: @nargs_max, prefix: '', sep:', ') seq = (first..last).map{ |i| "#{prefix}#{i}"} seq.reverse! if reverse seq.join(sep) end + # This complex implementation of a concatenation macro is tuple-aware + # i.e. is valid for braced tuples during pattern matching (see matcher macros later) + # This is required for recursive for_each on an array of tuples, each PP_EACH(TF, (1, 2), (3, 4)) + # As the list empty macros will break down otherwise + # See saadahmad's posts for further info + def concat + CFile::include_guard('PP_CAT', <<-EOH +// Defer the call to the CAT so that we get the updated parameters first +#define CAT(a, b) _CAT_EVAL ( _CAT_EXPAND_PARAMETERS(a, b) ) +#define _CAT_EVAL(...) _CAT_HELPER __VA_ARGS__ + +// Find the result of testing whether a macro is enclosed or not +#define _CAT_EXPAND_PARAMETERS(a, b) (a, _CAT_PAREN_CHECK b, DEFAULT, b ) +#define _CAT_PAREN_CHECK(...) EXPANDED, ENCLOSED, (__VA_ARGS__) ) EAT ( + +// Pattern match the result of testing if it is enclose or not +#define _CAT_HELPER(a, _, f, b) _CAT_HELPER_ ## f (a, b) +#define _CAT_HELPER_ENCLOSED(a, b) a b +#define _CAT_HELPER_DEFAULT(a, b) a ## b + +EOH + ) + end + + def eval_set(suffix: '', prefix: '') + level_count = Math.log2(@nargs_max).ceil + eroot = "#{prefix}EVAL#{suffix}" + CFile::define_macro_set(eroot, + [ + "#{eroot}(...) _#{eroot}_#{level_count}(__VA_ARGS__)", + "_#{eroot}_1(...) __VA_ARGS__" + ] + (2..level_count).map{ |l| "_#{eroot}_#{l}(...) _#{eroot}_#{l-1}(_#{eroot}_#{l-1}(__VA_ARGS__))"} + ) + end + + #Support two levels of eval nesting + def eval + [eval_set, eval_set(:suffix => '_')].join("\n") + end + + def defer + CFile::define_macro_set('DEFER', + [ + 'PP_NOP()', + 'DEFER(...) __VA_ARGS__ PP_NOP()', + 'DEFER2(...) __VA_ARGS__ DEFER(PP_NOP) ()', + ] + (3..@defer_levels).map{ |l| "DEFER#{l}(...) __VA_ARGS__ DEFER#{l-1}(PP_NOP) ()"} + ) + end + + # See http://saadahmad.ca/cc-preprocessor-metaprogramming-basic-pattern-matching-macros-and-conditionals/ + def logical + CFile::include_guard('PP_LOGIC', <<-EOH +//Usage: IF() (, ) +#define IF(value) CAT(_IF_, value) +#define _IF_1(true, ...) true +#define _IF_0(true, ...) __VA_ARGS__ + +#define NOT(x) PP_MATCHER ( CAT(NOT_, x), 0 ) +#define NOT_0 EXISTS(1) + +//== Building blocks + +//PP_MATCHER +#define PP_MATCHER(value, ...) \ + IF ( _MATCH(_MATCH_FIND(value)) )\ + ( _MATCH_EXTRACT(value), __VA_ARGS__ ) + +#define _MATCH(x) CAT(__MATCH_, x) +#define __MATCH_EXISTS(...) 1 +#define __MATCH_UNMATCHED 0 + +#define _MATCH_FIND(x) __MATCH_RESULT_EXTRACT ( __MATCH_RESULT_FIND(x) ) + +/** + * Extract 2nd element of a match result in the format: + * (IGNORED, EXISTS(DEFINED_VALUE)) or (IGNORED, UNMATCHED) + * This is appended to __MATCH_ to convert result to a boolean, + */ +#define __MATCH_RESULT_EXTRACT(x) __MATCH_RESULT_EXTRACT_HELPER x +#define __MATCH_RESULT_EXTRACT_HELPER(match, return_value) return_value + +/** + * __MATCH_RESULT_FIND( EXISTS(bla) ) returns ( EXPANDED, EXISTS(bla) ) + * __MATCH_RESULT_FIND( bla ) returns ( TEST_bla, UNMATCHED) + */ +#define __MATCH_RESULT_FIND(x) ( CAT(__MATCH_RESULT_EXPAND_, x), UNMATCHED ) +#define __MATCH_RESULT_EXPAND_EXISTS(...) EXPANDED, EXISTS(__VA_ARGS__) ) EAT ( +#define EAT(...) + +//_MATCH_EXTRACT / __MATCH_EXTRACT_EXISTS +#define _MATCH_EXTRACT(value) CAT(__MATCH_EXTRACT_, value) +#define __MATCH_EXTRACT_EXISTS(...) __VA_ARGS__ + +EOH +) + end + + def lists + CFile::include_guard('PP_LISTS', <<-EOH +#define HEAD(FIRST, ...) FIRST +#define TAIL(FIRST, ...) __VA_ARGS__ + +#define TEST_LAST EXISTS(1) +#define NOT_EMPTY(...) NOT(IS_EMPTY(__VA_ARGS__)) +#define IS_EMPTY(...) \ +_ISEMPTY( \ + /* test if there is just one argument, eventually an empty \ + one */ \ + HAS_COMMA(__VA_ARGS__), \ + /* test if _TRIGGER_PARENTHESIS_ together with the argument \ + adds a comma */ \ + HAS_COMMA(_TRIGGER_PARENTHESIS_ __VA_ARGS__), \ + /* test if the argument together with a parenthesis \ + adds a comma */ \ + HAS_COMMA(__VA_ARGS__ (/*empty*/)), \ + /* test if placing it between _TRIGGER_PARENTHESIS_ and the \ + parenthesis adds a comma */ \ + HAS_COMMA(_TRIGGER_PARENTHESIS_ __VA_ARGS__ (/*empty*/)) \ + ) + +#define _ISEMPTY(_0, _1, _2, _3) \ + HAS_COMMA(PASTE5(_IS_EMPTY_CASE_, _0, _1, _2, _3)) + +#define HAS_COMMA(...) \ + PP_ARG_N(__VA_ARGS__, #{'1, '*(@nargs_max-1)} 0) + +#define _TRIGGER_PARENTHESIS_(...) , + +#define PASTE5(_0, _1, _2, _3, _4) _0 ## _1 ## _2 ## _3 ## _4 +#define _IS_EMPTY_CASE_0001 , + +EOH + ) + end + + def tuples + CFile::include_guard('PP_TUPLES', <<-EOH +#define PAREN(...) ( __VA_ARGS__ ) +#define DEPAREN(...) DEPAREN_ __VA_ARGS__ +#define DEPAREN_(...) __VA_ARGS__ + +#define IS_ENCLOSED(x, ...) PP_MATCHER ( IS_ENCLOSED_TEST x, 0 ) +#define IS_ENCLOSED_TEST(...) EXISTS(1) + +#define IF_ENCLOSED(...) CAT(_IF_ENCLOSED_, IS_ENCLOSED(__VA_ARGS__)) +#define _IF_ENCLOSED_0(true, ...) __VA_ARGS__ +#define _IF_ENCLOSED_1(true, ...) true +// This function will optionally remove parentheses around its arguments +// if there are any. Otherwise it will return normally +#define OPT_DEPAREN(...) \ + IF_ENCLOSED (__VA_ARGS__) ( DEPAREN(__VA_ARGS__), __VA_ARGS__ ) +EOH + ) + end + def narg_common - CFile::wrap_macro_set('PP_UTIL', - [ - # Fix for MSVC expansion order (nicked from fff project) - "EXPAND(x) x", - "HEAD(FIRST, ...) FIRST", - "TAIL(FIRST, ...) __VA_ARGS__", - "CAT(A, B) _CAT(A,B)", - "_CAT(A, B) A ## B", - "PP_RSEQ_N() #{arg_seq(reverse: true)}" - ] - ) + CFile::define_macro_set('PP_UTIL', + [ + # Fix for MSVC expansion order (nicked from fff project) + "EXPAND(x) x", + "PP_SEQ_N() #{arg_seq(last: @nargs_max)}", + "PP_RSEQ_N() #{arg_seq(last: @nargs_max, reverse: true)}" + ] + ) end def arg_n_seq(delta) - seq = arg_seq(first: 1, last: @gcc ? @max_arg_count+1 : @max_arg_count, prefix: '_') + seq = arg_seq(first: 1, last: @gcc ? @nargs_max+1 : @nargs_max, prefix: '_') delta==0 ? seq :[arg_seq(first: 0, last: delta-1, prefix: '__', reverse: true), seq].join(', ') end @@ -76,37 +240,53 @@ def narg def narg_minus(m) suffix = m>0 ? "_MINUS#{m}" : '' - CFile::wrap_macro_set("PP_NARG#{suffix}", - [ - "PP_NARG#{suffix}(...) EXPAND(PP_ARG#{suffix}_N(#{'_0, ##' if @gcc}__VA_ARGS__, PP_RSEQ_N()))", - "PP_ARG#{suffix}_N(...) EXPAND(_PP_ARG#{suffix}_N(__VA_ARGS__))", - "_PP_ARG#{suffix}_N(#{arg_n_seq(m)}, N, ...) N", - ] - ) + CFile::define_macro_set("PP_NARG#{suffix}", + [ + "PP_NARG#{suffix}(...) EXPAND(PP_ARG#{suffix}_N(#{'_0, ##' if @gcc}__VA_ARGS__, PP_RSEQ_N()))", + "PP_ARG#{suffix}_N(...) EXPAND(_PP_ARG#{suffix}_N(__VA_ARGS__))", + "_PP_ARG#{suffix}_N(#{arg_n_seq(m)}, N, ...) N", + ] + ) end - def each - CFile::wrap_macro_set('PP_EACH', - [ - "PP_EACH(TF, ...) _PP_EACH(TF, PP_NARG(__VA_ARGS__), __VA_ARGS__)", - "_PP_EACH(TF, N, ...) __PP_EACH(TF, N, __VA_ARGS__)", - "__PP_EACH(TF, N, ...) _PP_EACH_##N(TF, __VA_ARGS__)", - "", - "_PP_EACH_0(TF, ...)", - "_PP_EACH_1(TF, next_arg) TF(next_arg)", - ] + (2..@max_arg_count).map { |arg_count| "_PP_EACH_#{arg_count}(TF, next_arg, ...) TF(next_arg) _PP_EACH_#{arg_count-1}(TF, __VA_ARGS__)" } - ) + def pp_each + <<-'EOH' +#define PP_EACH(TF, ...) \ + EVAL(_PP_EACH_DEFER(TF, __VA_ARGS__)) + +#define _PP_EACH_DEFER(TF, ...) \ + IF ( NOT_EMPTY( __VA_ARGS__ ) ) \ + ( \ + DEFER(TF) (OPT_DEPAREN(HEAD(__VA_ARGS__))) \ + DEFER2 ( __PP_EACH_DEFER ) () (TF, TAIL(__VA_ARGS__)) \ + ) + +//This indirection along with the DEFER2 and EVAL macros allows the recursive implementation of _PP_EACH_DEFER +#define __PP_EACH_DEFER() _PP_EACH_DEFER +EOH end - def each_with_index - CFile::wrap_macro_set('PP_EACH_IDX', + def pp_each_non_recursive + CFile::define_macros([ + "PP_EACH(TF, ...) _PP_EACH(TF, PP_NARG(__VA_ARGS__), __VA_ARGS__)", + "_PP_EACH(TF, N, ...) __PP_EACH(TF, N, __VA_ARGS__)", + "__PP_EACH(TF, N, ...) _PP_EACH_##N(TF, __VA_ARGS__)", + "", + "_PP_EACH_0(TF, ...)", + "_PP_EACH_1(TF, next_arg) TF(next_arg)", + ] + (2..@nargs_max).map { |arg_count| "_PP_EACH_#{arg_count}(TF, next_arg, ...) TF(next_arg) _PP_EACH_#{arg_count-1}(TF, __VA_ARGS__)" } + ) + end + + def each_idx_non_recursive + CFile::define_macros( [ "PP_EACH_IDX(TF, ...) _PP_EACH_IDX(TF, PP_NARG(__VA_ARGS__), __VA_ARGS__)", "_PP_EACH_IDX(TF, N, ...) __PP_EACH_IDX(TF, N, __VA_ARGS__)", "__PP_EACH_IDX(TF, N, ...) _PP_EACH_IDX_##N(TF, __VA_ARGS__)", "", "_PP_EACH_IDX_0(TF, dummy)" - ] + (1..@max_arg_count).map do |arg_count| + ] + (1..@nargs_max).map do |arg_count| arg_indices = (0..arg_count-1) arg_ids = arg_indices.map{ |aidx| "_#{aidx}"} macro_signature = "_PP_EACH_IDX_#{arg_count}(TF, #{arg_ids.join(', ')})" @@ -116,25 +296,72 @@ def each_with_index ) end - def parameterised_each_with_index(n) - fargs = (1..n).map { |aidx| "P#{aidx}"}.join(", ") - CFile::wrap_macro_set("PP_#{n}PAR_EACH_IDX", + def pp_each_idx + <<-'EOH' +#define PP_EACH_IDX(TF, ...) EVAL(_PP_EACH_IDX_DEFER(TF, (PP_SEQ_N()), __VA_ARGS__)) + +#define _PP_EACH_IDX_DEFER(TF, VA_INDICES, ...) \ + IF ( NOT_EMPTY( __VA_ARGS__ ) ) \ + ( \ + DEFER2(TF) (OPT_DEPAREN(HEAD(__VA_ARGS__)), DEFER(HEAD)(DEPAREN(VA_INDICES))) \ + DEFER2 ( __PP_EACH_IDX_DEFER ) () (TF, (TAIL VA_INDICES), TAIL(__VA_ARGS__)) \ + ) + + #define __PP_EACH_IDX_DEFER() _PP_EACH_IDX_DEFER +EOH + end + + def pp_par_each_idx + <<-'EOH' +#define PP_PAR_EACH_IDX(TF, FARGS, ...) EVAL(_PP_PAR_EACH_IDX_DEFER(TF, FARGS, (PP_SEQ_N()), __VA_ARGS__)) + +#define _PP_PAR_EACH_IDX_DEFER(TF, FARGS, VA_INDICES, ...) \ + IF ( NOT_EMPTY( __VA_ARGS__ ) ) \ + ( \ + DEFER2(TF) (OPT_DEPAREN(FARGS), OPT_DEPAREN(HEAD(__VA_ARGS__)), DEFER(HEAD)(DEPAREN(VA_INDICES))) \ + DEFER2 ( __PP_PAR_EACH_IDX_DEFER ) () (TF, FARGS, (TAIL VA_INDICES), TAIL(__VA_ARGS__)) \ + ) + +#define __PP_PAR_EACH_IDX_DEFER() _PP_PAR_EACH_IDX_DEFER +EOH + end + + def pp_par_each_idx_non_recursive + CFile::define_macros( [ - "PP_#{n}PAR_EACH_IDX(TF, #{fargs}, ...) _PP_#{n}PAR_EACH_IDX(TF, #{fargs}, PP_NARG(__VA_ARGS__), __VA_ARGS__)", - "_PP_#{n}PAR_EACH_IDX(TF, #{fargs}, N, ...) __PP_#{n}PAR_EACH_IDX(TF, #{fargs}, N, __VA_ARGS__)", - "__PP_#{n}PAR_EACH_IDX(TF, #{fargs}, N, ...) _PP_#{n}PAR_IDX_##N(TF, #{fargs}, __VA_ARGS__)", + "PP_PAR_EACH_IDX(TF, FARGS, ...) _PP_PAR_EACH_IDX(TF, FARGS, PP_NARG(__VA_ARGS__), __VA_ARGS__)", + "_PP_PAR_EACH_IDX(TF, FARGS, N, ...) __PP_PAR_EACH_IDX(TF, FARGS, N, __VA_ARGS__)", + "__PP_PAR_EACH_IDX(TF, FARGS, N, ...) _PP_PAR_IDX_##N(TF, FARGS, __VA_ARGS__)", + "_PP_APPLY(TF, FARGS, VARG, IDX) DEFER(TF) (DEPAREN(FARGS), VARG, IDX)", "", - "_PP_#{n}PAR_IDX_0(TF, ARG, dummy)", - ] + (1..@max_arg_count).map do |arg_count| + "_PP_PAR_IDX_0(TF, FARGS, dummy)", + ] + (1..@nargs_max).map do |arg_count| arg_indices = (0..arg_count-1) arg_ids = arg_indices.map{ |aidx| "_#{aidx}"} - macro_signature = "_PP_#{n}PAR_IDX_#{arg_count}(TF, #{fargs}, #{arg_ids.join(', ')})" - macro_body = arg_indices.map { |aidx| "TF(#{fargs}, _#{aidx}, #{aidx})" }.join(' ') - "#{macro_signature} #{macro_body}" + macro_signature = "_PP_PAR_IDX_#{arg_count}(TF, FARGS, #{arg_ids.join(', ')})" + macro_body = arg_indices.map { |aidx| "_PP_APPLY(TF, FARGS, _#{aidx}, #{aidx})" }.join(' ') + "#{macro_signature} EVAL(#{macro_body})" end ) end + def each + CFile::include_guard('PP_EACH', @recursive ? pp_each : pp_each_non_recursive) + end + + def each_with_index + CFile::include_guard('PP_EACH_IDX', @recursive ? pp_each_idx : each_idx_non_recursive) + end + + def parameterised_each_with_index + CFile::include_guard("PP_PAR_EACH_IDX", @recursive ? pp_par_each_idx : pp_par_each_idx_non_recursive) + end + + def parameterised_each_with_index_n(n) + fargs = (1..n).map { |aidx| "P#{aidx}"}.join(", ") + CFile::define_macro("PP_#{n}PAR_EACH_IDX(TF, #{fargs}, ...) PP_PAR_EACH_IDX(TF, (#{fargs}), __VA_ARGS__)") + end + def generate_header <<-EOH /** @@ -150,20 +377,23 @@ def generate_header * * Autogenerated on #{DateTime.now.strftime("%d/%m/%Y %H:%M")} * - Script: #{$0} - * - Max argument count: #{@max_arg_count} + * - Max argument count: #{@nargs_max} * * I initially encountered the variadic macro counting logic in this post by Laurent Deniau: * https://groups.google.com/forum/#!topic/comp.std.c/d-6Mj5Lko_s * Refined by arpad. and zhangj to handle the no-argument case * - * Recursive PP_EACH implementation based on this blog post by Daniel Hardman: + * The (preferred) recursive implementations of PP_EACH, PP_EACH_IDX and PP_PAR_EACH_IDX are based on an excellent series of posts by Saad Ahmad + * http://saadahmad.ca/cc-preprocessor-metaprogramming-2/ + * + * The non- (or semi-) recursive PP_EACH implementation is based on this blog post by Daniel Hardman: * https://codecraft.co/2014/11/25/variadic-macros-tricks/ * - * The PP_nPAR_EACH_IDX macro implementations extend the non-recursive PP_EACH implementation + * The non-recursive PP_EACH_IDX and PP_PAR_EACH_IDX macro implementations extend the non-recursive PP_EACH implementation * described in this (anonymous) blog post: * http://ptspts.blogspot.ie/2013/11/how-to-apply-macro-to-all-arguments-of.html * - * This MSVC macro expansion fix was lifted from the excellent fake function framework: + * The MSVC macro expansion fix was lifted from the excellent fake function framework: * https://github.com/meekrosoft/fff */ @@ -174,33 +404,52 @@ def generate_header extern "C" { # endif -//MSVC non-standard macro expansion fix -#{narg_common} +#{embed_macros} + +# ifdef __cplusplus +} +# endif + +#endif /* PP_ITER_H */ +EOH + end + + def embed_macros + <<-EOH + +//Defer / evaluate macros +#{defer} +#{eval} + +//Token concatenation (tuple-aware) +#{concat} + +//Logical operations +#{logical} + +//Lists (HEAD, TAIL, ISEMPTY etc.) +#{lists} + +//Tuples +#{tuples} //Argument counting +#{narg_common} #{narg} - //PP_EACH #{each} - //PP_EACH_IDX #{each_with_index} +//PP_PAR_EACH_IDX +#{parameterised_each_with_index} -//PP_1PAR_EACH_IDX -#{parameterised_each_with_index(1)} - +//PP_xPAR_EACH_IDX (Wrappers for deprecated macros) +#{parameterised_each_with_index_n(1)} +#{parameterised_each_with_index_n(2)} -//PP_2PAR_EACH_IDX -#{parameterised_each_with_index(2)} - -# ifdef __cplusplus -} -# endif - -#endif /* PP_ITER_H */ EOH end diff --git a/test/Makefile b/test/Makefile index 3368be0..5420620 100644 --- a/test/Makefile +++ b/test/Makefile @@ -1,4 +1,3 @@ - BUILD_DIR = ../build FFF_TEST_CPP_OBJS += \ @@ -45,28 +44,28 @@ $(BUILD_DIR)/%.o: %.c # Link targets -$(FFF_TEST_CPP_TARGET): $(FFF_TEST_CPP_OBJS) +$(FFF_TEST_CPP_TARGET): $(FFF_TEST_CPP_OBJS) @echo 'Building target: $@' @echo 'Invoking: GCC C++ Linker' g++ -o "$(FFF_TEST_CPP_TARGET)" $(FFF_TEST_CPP_OBJS) $(LIBS) @echo 'Finished building target: $@' @echo ' ' -$(FFF_TEST_C_TARGET): $(FFF_TEST_C_OBJS) +$(FFF_TEST_C_TARGET): $(FFF_TEST_C_OBJS) @echo 'Building target: $@' @echo 'Invoking: GCC C Linker' gcc -o "$(FFF_TEST_C_TARGET)" $(FFF_TEST_C_OBJS) $(LIBS) @echo 'Finished building target: $@' @echo ' ' -$(FFF_TEST_GLOBAL_C_TARGET): $(FFF_TEST_GLOBAL_C_OBJS) +$(FFF_TEST_GLOBAL_C_TARGET): $(FFF_TEST_GLOBAL_C_OBJS) @echo 'Building target: $@' @echo 'Invoking: GCC C++ Linker' gcc -o "$(FFF_TEST_GLOBAL_C_TARGET)" $(FFF_TEST_GLOBAL_C_OBJS) $(LIBS) $(WRAP_LDFLAGS) @echo 'Finished building target: $@' @echo ' ' -$(FFF_TEST_GLOBAL_CPP_TARGET): $(FFF_TEST_GLOBAL_CPP_OBJS) +$(FFF_TEST_GLOBAL_CPP_TARGET): $(FFF_TEST_GLOBAL_CPP_OBJS) @echo 'Building target: $@' @echo 'Invoking: GCC C++ Linker' g++ -o "$(FFF_TEST_GLOBAL_CPP_TARGET)" $(FFF_TEST_GLOBAL_CPP_OBJS) $(LIBS) @@ -78,4 +77,3 @@ clean: -$(RM) $(FFF_TEST_CPP_OBJS) $(FFF_TEST_GLOBAL_C_OBJS) $(FFF_TEST_C_OBJS) \ $(FFF_TEST_CPP_TARGET) $(FFF_TEST_C_TARGET) $(FFF_TEST_GLOBAL_CPP_TARGET) $(FFF_TEST_GLOBAL_C_TARGET) -@echo ' ' - diff --git a/test/fff_test_c.c b/test/fff_test_c.c index d0339c4..8aa893a 100644 --- a/test/fff_test_c.c +++ b/test/fff_test_c.c @@ -14,7 +14,9 @@ #include // Could move this into c_test_framework.h, but it uses the PP iteration macros from fff.h.... -#define RUN_INDEXED_TEST(SUITE, TEST_COUNT, TESTNAME, IDX) do { printf(" Running (%d/%d) %s.%s: \n", IDX+1, TEST_COUNT, #SUITE, #TESTNAME); setup(); TESTNAME(); printf(" SUCCESS\n"); } while (0); +#define RUN_INDEXED_TEST(SUITE, TEST_COUNT, TESTNAME, IDX) do { printf(" Running (%d/%d) %s.%s: \n", IDX+1, TEST_COUNT, #SUITE, #TESTNAME); setup(); TESTNAME(); printf(" SUCCESS\n"); } while (0); \ + + #define RUN_TESTS(SUITE, ...) PP_2PAR_EACH_IDX(RUN_INDEXED_TEST, SUITE, PP_NARG(__VA_ARGS__), __VA_ARGS__) enum MYBOOL { FALSE = 899, TRUE }; @@ -137,7 +139,7 @@ int main() variadic_return_values_no_array_name_collisions_when_called_repeatedly, variadic_return_values_no_assertion_given_single_value, variadic_return_values_assertion_valid_given_value_sequence, - variadic_return_values_assertion_invalid_given_0_length_sequence, + /* variadic_return_values_assertion_invalid_given_0_length_sequence, */ assert_calls_assertion_valid_given_match, assert_calls_assertion_invalid_when_underestimated, diff --git a/test/test_cases_assertions.include b/test/test_cases_assertions.include index 00292e0..f4ca3d7 100644 --- a/test/test_cases_assertions.include +++ b/test/test_cases_assertions.include @@ -64,12 +64,12 @@ TEST_F(FFFTestSuite, variadic_return_values_assertion_valid_given_value_sequence ASSERT_FAKE_ASSERTION_WAS(VALID); } -TEST_F(FFFTestSuite, variadic_return_values_assertion_invalid_given_0_length_sequence) -{ - FFF_RETURN(longfunc0); +/* TEST_F(FFFTestSuite, variadic_return_values_assertion_invalid_given_0_length_sequence) */ +/* { */ +/* FFF_RETURN(longfunc0); */ - ASSERT_FAKE_ASSERTION_WAS(INVALID); -} +/* ASSERT_FAKE_ASSERTION_WAS(INVALID); */ +/* } */ static void _callFake(int ncalls) { From 2688d74806ccee657e17b9b1040277ef48c2a82d Mon Sep 17 00:00:00 2001 From: cormacc Date: Mon, 24 Jun 2019 18:49:51 +0100 Subject: [PATCH 03/15] Use simpler IS_EMPTY if gcc extensions enabled --- pp_iterators.rb | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/pp_iterators.rb b/pp_iterators.rb index 35adcdb..9309d07 100755 --- a/pp_iterators.rb +++ b/pp_iterators.rb @@ -160,13 +160,11 @@ def logical ) end - def lists - CFile::include_guard('PP_LISTS', <<-EOH -#define HEAD(FIRST, ...) FIRST -#define TAIL(FIRST, ...) __VA_ARGS__ - -#define TEST_LAST EXISTS(1) -#define NOT_EMPTY(...) NOT(IS_EMPTY(__VA_ARGS__)) + def is_empty + if @gcc + '#define IS_EMPTY(...) NOT(PP_NARG(__VA_ARGS__))' + else + <<-EOH #define IS_EMPTY(...) \ _ISEMPTY( \ /* test if there is just one argument, eventually an empty \ @@ -193,7 +191,17 @@ def lists #define PASTE5(_0, _1, _2, _3, _4) _0 ## _1 ## _2 ## _3 ## _4 #define _IS_EMPTY_CASE_0001 , +EOH + end + end + def lists + CFile::include_guard('PP_LISTS', <<-EOH +#define HEAD(FIRST, ...) FIRST +#define TAIL(FIRST, ...) __VA_ARGS__ +#define TEST_LAST EXISTS(1) +#define NOT_EMPTY(...) NOT(IS_EMPTY(__VA_ARGS__)) +#{is_empty} EOH ) end From 676071cd27c71ab5693564422dc95c17ddbe1a53 Mon Sep 17 00:00:00 2001 From: cormacc Date: Fri, 5 Jul 2019 11:43:46 +0100 Subject: [PATCH 04/15] IS_EMPTY: Sniff for GCC extensions at compile time Previously generated for GCC or non GCC. Now using if defined(__GNUCC__) && !defined(__STRICT_ANSI__) instead. This is only for the IS_EMPTY macro so far -- further work required for NARG macros. --- fff.h | 16 ++++++++----- pp_iterators.rb | 63 +++++++++++++++++++++++++------------------------ 2 files changed, 42 insertions(+), 37 deletions(-) diff --git a/fff.h b/fff.h index ac51ffb..4fac2e8 100644 --- a/fff.h +++ b/fff.h @@ -6660,16 +6660,20 @@ FFF_END_EXTERN_C #define TEST_LAST EXISTS(1) #define NOT_EMPTY(...) NOT(IS_EMPTY(__VA_ARGS__)) - #define IS_EMPTY(...) _ISEMPTY( /* test if there is just one argument, eventually an empty one */ HAS_COMMA(__VA_ARGS__), /* test if _TRIGGER_PARENTHESIS_ together with the argument adds a comma */ HAS_COMMA(_TRIGGER_PARENTHESIS_ __VA_ARGS__), /* test if the argument together with a parenthesis adds a comma */ HAS_COMMA(__VA_ARGS__ (/*empty*/)), /* test if placing it between _TRIGGER_PARENTHESIS_ and the parenthesis adds a comma */ HAS_COMMA(_TRIGGER_PARENTHESIS_ __VA_ARGS__ (/*empty*/)) ) + #if defined(__GNUC__) && !defined(__STRICT_ANSI__) + #define IS_EMPTY(...) NOT(PP_NARG(__VA_ARGS__)) + #else + #define IS_EMPTY(...) _ISEMPTY( /* test if there is just one argument, eventually an empty one */ HAS_COMMA(__VA_ARGS__), /* test if _TRIGGER_PARENTHESIS_ together with the argument adds a comma */ HAS_COMMA(_TRIGGER_PARENTHESIS_ __VA_ARGS__), /* test if the argument together with a parenthesis adds a comma */ HAS_COMMA(__VA_ARGS__ (/*empty*/)), /* test if placing it between _TRIGGER_PARENTHESIS_ and the parenthesis adds a comma */ HAS_COMMA(_TRIGGER_PARENTHESIS_ __VA_ARGS__ (/*empty*/)) ) - #define _ISEMPTY(_0, _1, _2, _3) HAS_COMMA(PASTE5(_IS_EMPTY_CASE_, _0, _1, _2, _3)) + #define _ISEMPTY(_0, _1, _2, _3) HAS_COMMA(PASTE5(_IS_EMPTY_CASE_, _0, _1, _2, _3)) - #define HAS_COMMA(...) PP_ARG_N(__VA_ARGS__, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0) + #define HAS_COMMA(...) PP_ARG_N(__VA_ARGS__, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0) - #define _TRIGGER_PARENTHESIS_(...) , + #define _TRIGGER_PARENTHESIS_(...) , - #define PASTE5(_0, _1, _2, _3, _4) _0 ## _1 ## _2 ## _3 ## _4 - #define _IS_EMPTY_CASE_0001 , + #define PASTE5(_0, _1, _2, _3, _4) _0 ## _1 ## _2 ## _3 ## _4 + #define _IS_EMPTY_CASE_0001 , + #endif #endif //PP_LISTS diff --git a/pp_iterators.rb b/pp_iterators.rb index 9309d07..b5d0803 100755 --- a/pp_iterators.rb +++ b/pp_iterators.rb @@ -161,39 +161,40 @@ def logical end def is_empty - if @gcc - '#define IS_EMPTY(...) NOT(PP_NARG(__VA_ARGS__))' - else <<-EOH -#define IS_EMPTY(...) \ -_ISEMPTY( \ - /* test if there is just one argument, eventually an empty \ - one */ \ - HAS_COMMA(__VA_ARGS__), \ - /* test if _TRIGGER_PARENTHESIS_ together with the argument \ - adds a comma */ \ - HAS_COMMA(_TRIGGER_PARENTHESIS_ __VA_ARGS__), \ - /* test if the argument together with a parenthesis \ - adds a comma */ \ - HAS_COMMA(__VA_ARGS__ (/*empty*/)), \ - /* test if placing it between _TRIGGER_PARENTHESIS_ and the \ - parenthesis adds a comma */ \ - HAS_COMMA(_TRIGGER_PARENTHESIS_ __VA_ARGS__ (/*empty*/)) \ - ) - -#define _ISEMPTY(_0, _1, _2, _3) \ - HAS_COMMA(PASTE5(_IS_EMPTY_CASE_, _0, _1, _2, _3)) - -#define HAS_COMMA(...) \ - PP_ARG_N(__VA_ARGS__, #{'1, '*(@nargs_max-1)} 0) - -#define _TRIGGER_PARENTHESIS_(...) , - -#define PASTE5(_0, _1, _2, _3, _4) _0 ## _1 ## _2 ## _3 ## _4 -#define _IS_EMPTY_CASE_0001 , -EOH - end +#if defined(__GNUC__) && !defined(__STRICT_ANSI__) + #define IS_EMPTY(...) NOT(PP_NARG(__VA_ARGS__)) +#else + #define IS_EMPTY(...) \ + _ISEMPTY( \ + /* test if there is just one argument, eventually an empty \ + one */ \ + HAS_COMMA(__VA_ARGS__), \ + /* test if _TRIGGER_PARENTHESIS_ together with the argument \ + adds a comma */ \ + HAS_COMMA(_TRIGGER_PARENTHESIS_ __VA_ARGS__), \ + /* test if the argument together with a parenthesis \ + adds a comma */ \ + HAS_COMMA(__VA_ARGS__ (/*empty*/)), \ + /* test if placing it between _TRIGGER_PARENTHESIS_ and the \ + parenthesis adds a comma */ \ + HAS_COMMA(_TRIGGER_PARENTHESIS_ __VA_ARGS__ (/*empty*/)) \ + ) + + #define _ISEMPTY(_0, _1, _2, _3) \ + HAS_COMMA(PASTE5(_IS_EMPTY_CASE_, _0, _1, _2, _3)) + + #define HAS_COMMA(...) \ + PP_ARG_N(__VA_ARGS__, #{'1, '*(@nargs_max-1)} 0) + + #define _TRIGGER_PARENTHESIS_(...) , + + #define PASTE5(_0, _1, _2, _3, _4) _0 ## _1 ## _2 ## _3 ## _4 + #define _IS_EMPTY_CASE_0001 , +#endif + EOH end + def lists CFile::include_guard('PP_LISTS', <<-EOH #define HEAD(FIRST, ...) FIRST From 2b11f0b87ee57934c46a5a552aca4e6414c9b3da Mon Sep 17 00:00:00 2001 From: cormacc Date: Fri, 5 Jul 2019 12:27:53 +0100 Subject: [PATCH 05/15] Now supports with/without gcc extensions out of the box --- fff.h | 45 +++++++++++++++++-------- pp_iterators.rb | 88 ++++++++++++++++++++++++------------------------- 2 files changed, 75 insertions(+), 58 deletions(-) diff --git a/fff.h b/fff.h index 4fac2e8..bc66e22 100644 --- a/fff.h +++ b/fff.h @@ -6663,14 +6663,11 @@ FFF_END_EXTERN_C #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define IS_EMPTY(...) NOT(PP_NARG(__VA_ARGS__)) #else - #define IS_EMPTY(...) _ISEMPTY( /* test if there is just one argument, eventually an empty one */ HAS_COMMA(__VA_ARGS__), /* test if _TRIGGER_PARENTHESIS_ together with the argument adds a comma */ HAS_COMMA(_TRIGGER_PARENTHESIS_ __VA_ARGS__), /* test if the argument together with a parenthesis adds a comma */ HAS_COMMA(__VA_ARGS__ (/*empty*/)), /* test if placing it between _TRIGGER_PARENTHESIS_ and the parenthesis adds a comma */ HAS_COMMA(_TRIGGER_PARENTHESIS_ __VA_ARGS__ (/*empty*/)) ) - - #define _ISEMPTY(_0, _1, _2, _3) HAS_COMMA(PASTE5(_IS_EMPTY_CASE_, _0, _1, _2, _3)) - - #define HAS_COMMA(...) PP_ARG_N(__VA_ARGS__, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0) + #define IS_EMPTY(...)_ISEMPTY( /* test if there is just one argument, eventually an empty one */ HAS_COMMA(__VA_ARGS__), /* test if _TRIGGER_PARENTHESIS_ together with the argument adds a comma */ HAS_COMMA(_TRIGGER_PARENTHESIS_ __VA_ARGS__), /* test if the argument together with a parenthesis adds a comma */ HAS_COMMA(__VA_ARGS__ (/*empty*/)), /* test if placing it between _TRIGGER_PARENTHESIS_ and the parenthesis adds a comma */ HAS_COMMA(_TRIGGER_PARENTHESIS_ __VA_ARGS__ (/*empty*/)) ) + #define _ISEMPTY(_0, _1, _2, _3) HAS_COMMA(PASTE5(_IS_EMPTY_CASE_, _0, _1, _2, _3)) + #define HAS_COMMA(...) PP_ARG_N(__VA_ARGS__, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0) #define _TRIGGER_PARENTHESIS_(...) , - #define PASTE5(_0, _1, _2, _3, _4) _0 ## _1 ## _2 ## _3 ## _4 #define _IS_EMPTY_CASE_0001 , #endif @@ -6705,9 +6702,14 @@ FFF_END_EXTERN_C #endif //PP_UTIL #ifndef PP_NARG - #define PP_NARG(...) EXPAND(PP_ARG_N(__VA_ARGS__, PP_RSEQ_N())) #define PP_ARG_N(...) EXPAND(_PP_ARG_N(__VA_ARGS__)) - #define _PP_ARG_N(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, _65, _66, _67, _68, _69, _70, _71, _72, _73, _74, _75, _76, _77, _78, _79, _80, _81, _82, _83, _84, _85, _86, _87, _88, _89, _90, _91, _92, _93, _94, _95, _96, _97, _98, _99, _100, _101, _102, _103, _104, _105, _106, _107, _108, _109, _110, _111, _112, _113, _114, _115, _116, _117, _118, _119, _120, _121, _122, _123, _124, _125, _126, _127, _128, _129, _130, _131, _132, _133, _134, _135, _136, _137, _138, _139, _140, _141, _142, _143, _144, _145, _146, _147, _148, _149, _150, _151, _152, _153, _154, _155, _156, _157, _158, _159, _160, _161, _162, _163, _164, _165, _166, _167, _168, _169, _170, _171, _172, _173, _174, _175, _176, _177, _178, _179, _180, _181, _182, _183, _184, _185, _186, _187, _188, _189, _190, _191, _192, _193, _194, _195, _196, _197, _198, _199, _200, _201, _202, _203, _204, _205, _206, _207, _208, _209, _210, _211, _212, _213, _214, _215, _216, _217, _218, _219, _220, _221, _222, _223, _224, _225, _226, _227, _228, _229, _230, _231, _232, _233, _234, _235, _236, _237, _238, _239, _240, _241, _242, _243, _244, _245, _246, _247, _248, _249, _250, _251, _252, _253, _254, _255, _256, N, ...) N + #if defined(__GNUC__) && !defined(__STRICT_ANSI__) + #define PP_NARG(...) EXPAND(PP_ARG_N(_0, ##__VA_ARGS__, PP_RSEQ_N())) + #define _PP_ARG_N(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, _65, _66, _67, _68, _69, _70, _71, _72, _73, _74, _75, _76, _77, _78, _79, _80, _81, _82, _83, _84, _85, _86, _87, _88, _89, _90, _91, _92, _93, _94, _95, _96, _97, _98, _99, _100, _101, _102, _103, _104, _105, _106, _107, _108, _109, _110, _111, _112, _113, _114, _115, _116, _117, _118, _119, _120, _121, _122, _123, _124, _125, _126, _127, _128, _129, _130, _131, _132, _133, _134, _135, _136, _137, _138, _139, _140, _141, _142, _143, _144, _145, _146, _147, _148, _149, _150, _151, _152, _153, _154, _155, _156, _157, _158, _159, _160, _161, _162, _163, _164, _165, _166, _167, _168, _169, _170, _171, _172, _173, _174, _175, _176, _177, _178, _179, _180, _181, _182, _183, _184, _185, _186, _187, _188, _189, _190, _191, _192, _193, _194, _195, _196, _197, _198, _199, _200, _201, _202, _203, _204, _205, _206, _207, _208, _209, _210, _211, _212, _213, _214, _215, _216, _217, _218, _219, _220, _221, _222, _223, _224, _225, _226, _227, _228, _229, _230, _231, _232, _233, _234, _235, _236, _237, _238, _239, _240, _241, _242, _243, _244, _245, _246, _247, _248, _249, _250, _251, _252, _253, _254, _255, _256, _257, N, ...) N + #else + #define PP_NARG(...) EXPAND(PP_ARG_N(__VA_ARGS__, PP_RSEQ_N())) + #define _PP_ARG_N(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, _65, _66, _67, _68, _69, _70, _71, _72, _73, _74, _75, _76, _77, _78, _79, _80, _81, _82, _83, _84, _85, _86, _87, _88, _89, _90, _91, _92, _93, _94, _95, _96, _97, _98, _99, _100, _101, _102, _103, _104, _105, _106, _107, _108, _109, _110, _111, _112, _113, _114, _115, _116, _117, _118, _119, _120, _121, _122, _123, _124, _125, _126, _127, _128, _129, _130, _131, _132, _133, _134, _135, _136, _137, _138, _139, _140, _141, _142, _143, _144, _145, _146, _147, _148, _149, _150, _151, _152, _153, _154, _155, _156, _157, _158, _159, _160, _161, _162, _163, _164, _165, _166, _167, _168, _169, _170, _171, _172, _173, _174, _175, _176, _177, _178, _179, _180, _181, _182, _183, _184, _185, _186, _187, _188, _189, _190, _191, _192, _193, _194, _195, _196, _197, _198, _199, _200, _201, _202, _203, _204, _205, _206, _207, _208, _209, _210, _211, _212, _213, _214, _215, _216, _217, _218, _219, _220, _221, _222, _223, _224, _225, _226, _227, _228, _229, _230, _231, _232, _233, _234, _235, _236, _237, _238, _239, _240, _241, _242, _243, _244, _245, _246, _247, _248, _249, _250, _251, _252, _253, _254, _255, _256, N, ...) N + #endif #endif //PP_NARG @@ -6767,23 +6769,38 @@ FFF_END_EXTERN_C #ifndef PP_NARG_MINUS1 - #define PP_NARG_MINUS1(...) EXPAND(PP_ARG_MINUS1_N(__VA_ARGS__, PP_RSEQ_N())) #define PP_ARG_MINUS1_N(...) EXPAND(_PP_ARG_MINUS1_N(__VA_ARGS__)) - #define _PP_ARG_MINUS1_N(__0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, _65, _66, _67, _68, _69, _70, _71, _72, _73, _74, _75, _76, _77, _78, _79, _80, _81, _82, _83, _84, _85, _86, _87, _88, _89, _90, _91, _92, _93, _94, _95, _96, _97, _98, _99, _100, _101, _102, _103, _104, _105, _106, _107, _108, _109, _110, _111, _112, _113, _114, _115, _116, _117, _118, _119, _120, _121, _122, _123, _124, _125, _126, _127, _128, _129, _130, _131, _132, _133, _134, _135, _136, _137, _138, _139, _140, _141, _142, _143, _144, _145, _146, _147, _148, _149, _150, _151, _152, _153, _154, _155, _156, _157, _158, _159, _160, _161, _162, _163, _164, _165, _166, _167, _168, _169, _170, _171, _172, _173, _174, _175, _176, _177, _178, _179, _180, _181, _182, _183, _184, _185, _186, _187, _188, _189, _190, _191, _192, _193, _194, _195, _196, _197, _198, _199, _200, _201, _202, _203, _204, _205, _206, _207, _208, _209, _210, _211, _212, _213, _214, _215, _216, _217, _218, _219, _220, _221, _222, _223, _224, _225, _226, _227, _228, _229, _230, _231, _232, _233, _234, _235, _236, _237, _238, _239, _240, _241, _242, _243, _244, _245, _246, _247, _248, _249, _250, _251, _252, _253, _254, _255, _256, N, ...) N + #if defined(__GNUC__) && !defined(__STRICT_ANSI__) + #define PP_NARG_MINUS1(...) EXPAND(PP_ARG_MINUS1_N(_0, ##__VA_ARGS__, PP_RSEQ_N())) + #define _PP_ARG_MINUS1_N(__0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, _65, _66, _67, _68, _69, _70, _71, _72, _73, _74, _75, _76, _77, _78, _79, _80, _81, _82, _83, _84, _85, _86, _87, _88, _89, _90, _91, _92, _93, _94, _95, _96, _97, _98, _99, _100, _101, _102, _103, _104, _105, _106, _107, _108, _109, _110, _111, _112, _113, _114, _115, _116, _117, _118, _119, _120, _121, _122, _123, _124, _125, _126, _127, _128, _129, _130, _131, _132, _133, _134, _135, _136, _137, _138, _139, _140, _141, _142, _143, _144, _145, _146, _147, _148, _149, _150, _151, _152, _153, _154, _155, _156, _157, _158, _159, _160, _161, _162, _163, _164, _165, _166, _167, _168, _169, _170, _171, _172, _173, _174, _175, _176, _177, _178, _179, _180, _181, _182, _183, _184, _185, _186, _187, _188, _189, _190, _191, _192, _193, _194, _195, _196, _197, _198, _199, _200, _201, _202, _203, _204, _205, _206, _207, _208, _209, _210, _211, _212, _213, _214, _215, _216, _217, _218, _219, _220, _221, _222, _223, _224, _225, _226, _227, _228, _229, _230, _231, _232, _233, _234, _235, _236, _237, _238, _239, _240, _241, _242, _243, _244, _245, _246, _247, _248, _249, _250, _251, _252, _253, _254, _255, _256, _257, N, ...) N + #else + #define PP_NARG_MINUS1(...) EXPAND(PP_ARG_MINUS1_N(__VA_ARGS__, PP_RSEQ_N())) + #define _PP_ARG_MINUS1_N(__0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, _65, _66, _67, _68, _69, _70, _71, _72, _73, _74, _75, _76, _77, _78, _79, _80, _81, _82, _83, _84, _85, _86, _87, _88, _89, _90, _91, _92, _93, _94, _95, _96, _97, _98, _99, _100, _101, _102, _103, _104, _105, _106, _107, _108, _109, _110, _111, _112, _113, _114, _115, _116, _117, _118, _119, _120, _121, _122, _123, _124, _125, _126, _127, _128, _129, _130, _131, _132, _133, _134, _135, _136, _137, _138, _139, _140, _141, _142, _143, _144, _145, _146, _147, _148, _149, _150, _151, _152, _153, _154, _155, _156, _157, _158, _159, _160, _161, _162, _163, _164, _165, _166, _167, _168, _169, _170, _171, _172, _173, _174, _175, _176, _177, _178, _179, _180, _181, _182, _183, _184, _185, _186, _187, _188, _189, _190, _191, _192, _193, _194, _195, _196, _197, _198, _199, _200, _201, _202, _203, _204, _205, _206, _207, _208, _209, _210, _211, _212, _213, _214, _215, _216, _217, _218, _219, _220, _221, _222, _223, _224, _225, _226, _227, _228, _229, _230, _231, _232, _233, _234, _235, _236, _237, _238, _239, _240, _241, _242, _243, _244, _245, _246, _247, _248, _249, _250, _251, _252, _253, _254, _255, _256, N, ...) N + #endif #endif //PP_NARG_MINUS1 #ifndef PP_NARG_MINUS2 - #define PP_NARG_MINUS2(...) EXPAND(PP_ARG_MINUS2_N(__VA_ARGS__, PP_RSEQ_N())) #define PP_ARG_MINUS2_N(...) EXPAND(_PP_ARG_MINUS2_N(__VA_ARGS__)) - #define _PP_ARG_MINUS2_N(__1, __0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, _65, _66, _67, _68, _69, _70, _71, _72, _73, _74, _75, _76, _77, _78, _79, _80, _81, _82, _83, _84, _85, _86, _87, _88, _89, _90, _91, _92, _93, _94, _95, _96, _97, _98, _99, _100, _101, _102, _103, _104, _105, _106, _107, _108, _109, _110, _111, _112, _113, _114, _115, _116, _117, _118, _119, _120, _121, _122, _123, _124, _125, _126, _127, _128, _129, _130, _131, _132, _133, _134, _135, _136, _137, _138, _139, _140, _141, _142, _143, _144, _145, _146, _147, _148, _149, _150, _151, _152, _153, _154, _155, _156, _157, _158, _159, _160, _161, _162, _163, _164, _165, _166, _167, _168, _169, _170, _171, _172, _173, _174, _175, _176, _177, _178, _179, _180, _181, _182, _183, _184, _185, _186, _187, _188, _189, _190, _191, _192, _193, _194, _195, _196, _197, _198, _199, _200, _201, _202, _203, _204, _205, _206, _207, _208, _209, _210, _211, _212, _213, _214, _215, _216, _217, _218, _219, _220, _221, _222, _223, _224, _225, _226, _227, _228, _229, _230, _231, _232, _233, _234, _235, _236, _237, _238, _239, _240, _241, _242, _243, _244, _245, _246, _247, _248, _249, _250, _251, _252, _253, _254, _255, _256, N, ...) N + #if defined(__GNUC__) && !defined(__STRICT_ANSI__) + #define PP_NARG_MINUS2(...) EXPAND(PP_ARG_MINUS2_N(_0, ##__VA_ARGS__, PP_RSEQ_N())) + #define _PP_ARG_MINUS2_N(__1, __0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, _65, _66, _67, _68, _69, _70, _71, _72, _73, _74, _75, _76, _77, _78, _79, _80, _81, _82, _83, _84, _85, _86, _87, _88, _89, _90, _91, _92, _93, _94, _95, _96, _97, _98, _99, _100, _101, _102, _103, _104, _105, _106, _107, _108, _109, _110, _111, _112, _113, _114, _115, _116, _117, _118, _119, _120, _121, _122, _123, _124, _125, _126, _127, _128, _129, _130, _131, _132, _133, _134, _135, _136, _137, _138, _139, _140, _141, _142, _143, _144, _145, _146, _147, _148, _149, _150, _151, _152, _153, _154, _155, _156, _157, _158, _159, _160, _161, _162, _163, _164, _165, _166, _167, _168, _169, _170, _171, _172, _173, _174, _175, _176, _177, _178, _179, _180, _181, _182, _183, _184, _185, _186, _187, _188, _189, _190, _191, _192, _193, _194, _195, _196, _197, _198, _199, _200, _201, _202, _203, _204, _205, _206, _207, _208, _209, _210, _211, _212, _213, _214, _215, _216, _217, _218, _219, _220, _221, _222, _223, _224, _225, _226, _227, _228, _229, _230, _231, _232, _233, _234, _235, _236, _237, _238, _239, _240, _241, _242, _243, _244, _245, _246, _247, _248, _249, _250, _251, _252, _253, _254, _255, _256, _257, N, ...) N + #else + #define PP_NARG_MINUS2(...) EXPAND(PP_ARG_MINUS2_N(__VA_ARGS__, PP_RSEQ_N())) + #define _PP_ARG_MINUS2_N(__1, __0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, _65, _66, _67, _68, _69, _70, _71, _72, _73, _74, _75, _76, _77, _78, _79, _80, _81, _82, _83, _84, _85, _86, _87, _88, _89, _90, _91, _92, _93, _94, _95, _96, _97, _98, _99, _100, _101, _102, _103, _104, _105, _106, _107, _108, _109, _110, _111, _112, _113, _114, _115, _116, _117, _118, _119, _120, _121, _122, _123, _124, _125, _126, _127, _128, _129, _130, _131, _132, _133, _134, _135, _136, _137, _138, _139, _140, _141, _142, _143, _144, _145, _146, _147, _148, _149, _150, _151, _152, _153, _154, _155, _156, _157, _158, _159, _160, _161, _162, _163, _164, _165, _166, _167, _168, _169, _170, _171, _172, _173, _174, _175, _176, _177, _178, _179, _180, _181, _182, _183, _184, _185, _186, _187, _188, _189, _190, _191, _192, _193, _194, _195, _196, _197, _198, _199, _200, _201, _202, _203, _204, _205, _206, _207, _208, _209, _210, _211, _212, _213, _214, _215, _216, _217, _218, _219, _220, _221, _222, _223, _224, _225, _226, _227, _228, _229, _230, _231, _232, _233, _234, _235, _236, _237, _238, _239, _240, _241, _242, _243, _244, _245, _246, _247, _248, _249, _250, _251, _252, _253, _254, _255, _256, N, ...) N + #endif #endif //PP_NARG_MINUS2 #ifndef PP_NARG_MINUS3 - #define PP_NARG_MINUS3(...) EXPAND(PP_ARG_MINUS3_N(__VA_ARGS__, PP_RSEQ_N())) #define PP_ARG_MINUS3_N(...) EXPAND(_PP_ARG_MINUS3_N(__VA_ARGS__)) - #define _PP_ARG_MINUS3_N(__2, __1, __0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, _65, _66, _67, _68, _69, _70, _71, _72, _73, _74, _75, _76, _77, _78, _79, _80, _81, _82, _83, _84, _85, _86, _87, _88, _89, _90, _91, _92, _93, _94, _95, _96, _97, _98, _99, _100, _101, _102, _103, _104, _105, _106, _107, _108, _109, _110, _111, _112, _113, _114, _115, _116, _117, _118, _119, _120, _121, _122, _123, _124, _125, _126, _127, _128, _129, _130, _131, _132, _133, _134, _135, _136, _137, _138, _139, _140, _141, _142, _143, _144, _145, _146, _147, _148, _149, _150, _151, _152, _153, _154, _155, _156, _157, _158, _159, _160, _161, _162, _163, _164, _165, _166, _167, _168, _169, _170, _171, _172, _173, _174, _175, _176, _177, _178, _179, _180, _181, _182, _183, _184, _185, _186, _187, _188, _189, _190, _191, _192, _193, _194, _195, _196, _197, _198, _199, _200, _201, _202, _203, _204, _205, _206, _207, _208, _209, _210, _211, _212, _213, _214, _215, _216, _217, _218, _219, _220, _221, _222, _223, _224, _225, _226, _227, _228, _229, _230, _231, _232, _233, _234, _235, _236, _237, _238, _239, _240, _241, _242, _243, _244, _245, _246, _247, _248, _249, _250, _251, _252, _253, _254, _255, _256, N, ...) N + #if defined(__GNUC__) && !defined(__STRICT_ANSI__) + #define PP_NARG_MINUS3(...) EXPAND(PP_ARG_MINUS3_N(_0, ##__VA_ARGS__, PP_RSEQ_N())) + #define _PP_ARG_MINUS3_N(__2, __1, __0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, _65, _66, _67, _68, _69, _70, _71, _72, _73, _74, _75, _76, _77, _78, _79, _80, _81, _82, _83, _84, _85, _86, _87, _88, _89, _90, _91, _92, _93, _94, _95, _96, _97, _98, _99, _100, _101, _102, _103, _104, _105, _106, _107, _108, _109, _110, _111, _112, _113, _114, _115, _116, _117, _118, _119, _120, _121, _122, _123, _124, _125, _126, _127, _128, _129, _130, _131, _132, _133, _134, _135, _136, _137, _138, _139, _140, _141, _142, _143, _144, _145, _146, _147, _148, _149, _150, _151, _152, _153, _154, _155, _156, _157, _158, _159, _160, _161, _162, _163, _164, _165, _166, _167, _168, _169, _170, _171, _172, _173, _174, _175, _176, _177, _178, _179, _180, _181, _182, _183, _184, _185, _186, _187, _188, _189, _190, _191, _192, _193, _194, _195, _196, _197, _198, _199, _200, _201, _202, _203, _204, _205, _206, _207, _208, _209, _210, _211, _212, _213, _214, _215, _216, _217, _218, _219, _220, _221, _222, _223, _224, _225, _226, _227, _228, _229, _230, _231, _232, _233, _234, _235, _236, _237, _238, _239, _240, _241, _242, _243, _244, _245, _246, _247, _248, _249, _250, _251, _252, _253, _254, _255, _256, _257, N, ...) N + #else + #define PP_NARG_MINUS3(...) EXPAND(PP_ARG_MINUS3_N(__VA_ARGS__, PP_RSEQ_N())) + #define _PP_ARG_MINUS3_N(__2, __1, __0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, _65, _66, _67, _68, _69, _70, _71, _72, _73, _74, _75, _76, _77, _78, _79, _80, _81, _82, _83, _84, _85, _86, _87, _88, _89, _90, _91, _92, _93, _94, _95, _96, _97, _98, _99, _100, _101, _102, _103, _104, _105, _106, _107, _108, _109, _110, _111, _112, _113, _114, _115, _116, _117, _118, _119, _120, _121, _122, _123, _124, _125, _126, _127, _128, _129, _130, _131, _132, _133, _134, _135, _136, _137, _138, _139, _140, _141, _142, _143, _144, _145, _146, _147, _148, _149, _150, _151, _152, _153, _154, _155, _156, _157, _158, _159, _160, _161, _162, _163, _164, _165, _166, _167, _168, _169, _170, _171, _172, _173, _174, _175, _176, _177, _178, _179, _180, _181, _182, _183, _184, _185, _186, _187, _188, _189, _190, _191, _192, _193, _194, _195, _196, _197, _198, _199, _200, _201, _202, _203, _204, _205, _206, _207, _208, _209, _210, _211, _212, _213, _214, _215, _216, _217, _218, _219, _220, _221, _222, _223, _224, _225, _226, _227, _228, _229, _230, _231, _232, _233, _234, _235, _236, _237, _238, _239, _240, _241, _242, _243, _244, _245, _246, _247, _248, _249, _250, _251, _252, _253, _254, _255, _256, N, ...) N + #endif #endif //PP_NARG_MINUS3 diff --git a/pp_iterators.rb b/pp_iterators.rb index b5d0803..d58b5cd 100755 --- a/pp_iterators.rb +++ b/pp_iterators.rb @@ -28,6 +28,10 @@ def include_guard(name, content) "#ifndef #{name}\n" + indent(content) + "#endif //#{name}\n" end + def if_gcc_extensions_available(with_gcc, without_gcc) + "#if defined(__GNUC__) && !defined(__STRICT_ANSI__)\n" + indent(with_gcc) + "#else\n" + indent(without_gcc) + "#endif\n" + end + def define_macro(m) m.empty? ? m : "\#define #{m}\n" end @@ -45,11 +49,10 @@ def define_macro_set(guard_name, macros) MAX_ARG_COUNT_DEFAULT = 256 MAX_ARG_COUNT_DEFAULT_NON_RECURSIVE = 64 DEFER_LEVELS_DEFAULT = 6 - attr_reader :nargs_max, :recursive, :gcc, :defer_levels + + attr_reader :nargs_max, :recursive, :defer_levels def initialize(recursive: true, - use_gcc_extensions: false, defer_levels: DEFER_LEVELS_DEFAULT) - @gcc = use_gcc_extensions @recursive = recursive @nargs_max = @recursive ? MAX_ARG_COUNT_DEFAULT : MAX_ARG_COUNT_DEFAULT_NON_RECURSIVE @defer_levels = defer_levels @@ -160,39 +163,32 @@ def logical ) end + IS_EMPTY_NO_GCC_EXTENSIONS = <<-EOH +IS_EMPTY(...)\ +_ISEMPTY(\ + /* test if there is just one argument, eventually an empty one */\ + HAS_COMMA(__VA_ARGS__),\ + /* test if _TRIGGER_PARENTHESIS_ together with the argument adds a comma */\ + HAS_COMMA(_TRIGGER_PARENTHESIS_ __VA_ARGS__),\ + /* test if the argument together with a parenthesis adds a comma */\ + HAS_COMMA(__VA_ARGS__ (/*empty*/)),\ + /* test if placing it between _TRIGGER_PARENTHESIS_ and the parenthesis adds a comma */\ + HAS_COMMA(_TRIGGER_PARENTHESIS_ __VA_ARGS__ (/*empty*/))\ + ) +EOH + def is_empty - <<-EOH -#if defined(__GNUC__) && !defined(__STRICT_ANSI__) - #define IS_EMPTY(...) NOT(PP_NARG(__VA_ARGS__)) -#else - #define IS_EMPTY(...) \ - _ISEMPTY( \ - /* test if there is just one argument, eventually an empty \ - one */ \ - HAS_COMMA(__VA_ARGS__), \ - /* test if _TRIGGER_PARENTHESIS_ together with the argument \ - adds a comma */ \ - HAS_COMMA(_TRIGGER_PARENTHESIS_ __VA_ARGS__), \ - /* test if the argument together with a parenthesis \ - adds a comma */ \ - HAS_COMMA(__VA_ARGS__ (/*empty*/)), \ - /* test if placing it between _TRIGGER_PARENTHESIS_ and the \ - parenthesis adds a comma */ \ - HAS_COMMA(_TRIGGER_PARENTHESIS_ __VA_ARGS__ (/*empty*/)) \ - ) - - #define _ISEMPTY(_0, _1, _2, _3) \ - HAS_COMMA(PASTE5(_IS_EMPTY_CASE_, _0, _1, _2, _3)) - - #define HAS_COMMA(...) \ - PP_ARG_N(__VA_ARGS__, #{'1, '*(@nargs_max-1)} 0) - - #define _TRIGGER_PARENTHESIS_(...) , - - #define PASTE5(_0, _1, _2, _3, _4) _0 ## _1 ## _2 ## _3 ## _4 - #define _IS_EMPTY_CASE_0001 , -#endif - EOH + CFile::if_gcc_extensions_available( + CFile::define_macro("IS_EMPTY(...) NOT(PP_NARG(__VA_ARGS__))"), + CFile::define_macros([ + IS_EMPTY_NO_GCC_EXTENSIONS, + "_ISEMPTY(_0, _1, _2, _3) HAS_COMMA(PASTE5(_IS_EMPTY_CASE_, _0, _1, _2, _3))", + "HAS_COMMA(...) PP_ARG_N(__VA_ARGS__, #{'1, '*(@nargs_max-1)} 0)", + "_TRIGGER_PARENTHESIS_(...) ,", + "PASTE5(_0, _1, _2, _3, _4) _0 ## _1 ## _2 ## _3 ## _4", + "_IS_EMPTY_CASE_0001 ," + ]) + ) end def lists @@ -238,8 +234,8 @@ def narg_common ) end - def arg_n_seq(delta) - seq = arg_seq(first: 1, last: @gcc ? @nargs_max+1 : @nargs_max, prefix: '_') + def arg_n_seq(delta, use_gcc_extensions) + seq = arg_seq(first: 1, last: use_gcc_extensions ? @nargs_max+1 : @nargs_max, prefix: '_') delta==0 ? seq :[arg_seq(first: 0, last: delta-1, prefix: '__', reverse: true), seq].join(', ') end @@ -247,15 +243,19 @@ def narg narg_minus(0) end + def _narg_minus(m, use_gcc_extensions) + suffix = m>0 ? "_MINUS#{m}" : '' + CFile::define_macros(["PP_NARG#{suffix}(...) EXPAND(PP_ARG#{suffix}_N(#{'_0, ##' if use_gcc_extensions}__VA_ARGS__, PP_RSEQ_N()))", + "_PP_ARG#{suffix}_N(#{arg_n_seq(m, use_gcc_extensions)}, N, ...) N" + ]) + end + def narg_minus(m) suffix = m>0 ? "_MINUS#{m}" : '' - CFile::define_macro_set("PP_NARG#{suffix}", - [ - "PP_NARG#{suffix}(...) EXPAND(PP_ARG#{suffix}_N(#{'_0, ##' if @gcc}__VA_ARGS__, PP_RSEQ_N()))", - "PP_ARG#{suffix}_N(...) EXPAND(_PP_ARG#{suffix}_N(__VA_ARGS__))", - "_PP_ARG#{suffix}_N(#{arg_n_seq(m)}, N, ...) N", - ] - ) + CFile::include_guard("PP_NARG#{suffix}", + CFile::define_macro("PP_ARG#{suffix}_N(...) EXPAND(_PP_ARG#{suffix}_N(__VA_ARGS__))")+ + CFile::if_gcc_extensions_available(_narg_minus(m,true), _narg_minus(m,false)) + ) end def pp_each From 09bee66aec5284808878a2d88c51146f843159e5 Mon Sep 17 00:00:00 2001 From: cormacc Date: Fri, 5 Jul 2019 12:32:08 +0100 Subject: [PATCH 06/15] Now including/excluding the 0 counting test using macro sniffing I.e. including if gcc extensions available --- test/fff_test_c.c | 9 ++++++--- test/test_cases_assertions.include | 13 ++++++++----- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/test/fff_test_c.c b/test/fff_test_c.c index 8aa893a..04e0380 100644 --- a/test/fff_test_c.c +++ b/test/fff_test_c.c @@ -88,8 +88,8 @@ int main() fflush(0); /* Run tests */ - RUN_TESTS(FFFTestSuite, - when_void_func_never_called_then_callcount_is_zero, + RUN_TESTS( + FFFTestSuite, when_void_func_never_called_then_callcount_is_zero, when_void_func_called_once_then_callcount_is_one, when_void_func_called_once_and_reset_then_callcount_is_zero, when_void_func_with_1_integer_arg_called_then_last_arg_captured, @@ -139,7 +139,10 @@ int main() variadic_return_values_no_array_name_collisions_when_called_repeatedly, variadic_return_values_no_assertion_given_single_value, variadic_return_values_assertion_valid_given_value_sequence, - /* variadic_return_values_assertion_invalid_given_0_length_sequence, */ + +#if defined(__GNUC__) && !defined(__STRICT_ANSI__) + variadic_return_values_assertion_invalid_given_0_length_sequence, +#endif assert_calls_assertion_valid_given_match, assert_calls_assertion_invalid_when_underestimated, diff --git a/test/test_cases_assertions.include b/test/test_cases_assertions.include index f4ca3d7..e8ba44d 100644 --- a/test/test_cases_assertions.include +++ b/test/test_cases_assertions.include @@ -64,12 +64,15 @@ TEST_F(FFFTestSuite, variadic_return_values_assertion_valid_given_value_sequence ASSERT_FAKE_ASSERTION_WAS(VALID); } -/* TEST_F(FFFTestSuite, variadic_return_values_assertion_invalid_given_0_length_sequence) */ -/* { */ -/* FFF_RETURN(longfunc0); */ -/* ASSERT_FAKE_ASSERTION_WAS(INVALID); */ -/* } */ +#if defined(__GNUC__) && !defined(__STRICT_ANSI__) +TEST_F(FFFTestSuite, variadic_return_values_assertion_invalid_given_0_length_sequence) +{ + FFF_RETURN(longfunc0); + + ASSERT_FAKE_ASSERTION_WAS(INVALID); +} +#endif static void _callFake(int ncalls) { From e781328b35ec9363c6f48794039fbeb1003deb14 Mon Sep 17 00:00:00 2001 From: Cormac Cannon Date: Wed, 17 Jul 2019 23:26:25 +0100 Subject: [PATCH 07/15] Updated appveyor path for Ruby 2.0 --- .appveyor.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.appveyor.yml b/.appveyor.yml index 8cbacf1..0c4e1f2 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -1,5 +1,7 @@ version: '{build}-appveyor' image: Visual Studio 2017 +install: + - set PATH=C:\Ruby200\bin;%PATH% build: verbosity: minimal test_script: @@ -10,4 +12,4 @@ test_script: C:\projects\fff\test\ms_vc_fff_test\x64\Debug\ms_vc_fff_test_global_cpp.exe - C:\projects\fff\test\ms_vc_fff_test\x64\Debug\ms_vc_fff_test_global_c.exe \ No newline at end of file + C:\projects\fff\test\ms_vc_fff_test\x64\Debug\ms_vc_fff_test_global_c.exe From 3090c11d0e21dd24b204196d7ec067c06659de0d Mon Sep 17 00:00:00 2001 From: Cormac Cannon Date: Wed, 17 Jul 2019 23:30:27 +0100 Subject: [PATCH 08/15] Reduced default max args to 63 (for MSVC compatibility) Also sniffing for MSVC and using decltype rather than typeof --- fakegen.rb | 5 +++++ fff.h | 35 ++++++++++++++++++----------------- pp_iterators.rb | 3 ++- 3 files changed, 25 insertions(+), 18 deletions(-) diff --git a/fakegen.rb b/fakegen.rb index 01112d3..92acac6 100644 --- a/fakegen.rb +++ b/fakegen.rb @@ -78,7 +78,12 @@ def define_return_sequence_helpers /* FFF_RETURN (begin) */ #define FFF_RETURN(...) \ _FFF_SEQ_DEF(__VA_ARGS__); if(PP_NARG(__VA_ARGS__) == 2) {FFF_RETURN_VAL(__VA_ARGS__, 0);} else {_FFF_RETURN_SEQ(HEAD(__VA_ARGS__));} +#ifdef _MSC_VER +//MSVC decltype ~= typeof, but only in c++ mode.... +#define _FFF_RET_TYPE(FN) decltype(FFF_RET(FN)) +#else #define _FFF_RET_TYPE(FN) __typeof__(FFF_RET(FN)) +#endif #define _FFF_SEQ(FN) CAT(FN, __LINE__) #define _FFF_SEQ_DEF(FN, ...) _FFF_RET_TYPE(FN) _FFF_SEQ(FN)[] = {__VA_ARGS__} #define _FFF_SEQ_LEN(FN) (sizeof(_FFF_SEQ(FN))/sizeof(FFF_RET(FN))) diff --git a/fff.h b/fff.h index bc66e22..3c08e6b 100644 --- a/fff.h +++ b/fff.h @@ -47,7 +47,12 @@ SOFTWARE. /* FFF_RETURN (begin) */ #define FFF_RETURN(...) \ _FFF_SEQ_DEF(__VA_ARGS__); if(PP_NARG(__VA_ARGS__) == 2) {FFF_RETURN_VAL(__VA_ARGS__, 0);} else {_FFF_RETURN_SEQ(HEAD(__VA_ARGS__));} +#ifdef _MSC_VER +//MSVC decltype ~= typeof, but only in c++ mode.... +#define _FFF_RET_TYPE(FN) decltype(FFF_RET(FN)) +#else #define _FFF_RET_TYPE(FN) __typeof__(FFF_RET(FN)) +#endif #define _FFF_SEQ(FN) CAT(FN, __LINE__) #define _FFF_SEQ_DEF(FN, ...) _FFF_RET_TYPE(FN) _FFF_SEQ(FN)[] = {__VA_ARGS__} #define _FFF_SEQ_LEN(FN) (sizeof(_FFF_SEQ(FN))/sizeof(FFF_RET(FN))) @@ -6566,27 +6571,23 @@ FFF_END_EXTERN_C #endif //DEFER #ifndef EVAL - #define EVAL(...) _EVAL_8(__VA_ARGS__) + #define EVAL(...) _EVAL_6(__VA_ARGS__) #define _EVAL_1(...) __VA_ARGS__ #define _EVAL_2(...) _EVAL_1(_EVAL_1(__VA_ARGS__)) #define _EVAL_3(...) _EVAL_2(_EVAL_2(__VA_ARGS__)) #define _EVAL_4(...) _EVAL_3(_EVAL_3(__VA_ARGS__)) #define _EVAL_5(...) _EVAL_4(_EVAL_4(__VA_ARGS__)) #define _EVAL_6(...) _EVAL_5(_EVAL_5(__VA_ARGS__)) - #define _EVAL_7(...) _EVAL_6(_EVAL_6(__VA_ARGS__)) - #define _EVAL_8(...) _EVAL_7(_EVAL_7(__VA_ARGS__)) #endif //EVAL #ifndef EVAL_ - #define EVAL_(...) _EVAL__8(__VA_ARGS__) + #define EVAL_(...) _EVAL__6(__VA_ARGS__) #define _EVAL__1(...) __VA_ARGS__ #define _EVAL__2(...) _EVAL__1(_EVAL__1(__VA_ARGS__)) #define _EVAL__3(...) _EVAL__2(_EVAL__2(__VA_ARGS__)) #define _EVAL__4(...) _EVAL__3(_EVAL__3(__VA_ARGS__)) #define _EVAL__5(...) _EVAL__4(_EVAL__4(__VA_ARGS__)) #define _EVAL__6(...) _EVAL__5(_EVAL__5(__VA_ARGS__)) - #define _EVAL__7(...) _EVAL__6(_EVAL__6(__VA_ARGS__)) - #define _EVAL__8(...) _EVAL__7(_EVAL__7(__VA_ARGS__)) #endif //EVAL_ @@ -6666,7 +6667,7 @@ FFF_END_EXTERN_C #define IS_EMPTY(...)_ISEMPTY( /* test if there is just one argument, eventually an empty one */ HAS_COMMA(__VA_ARGS__), /* test if _TRIGGER_PARENTHESIS_ together with the argument adds a comma */ HAS_COMMA(_TRIGGER_PARENTHESIS_ __VA_ARGS__), /* test if the argument together with a parenthesis adds a comma */ HAS_COMMA(__VA_ARGS__ (/*empty*/)), /* test if placing it between _TRIGGER_PARENTHESIS_ and the parenthesis adds a comma */ HAS_COMMA(_TRIGGER_PARENTHESIS_ __VA_ARGS__ (/*empty*/)) ) #define _ISEMPTY(_0, _1, _2, _3) HAS_COMMA(PASTE5(_IS_EMPTY_CASE_, _0, _1, _2, _3)) - #define HAS_COMMA(...) PP_ARG_N(__VA_ARGS__, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0) + #define HAS_COMMA(...) PP_ARG_N(__VA_ARGS__, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0) #define _TRIGGER_PARENTHESIS_(...) , #define PASTE5(_0, _1, _2, _3, _4) _0 ## _1 ## _2 ## _3 ## _4 #define _IS_EMPTY_CASE_0001 , @@ -6697,18 +6698,18 @@ FFF_END_EXTERN_C #ifndef PP_UTIL #define PP_UTIL #define EXPAND(x) x - #define PP_SEQ_N() 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256 - #define PP_RSEQ_N() 256, 255, 254, 253, 252, 251, 250, 249, 248, 247, 246, 245, 244, 243, 242, 241, 240, 239, 238, 237, 236, 235, 234, 233, 232, 231, 230, 229, 228, 227, 226, 225, 224, 223, 222, 221, 220, 219, 218, 217, 216, 215, 214, 213, 212, 211, 210, 209, 208, 207, 206, 205, 204, 203, 202, 201, 200, 199, 198, 197, 196, 195, 194, 193, 192, 191, 190, 189, 188, 187, 186, 185, 184, 183, 182, 181, 180, 179, 178, 177, 176, 175, 174, 173, 172, 171, 170, 169, 168, 167, 166, 165, 164, 163, 162, 161, 160, 159, 158, 157, 156, 155, 154, 153, 152, 151, 150, 149, 148, 147, 146, 145, 144, 143, 142, 141, 140, 139, 138, 137, 136, 135, 134, 133, 132, 131, 130, 129, 128, 127, 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116, 115, 114, 113, 112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 + #define PP_SEQ_N() 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63 + #define PP_RSEQ_N() 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 #endif //PP_UTIL #ifndef PP_NARG #define PP_ARG_N(...) EXPAND(_PP_ARG_N(__VA_ARGS__)) #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define PP_NARG(...) EXPAND(PP_ARG_N(_0, ##__VA_ARGS__, PP_RSEQ_N())) - #define _PP_ARG_N(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, _65, _66, _67, _68, _69, _70, _71, _72, _73, _74, _75, _76, _77, _78, _79, _80, _81, _82, _83, _84, _85, _86, _87, _88, _89, _90, _91, _92, _93, _94, _95, _96, _97, _98, _99, _100, _101, _102, _103, _104, _105, _106, _107, _108, _109, _110, _111, _112, _113, _114, _115, _116, _117, _118, _119, _120, _121, _122, _123, _124, _125, _126, _127, _128, _129, _130, _131, _132, _133, _134, _135, _136, _137, _138, _139, _140, _141, _142, _143, _144, _145, _146, _147, _148, _149, _150, _151, _152, _153, _154, _155, _156, _157, _158, _159, _160, _161, _162, _163, _164, _165, _166, _167, _168, _169, _170, _171, _172, _173, _174, _175, _176, _177, _178, _179, _180, _181, _182, _183, _184, _185, _186, _187, _188, _189, _190, _191, _192, _193, _194, _195, _196, _197, _198, _199, _200, _201, _202, _203, _204, _205, _206, _207, _208, _209, _210, _211, _212, _213, _214, _215, _216, _217, _218, _219, _220, _221, _222, _223, _224, _225, _226, _227, _228, _229, _230, _231, _232, _233, _234, _235, _236, _237, _238, _239, _240, _241, _242, _243, _244, _245, _246, _247, _248, _249, _250, _251, _252, _253, _254, _255, _256, _257, N, ...) N + #define _PP_ARG_N(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, N, ...) N #else #define PP_NARG(...) EXPAND(PP_ARG_N(__VA_ARGS__, PP_RSEQ_N())) - #define _PP_ARG_N(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, _65, _66, _67, _68, _69, _70, _71, _72, _73, _74, _75, _76, _77, _78, _79, _80, _81, _82, _83, _84, _85, _86, _87, _88, _89, _90, _91, _92, _93, _94, _95, _96, _97, _98, _99, _100, _101, _102, _103, _104, _105, _106, _107, _108, _109, _110, _111, _112, _113, _114, _115, _116, _117, _118, _119, _120, _121, _122, _123, _124, _125, _126, _127, _128, _129, _130, _131, _132, _133, _134, _135, _136, _137, _138, _139, _140, _141, _142, _143, _144, _145, _146, _147, _148, _149, _150, _151, _152, _153, _154, _155, _156, _157, _158, _159, _160, _161, _162, _163, _164, _165, _166, _167, _168, _169, _170, _171, _172, _173, _174, _175, _176, _177, _178, _179, _180, _181, _182, _183, _184, _185, _186, _187, _188, _189, _190, _191, _192, _193, _194, _195, _196, _197, _198, _199, _200, _201, _202, _203, _204, _205, _206, _207, _208, _209, _210, _211, _212, _213, _214, _215, _216, _217, _218, _219, _220, _221, _222, _223, _224, _225, _226, _227, _228, _229, _230, _231, _232, _233, _234, _235, _236, _237, _238, _239, _240, _241, _242, _243, _244, _245, _246, _247, _248, _249, _250, _251, _252, _253, _254, _255, _256, N, ...) N + #define _PP_ARG_N(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, N, ...) N #endif #endif //PP_NARG @@ -6772,10 +6773,10 @@ FFF_END_EXTERN_C #define PP_ARG_MINUS1_N(...) EXPAND(_PP_ARG_MINUS1_N(__VA_ARGS__)) #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define PP_NARG_MINUS1(...) EXPAND(PP_ARG_MINUS1_N(_0, ##__VA_ARGS__, PP_RSEQ_N())) - #define _PP_ARG_MINUS1_N(__0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, _65, _66, _67, _68, _69, _70, _71, _72, _73, _74, _75, _76, _77, _78, _79, _80, _81, _82, _83, _84, _85, _86, _87, _88, _89, _90, _91, _92, _93, _94, _95, _96, _97, _98, _99, _100, _101, _102, _103, _104, _105, _106, _107, _108, _109, _110, _111, _112, _113, _114, _115, _116, _117, _118, _119, _120, _121, _122, _123, _124, _125, _126, _127, _128, _129, _130, _131, _132, _133, _134, _135, _136, _137, _138, _139, _140, _141, _142, _143, _144, _145, _146, _147, _148, _149, _150, _151, _152, _153, _154, _155, _156, _157, _158, _159, _160, _161, _162, _163, _164, _165, _166, _167, _168, _169, _170, _171, _172, _173, _174, _175, _176, _177, _178, _179, _180, _181, _182, _183, _184, _185, _186, _187, _188, _189, _190, _191, _192, _193, _194, _195, _196, _197, _198, _199, _200, _201, _202, _203, _204, _205, _206, _207, _208, _209, _210, _211, _212, _213, _214, _215, _216, _217, _218, _219, _220, _221, _222, _223, _224, _225, _226, _227, _228, _229, _230, _231, _232, _233, _234, _235, _236, _237, _238, _239, _240, _241, _242, _243, _244, _245, _246, _247, _248, _249, _250, _251, _252, _253, _254, _255, _256, _257, N, ...) N + #define _PP_ARG_MINUS1_N(__0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, N, ...) N #else #define PP_NARG_MINUS1(...) EXPAND(PP_ARG_MINUS1_N(__VA_ARGS__, PP_RSEQ_N())) - #define _PP_ARG_MINUS1_N(__0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, _65, _66, _67, _68, _69, _70, _71, _72, _73, _74, _75, _76, _77, _78, _79, _80, _81, _82, _83, _84, _85, _86, _87, _88, _89, _90, _91, _92, _93, _94, _95, _96, _97, _98, _99, _100, _101, _102, _103, _104, _105, _106, _107, _108, _109, _110, _111, _112, _113, _114, _115, _116, _117, _118, _119, _120, _121, _122, _123, _124, _125, _126, _127, _128, _129, _130, _131, _132, _133, _134, _135, _136, _137, _138, _139, _140, _141, _142, _143, _144, _145, _146, _147, _148, _149, _150, _151, _152, _153, _154, _155, _156, _157, _158, _159, _160, _161, _162, _163, _164, _165, _166, _167, _168, _169, _170, _171, _172, _173, _174, _175, _176, _177, _178, _179, _180, _181, _182, _183, _184, _185, _186, _187, _188, _189, _190, _191, _192, _193, _194, _195, _196, _197, _198, _199, _200, _201, _202, _203, _204, _205, _206, _207, _208, _209, _210, _211, _212, _213, _214, _215, _216, _217, _218, _219, _220, _221, _222, _223, _224, _225, _226, _227, _228, _229, _230, _231, _232, _233, _234, _235, _236, _237, _238, _239, _240, _241, _242, _243, _244, _245, _246, _247, _248, _249, _250, _251, _252, _253, _254, _255, _256, N, ...) N + #define _PP_ARG_MINUS1_N(__0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, N, ...) N #endif #endif //PP_NARG_MINUS1 @@ -6784,10 +6785,10 @@ FFF_END_EXTERN_C #define PP_ARG_MINUS2_N(...) EXPAND(_PP_ARG_MINUS2_N(__VA_ARGS__)) #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define PP_NARG_MINUS2(...) EXPAND(PP_ARG_MINUS2_N(_0, ##__VA_ARGS__, PP_RSEQ_N())) - #define _PP_ARG_MINUS2_N(__1, __0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, _65, _66, _67, _68, _69, _70, _71, _72, _73, _74, _75, _76, _77, _78, _79, _80, _81, _82, _83, _84, _85, _86, _87, _88, _89, _90, _91, _92, _93, _94, _95, _96, _97, _98, _99, _100, _101, _102, _103, _104, _105, _106, _107, _108, _109, _110, _111, _112, _113, _114, _115, _116, _117, _118, _119, _120, _121, _122, _123, _124, _125, _126, _127, _128, _129, _130, _131, _132, _133, _134, _135, _136, _137, _138, _139, _140, _141, _142, _143, _144, _145, _146, _147, _148, _149, _150, _151, _152, _153, _154, _155, _156, _157, _158, _159, _160, _161, _162, _163, _164, _165, _166, _167, _168, _169, _170, _171, _172, _173, _174, _175, _176, _177, _178, _179, _180, _181, _182, _183, _184, _185, _186, _187, _188, _189, _190, _191, _192, _193, _194, _195, _196, _197, _198, _199, _200, _201, _202, _203, _204, _205, _206, _207, _208, _209, _210, _211, _212, _213, _214, _215, _216, _217, _218, _219, _220, _221, _222, _223, _224, _225, _226, _227, _228, _229, _230, _231, _232, _233, _234, _235, _236, _237, _238, _239, _240, _241, _242, _243, _244, _245, _246, _247, _248, _249, _250, _251, _252, _253, _254, _255, _256, _257, N, ...) N + #define _PP_ARG_MINUS2_N(__1, __0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, N, ...) N #else #define PP_NARG_MINUS2(...) EXPAND(PP_ARG_MINUS2_N(__VA_ARGS__, PP_RSEQ_N())) - #define _PP_ARG_MINUS2_N(__1, __0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, _65, _66, _67, _68, _69, _70, _71, _72, _73, _74, _75, _76, _77, _78, _79, _80, _81, _82, _83, _84, _85, _86, _87, _88, _89, _90, _91, _92, _93, _94, _95, _96, _97, _98, _99, _100, _101, _102, _103, _104, _105, _106, _107, _108, _109, _110, _111, _112, _113, _114, _115, _116, _117, _118, _119, _120, _121, _122, _123, _124, _125, _126, _127, _128, _129, _130, _131, _132, _133, _134, _135, _136, _137, _138, _139, _140, _141, _142, _143, _144, _145, _146, _147, _148, _149, _150, _151, _152, _153, _154, _155, _156, _157, _158, _159, _160, _161, _162, _163, _164, _165, _166, _167, _168, _169, _170, _171, _172, _173, _174, _175, _176, _177, _178, _179, _180, _181, _182, _183, _184, _185, _186, _187, _188, _189, _190, _191, _192, _193, _194, _195, _196, _197, _198, _199, _200, _201, _202, _203, _204, _205, _206, _207, _208, _209, _210, _211, _212, _213, _214, _215, _216, _217, _218, _219, _220, _221, _222, _223, _224, _225, _226, _227, _228, _229, _230, _231, _232, _233, _234, _235, _236, _237, _238, _239, _240, _241, _242, _243, _244, _245, _246, _247, _248, _249, _250, _251, _252, _253, _254, _255, _256, N, ...) N + #define _PP_ARG_MINUS2_N(__1, __0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, N, ...) N #endif #endif //PP_NARG_MINUS2 @@ -6796,10 +6797,10 @@ FFF_END_EXTERN_C #define PP_ARG_MINUS3_N(...) EXPAND(_PP_ARG_MINUS3_N(__VA_ARGS__)) #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define PP_NARG_MINUS3(...) EXPAND(PP_ARG_MINUS3_N(_0, ##__VA_ARGS__, PP_RSEQ_N())) - #define _PP_ARG_MINUS3_N(__2, __1, __0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, _65, _66, _67, _68, _69, _70, _71, _72, _73, _74, _75, _76, _77, _78, _79, _80, _81, _82, _83, _84, _85, _86, _87, _88, _89, _90, _91, _92, _93, _94, _95, _96, _97, _98, _99, _100, _101, _102, _103, _104, _105, _106, _107, _108, _109, _110, _111, _112, _113, _114, _115, _116, _117, _118, _119, _120, _121, _122, _123, _124, _125, _126, _127, _128, _129, _130, _131, _132, _133, _134, _135, _136, _137, _138, _139, _140, _141, _142, _143, _144, _145, _146, _147, _148, _149, _150, _151, _152, _153, _154, _155, _156, _157, _158, _159, _160, _161, _162, _163, _164, _165, _166, _167, _168, _169, _170, _171, _172, _173, _174, _175, _176, _177, _178, _179, _180, _181, _182, _183, _184, _185, _186, _187, _188, _189, _190, _191, _192, _193, _194, _195, _196, _197, _198, _199, _200, _201, _202, _203, _204, _205, _206, _207, _208, _209, _210, _211, _212, _213, _214, _215, _216, _217, _218, _219, _220, _221, _222, _223, _224, _225, _226, _227, _228, _229, _230, _231, _232, _233, _234, _235, _236, _237, _238, _239, _240, _241, _242, _243, _244, _245, _246, _247, _248, _249, _250, _251, _252, _253, _254, _255, _256, _257, N, ...) N + #define _PP_ARG_MINUS3_N(__2, __1, __0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, N, ...) N #else #define PP_NARG_MINUS3(...) EXPAND(PP_ARG_MINUS3_N(__VA_ARGS__, PP_RSEQ_N())) - #define _PP_ARG_MINUS3_N(__2, __1, __0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, _65, _66, _67, _68, _69, _70, _71, _72, _73, _74, _75, _76, _77, _78, _79, _80, _81, _82, _83, _84, _85, _86, _87, _88, _89, _90, _91, _92, _93, _94, _95, _96, _97, _98, _99, _100, _101, _102, _103, _104, _105, _106, _107, _108, _109, _110, _111, _112, _113, _114, _115, _116, _117, _118, _119, _120, _121, _122, _123, _124, _125, _126, _127, _128, _129, _130, _131, _132, _133, _134, _135, _136, _137, _138, _139, _140, _141, _142, _143, _144, _145, _146, _147, _148, _149, _150, _151, _152, _153, _154, _155, _156, _157, _158, _159, _160, _161, _162, _163, _164, _165, _166, _167, _168, _169, _170, _171, _172, _173, _174, _175, _176, _177, _178, _179, _180, _181, _182, _183, _184, _185, _186, _187, _188, _189, _190, _191, _192, _193, _194, _195, _196, _197, _198, _199, _200, _201, _202, _203, _204, _205, _206, _207, _208, _209, _210, _211, _212, _213, _214, _215, _216, _217, _218, _219, _220, _221, _222, _223, _224, _225, _226, _227, _228, _229, _230, _231, _232, _233, _234, _235, _236, _237, _238, _239, _240, _241, _242, _243, _244, _245, _246, _247, _248, _249, _250, _251, _252, _253, _254, _255, _256, N, ...) N + #define _PP_ARG_MINUS3_N(__2, __1, __0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, N, ...) N #endif #endif //PP_NARG_MINUS3 diff --git a/pp_iterators.rb b/pp_iterators.rb index d58b5cd..d6c8f7c 100755 --- a/pp_iterators.rb +++ b/pp_iterators.rb @@ -46,7 +46,8 @@ def define_macro_set(guard_name, macros) end end - MAX_ARG_COUNT_DEFAULT = 256 + # MSVC enforces the standard minimum requirement of 127 VA_ARGS + MAX_ARG_COUNT_DEFAULT = 63 MAX_ARG_COUNT_DEFAULT_NON_RECURSIVE = 64 DEFER_LEVELS_DEFAULT = 6 From b4d2c75180c49c09cd3c85203a2f9d67446db2d0 Mon Sep 17 00:00:00 2001 From: Cormac Cannon Date: Thu, 18 Jul 2019 00:20:34 +0100 Subject: [PATCH 09/15] Exclude FFF_RETURN, FFF_ASSERT_ANY, FFF_ASSERT_NONE tests for MSVC (unless in C++ mode) --- test/fff_test_c.c | 17 +++++++++++------ test/test_cases_assertions.include | 5 +++++ 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/test/fff_test_c.c b/test/fff_test_c.c index 04e0380..71446e4 100644 --- a/test/fff_test_c.c +++ b/test/fff_test_c.c @@ -133,17 +133,26 @@ int main() can_capture_upto_20_arguments_correctly, value_func_can_capture_upto_20_arguments_correctly, +#if !defined(_MSC_VER) || defined(_MSVC_LANG) variadic_return_values_should_set_return_val_given_single_value, variadic_return_values_should_set_return_sequence_given_multiple_values, variadic_return_values, variadic_return_values_no_array_name_collisions_when_called_repeatedly, variadic_return_values_no_assertion_given_single_value, variadic_return_values_assertion_valid_given_value_sequence, +#endif #if defined(__GNUC__) && !defined(__STRICT_ANSI__) variadic_return_values_assertion_invalid_given_0_length_sequence, #endif +#ifdef __GNUC__ + assert_any_call_assertion_valid_given_any_match, + assert_any_call_assertion_invalid_given_no_match, + assert_no_call_assertion_invalid_given_any_match, + assert_no_call_assertion_valid_given_no_match, +#endif + assert_calls_assertion_valid_given_match, assert_calls_assertion_invalid_when_underestimated, assert_calls_assertion_invalid_when_overestimated, @@ -165,12 +174,8 @@ int main() assert_nth_call_assertion_invalid_given_arg_mismatch, assert_last_call_assertion_valid_given_multiple_calls, - assert_last_call_assertion_invalid_given_previous_call_args, - - assert_any_call_assertion_valid_given_any_match, - assert_any_call_assertion_invalid_given_no_match, - assert_no_call_assertion_invalid_given_any_match, - assert_no_call_assertion_valid_given_no_match) + assert_last_call_assertion_invalid_given_previous_call_args + ) printf("\n-------------\n"); printf("Complete\n"); diff --git a/test/test_cases_assertions.include b/test/test_cases_assertions.include index e8ba44d..3c01392 100644 --- a/test/test_cases_assertions.include +++ b/test/test_cases_assertions.include @@ -12,6 +12,8 @@ enum AssertionResult { #define RESET_FAKE_ASSERTIONS() valid_assertions_ = invalid_assertions_ = 0 +//FFF_RETURN requires typeof (GCC) or decltype (MSVC, but only available in C++ mode) +#if !defined(_MSC_VER) || defined(_MSVC_LANG) TEST_F(FFFTestSuite, variadic_return_values_should_set_return_val_given_single_value) { FFF_RETURN(longfunc0, 3); @@ -63,6 +65,7 @@ TEST_F(FFFTestSuite, variadic_return_values_assertion_valid_given_value_sequence ASSERT_FAKE_ASSERTION_WAS(VALID); } +#endif #if defined(__GNUC__) && !defined(__STRICT_ANSI__) @@ -295,6 +298,7 @@ TEST_F(FFFTestSuite, assert_last_call_assertion_invalid_given_previous_call_args ASSERT_FAKE_ASSERTION_WAS(INVALID); } +#ifdef __GNUC__ TEST_F(FFFTestSuite, assert_any_call_assertion_valid_given_any_match) { //Given @@ -352,3 +356,4 @@ TEST_F(FFFTestSuite, assert_no_call_assertion_valid_given_no_match) //Then ASSERT_FAKE_ASSERTION_WAS(VALID); } +#endif From 2588f904bc166e82acd8457782bfb28509d1d6db Mon Sep 17 00:00:00 2001 From: Cormac Cannon Date: Thu, 18 Jul 2019 00:43:17 +0100 Subject: [PATCH 10/15] README now indicates FFF_ASSERT_ANY, FFF_ASSERT_NONE and variadic FFF_RETURN are GCC only --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 43bb62d..5d35485 100644 --- a/README.md +++ b/README.md @@ -219,7 +219,7 @@ you would use a syntax like this: FAKE_VALUE_FUNC(double, pow, double, double); ``` -*N.B.* When using the variadic form (i.e. `FFF_RETURN(FN, ...)`), the hidden value sequence array +*N.B.* When using the (GCC only) variadic form (i.e. `FFF_RETURN(FN, ...)`), the hidden value sequence array is declared locally by default. If you want to set a return sequence in a function other than the test body (e.g. in a fixture setup method or helper function used in multiple tests), you'll need to prefix the macro invocation with the `static` keyword. e.g. @@ -753,13 +753,13 @@ So whats the point? | FAKE_VOID_FUNC_VARARG(fn [,arg_types*], ...); | Define a fake variadic function returning void with type return_type taking n arguments and n variadic arguments | FAKE_VOID_FUNC_VARARG(fn, const char*, ...) | | FAKE_VALUE_FUNC_VARARG(return_type, fn [,arg_types*], ...); | Define a fake variadic function returning a value with type return_type taking n arguments and n variadic arguments | FAKE_VALUE_FUNC_VARARG(int, fprintf, FILE*, const char*, ...) | | RESET_FAKE(fn); | Reset the state of fake function called fn | RESET_FAKE(DISPLAY_init); | -| FFF_RETURN(fn, ...return_value(s)*); | Set one or more return values (final value repeated if calls > values) | FFF_RETURN(DISPLAY_init, 1, 2, 3); | +| FFF_RETURN(fn, ...return_value(s)*); | Set one or (GCC only) more return values (final value repeated if calls > values) | FFF_RETURN(DISPLAY_init, 1, 2, 3); | | FFF_ASSERT_CALLED(fn); | Assert that a function was called once and only once. | FFF_ASSERT_CALLED(DISPLAY_init); | | FFF_ASSERT_NOT_CALLED(fn); | Assert that a function was not called. | FFF_ASSERT_NOT_CALLED(DISPLAY_init); | | FFF_ASSERT_CALLS(fn, call_count); | Assert that a function was called the specified number of times. | FFF_ASSERT_CALLS(DISPLAY_init, 3); | | FFF_ASSERT(fn, ...arg_value(s)) | Assert that a function was called only once with the specified argument values. | FFF_ASSERT(DISPLAY_output_message, my_message_ptr); | | FFF_ASSERT_LAST(fn, ...arg_value(s)) | Assert that the last call to a function had the specified argument values. | FFF_ASSERT_LAST(DISPLAY_output_message, my_message_ptr); | -| FFF_ASSERT_ANY(fn, ...arg_value(s)) | Assert that any call to a function had the specified argument values. | FFF_ASSERT_ANY(DISPLAY_output_message, my_message_ptr); | -| FFF_ASSERT_NONE(fn, ...arg_value(s)) | Assert that no calls to a function had the specified argument values. | FFF_ASSERT_NONE(DISPLAY_output_message, my_message_ptr); | +| FFF_ASSERT_ANY(fn, ...arg_value(s)) | (GCC only) Assert that any call to a function had the specified argument values. | FFF_ASSERT_ANY(DISPLAY_output_message, my_message_ptr); | +| FFF_ASSERT_NONE(fn, ...arg_value(s)) | (GCC only) Assert that no calls to a function had the specified argument values. | FFF_ASSERT_NONE(DISPLAY_output_message, my_message_ptr); | *N.B.* All of the function argument assertions support partial specification of arguments. I.e. Given a function taking 3 args, you may just specify the first argument for verification. Any arguments that are specified must be specified from left to right however. i.e. it is possibly to specify arguments 0 and 1, but not arguments 0 and 2 (ignoring the value of 1). From 78a8db6d6d0a92cc2cb6d64c2f24b3b2f024b04a Mon Sep 17 00:00:00 2001 From: Cormac Cannon Date: Thu, 18 Jul 2019 01:20:24 +0100 Subject: [PATCH 11/15] Including new tests in all suites (c/cpp/global) --- test/fff_test_c.c | 10 +- test/fff_test_cpp.cpp | 4 + test/fff_test_global_c.c | 138 ++++++++++++++++------- test/fff_test_global_cpp.cpp | 7 +- test/test_cases_assertions.include | 16 +-- test/test_cases_assertions_setup.include | 13 +++ 6 files changed, 123 insertions(+), 65 deletions(-) create mode 100644 test/test_cases_assertions_setup.include diff --git a/test/fff_test_c.c b/test/fff_test_c.c index 71446e4..0ef6c26 100644 --- a/test/fff_test_c.c +++ b/test/fff_test_c.c @@ -51,8 +51,7 @@ FAKE_VOID_FUNC(__cdecl, voidfunc20, int, int, int, int, int, int, int, int, int, FAKE_VALUE_FUNC(int, __cdecl, valuefunc20, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int); #endif -#include "test_cases.include" -#include "test_cases_assertions.include" +#include "test_cases_assertions_setup.include" void setup() { @@ -69,7 +68,8 @@ void setup() RESET_FAKE_ASSERTIONS(); } - +#include "test_cases.include" +#include "test_cases_assertions.include" TEST_F(FFFTestSuite, default_constants_can_be_overridden) { @@ -88,8 +88,8 @@ int main() fflush(0); /* Run tests */ - RUN_TESTS( - FFFTestSuite, when_void_func_never_called_then_callcount_is_zero, + RUN_TESTS(FFFTestSuite, + when_void_func_never_called_then_callcount_is_zero, when_void_func_called_once_then_callcount_is_one, when_void_func_called_once_and_reset_then_callcount_is_zero, when_void_func_with_1_integer_arg_called_then_last_arg_captured, diff --git a/test/fff_test_cpp.cpp b/test/fff_test_cpp.cpp index f349177..cda41c1 100644 --- a/test/fff_test_cpp.cpp +++ b/test/fff_test_cpp.cpp @@ -37,6 +37,8 @@ FAKE_VOID_FUNC(__cdecl, voidfunc20, int, int, int, int, int, int, int, int, int, FAKE_VALUE_FUNC(int, __cdecl, valuefunc20, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int); #endif +#include "test_cases_assertions_setup.include" + class FFFTestSuite: public testing::Test { public: @@ -49,6 +51,7 @@ class FFFTestSuite: public testing::Test RESET_FAKE(voidfunc3var); RESET_FAKE(valuefunc3var); FFF_RESET_HISTORY(); + RESET_FAKE_ASSERTIONS(); } }; @@ -99,3 +102,4 @@ TEST_F(FFFTestSuite, cxx_can_register_custom_fake) } #include "test_cases.include" +#include "test_cases_assertions.include" diff --git a/test/fff_test_global_c.c b/test/fff_test_global_c.c index c74ea6a..0bb9d72 100644 --- a/test/fff_test_global_c.c +++ b/test/fff_test_global_c.c @@ -1,4 +1,3 @@ - #include "global_fakes.h" #include "c_test_framework.h" @@ -6,6 +5,14 @@ DEFINE_FFF_GLOBALS; +// Could move this into c_test_framework.h, but it uses the PP iteration macros from fff.h.... +#define RUN_INDEXED_TEST(SUITE, TEST_COUNT, TESTNAME, IDX) do { printf(" Running (%d/%d) %s.%s: \n", IDX+1, TEST_COUNT, #SUITE, #TESTNAME); setup(); TESTNAME(); printf(" SUCCESS\n"); } while (0); \ + + +#define RUN_TESTS(SUITE, ...) PP_2PAR_EACH_IDX(RUN_INDEXED_TEST, SUITE, PP_NARG(__VA_ARGS__), __VA_ARGS__) + +#include "test_cases_assertions_setup.include" + void setup() { RESET_FAKE(voidfunc1); @@ -19,10 +26,12 @@ void setup() RESET_FAKE(strlcpy3); FFF_RESET_HISTORY(); + RESET_FAKE_ASSERTIONS(); } #include "test_cases.include" +#include "test_cases_assertions.include" int main() @@ -34,47 +43,92 @@ int main() fflush(0); /* Run tests */ - RUN_TEST(FFFTestSuite, when_void_func_never_called_then_callcount_is_zero); - RUN_TEST(FFFTestSuite, when_void_func_called_once_then_callcount_is_one); - RUN_TEST(FFFTestSuite, when_void_func_called_once_and_reset_then_callcount_is_zero); - RUN_TEST(FFFTestSuite, when_void_func_with_1_integer_arg_called_then_last_arg_captured); - RUN_TEST(FFFTestSuite, when_void_func_with_1_integer_arg_called_twice_then_last_arg_captured); - RUN_TEST(FFFTestSuite, when_void_func_with_1_integer_arg_called_and_reset_then_captured_arg_is_zero); - RUN_TEST(FFFTestSuite, when_void_func_with_2_char_args_called_then_last_args_captured); - RUN_TEST(FFFTestSuite, when_void_func_with_2_char_args_called_twice_then_last_args_captured); - RUN_TEST(FFFTestSuite, when_void_func_with_2_char_args_called_and_reset_then_captured_arg_is_zero); - RUN_TEST(FFFTestSuite, when_fake_func_called_then_const_arguments_captured); - - RUN_TEST(FFFTestSuite, when_fake_func_created_default_history_is_fifty_calls); - RUN_TEST(FFFTestSuite, when_fake_func_called_then_arguments_captured_in_history); - RUN_TEST(FFFTestSuite, argument_history_is_reset_when_RESET_FAKE_called); - RUN_TEST(FFFTestSuite, when_fake_func_called_max_times_then_no_argument_histories_dropped); - RUN_TEST(FFFTestSuite, when_fake_func_called_max_times_plus_one_then_one_argument_history_dropped); - - RUN_TEST(FFFTestSuite, value_func_will_return_zero_by_default); - RUN_TEST(FFFTestSuite, value_func_will_return_value_given); - RUN_TEST(FFFTestSuite, value_func_will_return_zero_after_reset); - RUN_TEST(FFFTestSuite, register_call_macro_registers_one_call); - RUN_TEST(FFFTestSuite, register_call_macro_registers_two_calls); - RUN_TEST(FFFTestSuite, reset_call_history_resets_call_history); - RUN_TEST(FFFTestSuite, call_history_will_not_write_past_array_bounds); - RUN_TEST(FFFTestSuite, calling_fake_registers_one_call); - - RUN_TEST(FFFTestSuite, return_value_sequences_not_exhausted); - RUN_TEST(FFFTestSuite, return_value_sequences_exhausted); - - RUN_TEST(FFFTestSuite, can_register_custom_fake); - RUN_TEST(FFFTestSuite, when_value_custom_fake_called_THEN_it_returns_custom_return_value); - - RUN_TEST(FFFTestSuite, use_void_vararg_fake_with_different_number_of_arguments); - RUN_TEST(FFFTestSuite, use_value_vararg_fake_with_different_number_of_arguments); - RUN_TEST(FFFTestSuite, vararg_custom_fake_sequence_not_exhausted); - RUN_TEST(FFFTestSuite, vararg_custom_fake_seq_return_values_saved_in_history); - RUN_TEST(FFFTestSuite, vararg_custom_fake_sequence_exhausted); - RUN_TEST(FFFTestSuite, vararg_custom_fake_sequence_reset); - - RUN_TEST(FFFTestSuite, can_capture_upto_20_arguments_correctly); - RUN_TEST(FFFTestSuite, value_func_can_capture_upto_20_arguments_correctly); + RUN_TESTS(FFFTestSuite, + when_void_func_never_called_then_callcount_is_zero, + when_void_func_called_once_then_callcount_is_one, + when_void_func_called_once_and_reset_then_callcount_is_zero, + when_void_func_with_1_integer_arg_called_then_last_arg_captured, + when_void_func_with_1_integer_arg_called_twice_then_last_arg_captured, + when_void_func_with_1_integer_arg_called_and_reset_then_captured_arg_is_zero, + when_void_func_with_2_char_args_called_then_last_args_captured, + when_void_func_with_2_char_args_called_twice_then_last_args_captured, + when_void_func_with_2_char_args_called_and_reset_then_captured_arg_is_zero, + when_fake_func_called_then_const_arguments_captured, + + when_fake_func_created_default_history_is_fifty_calls, + when_fake_func_called_then_arguments_captured_in_history, + argument_history_is_reset_when_RESET_FAKE_called, + when_fake_func_called_max_times_then_no_argument_histories_dropped, + when_fake_func_called_max_times_plus_one_then_one_argument_history_dropped, + + value_func_will_return_zero_by_default, + value_func_will_return_value_given, + value_func_will_return_zero_after_reset, + + register_call_macro_registers_one_call, + register_call_macro_registers_two_calls, + reset_call_history_resets_call_history, + call_history_will_not_write_past_array_bounds, + calling_fake_registers_one_call, + + return_value_sequences_not_exhausted, return_value_sequences_exhausted, + + can_register_custom_fake, + when_value_custom_fake_called_THEN_it_returns_custom_return_value, + + use_void_vararg_fake_with_different_number_of_arguments, + use_value_vararg_fake_with_different_number_of_arguments, + vararg_custom_fake_sequence_not_exhausted, + vararg_custom_fake_seq_return_values_saved_in_history, + vararg_custom_fake_sequence_exhausted, + vararg_custom_fake_sequence_reset, + + can_capture_upto_20_arguments_correctly, + value_func_can_capture_upto_20_arguments_correctly, + +#if !defined(_MSC_VER) || defined(_MSVC_LANG) + variadic_return_values_should_set_return_val_given_single_value, + variadic_return_values_should_set_return_sequence_given_multiple_values, + variadic_return_values, + variadic_return_values_no_array_name_collisions_when_called_repeatedly, + variadic_return_values_no_assertion_given_single_value, + variadic_return_values_assertion_valid_given_value_sequence, +#endif + +#if defined(__GNUC__) && !defined(__STRICT_ANSI__) + variadic_return_values_assertion_invalid_given_0_length_sequence, +#endif + +#ifdef __GNUC__ + assert_any_call_assertion_valid_given_any_match, + assert_any_call_assertion_invalid_given_no_match, + assert_no_call_assertion_invalid_given_any_match, + assert_no_call_assertion_valid_given_no_match, +#endif + + assert_calls_assertion_valid_given_match, + assert_calls_assertion_invalid_when_underestimated, + assert_calls_assertion_invalid_when_overestimated, + + assert_called_assertion_valid_when_called_once, + assert_called_assertion_invalid_when_not_called, + assert_called_assertion_invalid_when_called_more_than_once, + + assert_not_called_assertion_valid_when_not_called, + assert_not_called_assertion_invalid_when_called_once, + assert_not_called_assertion_invalid_when_called_more_than_once, + + assert_call_assertion_valid_when_all_args_specified_and_matched, + assert_call_assertion_valid_when_some_args_specified_and_matched, + assert_call_assertion_invalid_when_called_more_than_once, + assert_call_assertion_invalid_given_arg_mismatch, + + assert_nth_call_assertion_valid_given_matching_args, + assert_nth_call_assertion_invalid_given_arg_mismatch, + + assert_last_call_assertion_valid_given_multiple_calls, + assert_last_call_assertion_invalid_given_previous_call_args + ) printf("\n-------------\n"); printf("Complete\n"); diff --git a/test/fff_test_global_cpp.cpp b/test/fff_test_global_cpp.cpp index f2cf79e..4ed8390 100644 --- a/test/fff_test_global_cpp.cpp +++ b/test/fff_test_global_cpp.cpp @@ -1,4 +1,3 @@ - extern "C"{ #include "global_fakes.h" } @@ -6,6 +5,8 @@ extern "C"{ DEFINE_FFF_GLOBALS; +#include "test_cases_assertions_setup.include" + class FFFTestSuite: public testing::Test { public: @@ -18,9 +19,9 @@ class FFFTestSuite: public testing::Test RESET_FAKE(voidfunc3var); RESET_FAKE(valuefunc3var); FFF_RESET_HISTORY(); + RESET_FAKE_ASSERTIONS(); } }; #include "test_cases.include" - - +#include "test_cases_assertions.include" diff --git a/test/test_cases_assertions.include b/test/test_cases_assertions.include index 3c01392..e1ac125 100644 --- a/test/test_cases_assertions.include +++ b/test/test_cases_assertions.include @@ -1,19 +1,5 @@ -static int valid_assertions_, invalid_assertions_; -#define _FFF_ASSERT_EQ_MSG(EXP, ACT, MSG) if ((EXP)==(ACT)) { valid_assertions_++; } else { invalid_assertions_++; } - -enum AssertionResult { - INVALID, - VALID -}; - -#define ASSERT_FAKE_ASSERTION_WAS(RSLT) \ - if((RSLT)==VALID) ASSERT_EQ(1, valid_assertions_>0); \ - ASSERT_EQ((!(RSLT)), invalid_assertions_>0) - -#define RESET_FAKE_ASSERTIONS() valid_assertions_ = invalid_assertions_ = 0 - //FFF_RETURN requires typeof (GCC) or decltype (MSVC, but only available in C++ mode) -#if !defined(_MSC_VER) || defined(_MSVC_LANG) +#if !defined(_MSC_VER) TEST_F(FFFTestSuite, variadic_return_values_should_set_return_val_given_single_value) { FFF_RETURN(longfunc0, 3); diff --git a/test/test_cases_assertions_setup.include b/test/test_cases_assertions_setup.include new file mode 100644 index 0000000..3e86fd0 --- /dev/null +++ b/test/test_cases_assertions_setup.include @@ -0,0 +1,13 @@ +static int valid_assertions_, invalid_assertions_; +#define _FFF_ASSERT_EQ_MSG(EXP, ACT, MSG) if ((EXP)==(ACT)) { valid_assertions_++; } else { invalid_assertions_++; } + +enum AssertionResult { + INVALID, + VALID +}; + +#define ASSERT_FAKE_ASSERTION_WAS(RSLT) \ + if((RSLT)==VALID) ASSERT_EQ(1, valid_assertions_>0); \ + ASSERT_EQ((!(RSLT)), invalid_assertions_>0) + +#define RESET_FAKE_ASSERTIONS() valid_assertions_ = invalid_assertions_ = 0 From c93934b30f8f0c78cfd0f51226663a8422e382a5 Mon Sep 17 00:00:00 2001 From: Cormac Cannon Date: Thu, 18 Jul 2019 02:02:03 +0100 Subject: [PATCH 12/15] Replaced VALID/INVALID with true/false to squash msvc warning --- fakegen.rb | 6 +++--- fff.h | 6 +++--- test/test_cases_assertions_setup.include | 11 +++++------ 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/fakegen.rb b/fakegen.rb index 92acac6..4de96f8 100644 --- a/fakegen.rb +++ b/fakegen.rb @@ -697,7 +697,7 @@ def output_assertions PP_1PAR_EACH_IDX(_FFF_ASSERT_ARG, FN, __VA_ARGS__) #define FFF_ASSERT_NTH(FN, CALL_IDX, ...) \ - _FFF_ASSERT_TRUE_MSG(CALL_IDX > 0, "Invalid call index -- expected >0, got " #CALL_IDX); \ + _FFF_ASSERT_TRUE_MSG(CALL_IDX>0, "Invalid call index -- expected >0, got " #CALL_IDX); \ _FFF_ASSERT_TRUE_MSG(FFF_CALLS(FN) >= CALL_IDX, #FN " not called " #CALL_IDX " times"); \ PP_2PAR_EACH_IDX(_FFF_ASSERT_HISTORICAL_ARG, FN, CALL_IDX, __VA_ARGS__) @@ -722,8 +722,8 @@ def output_assertions #define _FFF_ASSERT_EQ(expected, actual) _FFF_ASSERT_EQ_MSG(expected, actual, "Expected " #expected " / Got " #actual) #endif -#define _FFF_ASSERT_TRUE_MSG(COND, MSG) _FFF_ASSERT_EQ_MSG(((COND)>0), 1, MSG) -#define _FFF_ASSERT_FALSE_MSG(COND, MSG) _FFF_ASSERT_EQ_MSG((COND), 0, MSG) +#define _FFF_ASSERT_TRUE_MSG(COND, MSG) _FFF_ASSERT_EQ_MSG((COND), true, MSG) +#define _FFF_ASSERT_FALSE_MSG(COND, MSG) _FFF_ASSERT_EQ_MSG((COND), false, MSG) #define _FFF_ASSERT_ARG(FN, VAL, ARG_IDX) _FFF_ASSERT_EQ_MSG(VAL, FFF_LAST_ARG_VAL(FN, ARG_IDX), #FN" parameter value mismatch at ARG"#ARG_IDX); diff --git a/fff.h b/fff.h index 3c08e6b..d9ea4ae 100644 --- a/fff.h +++ b/fff.h @@ -6935,7 +6935,7 @@ FFF_END_EXTERN_C PP_1PAR_EACH_IDX(_FFF_ASSERT_ARG, FN, __VA_ARGS__) #define FFF_ASSERT_NTH(FN, CALL_IDX, ...) \ - _FFF_ASSERT_TRUE_MSG(CALL_IDX > 0, "Invalid call index -- expected >0, got " #CALL_IDX); \ + _FFF_ASSERT_TRUE_MSG(CALL_IDX>0, "Invalid call index -- expected >0, got " #CALL_IDX); \ _FFF_ASSERT_TRUE_MSG(FFF_CALLS(FN) >= CALL_IDX, #FN " not called " #CALL_IDX " times"); \ PP_2PAR_EACH_IDX(_FFF_ASSERT_HISTORICAL_ARG, FN, CALL_IDX, __VA_ARGS__) @@ -6960,8 +6960,8 @@ FFF_END_EXTERN_C #define _FFF_ASSERT_EQ(expected, actual) _FFF_ASSERT_EQ_MSG(expected, actual, "Expected " #expected " / Got " #actual) #endif -#define _FFF_ASSERT_TRUE_MSG(COND, MSG) _FFF_ASSERT_EQ_MSG(((COND)>0), 1, MSG) -#define _FFF_ASSERT_FALSE_MSG(COND, MSG) _FFF_ASSERT_EQ_MSG((COND), 0, MSG) +#define _FFF_ASSERT_TRUE_MSG(COND, MSG) _FFF_ASSERT_EQ_MSG((COND), true, MSG) +#define _FFF_ASSERT_FALSE_MSG(COND, MSG) _FFF_ASSERT_EQ_MSG((COND), false, MSG) #define _FFF_ASSERT_ARG(FN, VAL, ARG_IDX) _FFF_ASSERT_EQ_MSG(VAL, FFF_LAST_ARG_VAL(FN, ARG_IDX), #FN" parameter value mismatch at ARG"#ARG_IDX); diff --git a/test/test_cases_assertions_setup.include b/test/test_cases_assertions_setup.include index 3e86fd0..fa8fa76 100644 --- a/test/test_cases_assertions_setup.include +++ b/test/test_cases_assertions_setup.include @@ -1,13 +1,12 @@ static int valid_assertions_, invalid_assertions_; -#define _FFF_ASSERT_EQ_MSG(EXP, ACT, MSG) if ((EXP)==(ACT)) { valid_assertions_++; } else { invalid_assertions_++; } +#define _FFF_ASSERT_EQ_MSG(EXP, ACT, MSG) do {if ((EXP)==(ACT)) { valid_assertions_++; } else { invalid_assertions_++; }} while(0); -enum AssertionResult { - INVALID, - VALID -}; +#include +#define INVALID false +#define VALID true #define ASSERT_FAKE_ASSERTION_WAS(RSLT) \ - if((RSLT)==VALID) ASSERT_EQ(1, valid_assertions_>0); \ + if((RSLT)==VALID) ASSERT_EQ(true, valid_assertions_>0); \ ASSERT_EQ((!(RSLT)), invalid_assertions_>0) #define RESET_FAKE_ASSERTIONS() valid_assertions_ = invalid_assertions_ = 0 From d2799950132668c030adc1b85999a9851e26a7d9 Mon Sep 17 00:00:00 2001 From: Cormac Cannon Date: Thu, 18 Jul 2019 10:22:39 +0100 Subject: [PATCH 13/15] Diagnosing MSVC parameterised macro iteration issues --- fakegen.rb | 2 +- fff.h | 338 ++++++++++++++++++++++++++++++++++++++-------- pp_iterators.rb | 6 +- test/fff_test_c.c | 6 +- 4 files changed, 294 insertions(+), 58 deletions(-) diff --git a/fakegen.rb b/fakegen.rb index 4de96f8..e1b60b7 100644 --- a/fakegen.rb +++ b/fakegen.rb @@ -637,7 +637,7 @@ def counting_macro_instance(type, has_calling_conventions, vararg = :non_vararg, def output_macro_counting_shortcuts(has_calling_conventions) - ppiter = PPIterators.new() + ppiter = PPIterators.new(recursive: false) putd <<-MACRO_COUNTING #{ppiter.embed_macros} diff --git a/fff.h b/fff.h index d9ea4ae..78f6a33 100644 --- a/fff.h +++ b/fff.h @@ -6667,7 +6667,7 @@ FFF_END_EXTERN_C #define IS_EMPTY(...)_ISEMPTY( /* test if there is just one argument, eventually an empty one */ HAS_COMMA(__VA_ARGS__), /* test if _TRIGGER_PARENTHESIS_ together with the argument adds a comma */ HAS_COMMA(_TRIGGER_PARENTHESIS_ __VA_ARGS__), /* test if the argument together with a parenthesis adds a comma */ HAS_COMMA(__VA_ARGS__ (/*empty*/)), /* test if placing it between _TRIGGER_PARENTHESIS_ and the parenthesis adds a comma */ HAS_COMMA(_TRIGGER_PARENTHESIS_ __VA_ARGS__ (/*empty*/)) ) #define _ISEMPTY(_0, _1, _2, _3) HAS_COMMA(PASTE5(_IS_EMPTY_CASE_, _0, _1, _2, _3)) - #define HAS_COMMA(...) PP_ARG_N(__VA_ARGS__, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0) + #define HAS_COMMA(...) PP_ARG_N(__VA_ARGS__, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0) #define _TRIGGER_PARENTHESIS_(...) , #define PASTE5(_0, _1, _2, _3, _4) _0 ## _1 ## _2 ## _3 ## _4 #define _IS_EMPTY_CASE_0001 , @@ -6698,66 +6698,239 @@ FFF_END_EXTERN_C #ifndef PP_UTIL #define PP_UTIL #define EXPAND(x) x - #define PP_SEQ_N() 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63 - #define PP_RSEQ_N() 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 + #define PP_SEQ_N() 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64 + #define PP_RSEQ_N() 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 #endif //PP_UTIL #ifndef PP_NARG #define PP_ARG_N(...) EXPAND(_PP_ARG_N(__VA_ARGS__)) #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define PP_NARG(...) EXPAND(PP_ARG_N(_0, ##__VA_ARGS__, PP_RSEQ_N())) - #define _PP_ARG_N(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, N, ...) N + #define _PP_ARG_N(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, _65, N, ...) N #else #define PP_NARG(...) EXPAND(PP_ARG_N(__VA_ARGS__, PP_RSEQ_N())) - #define _PP_ARG_N(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, N, ...) N + #define _PP_ARG_N(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, N, ...) N #endif #endif //PP_NARG //PP_EACH #ifndef PP_EACH - #define PP_EACH(TF, ...) \ - EVAL(_PP_EACH_DEFER(TF, __VA_ARGS__)) - - #define _PP_EACH_DEFER(TF, ...) \ - IF ( NOT_EMPTY( __VA_ARGS__ ) ) \ - ( \ - DEFER(TF) (OPT_DEPAREN(HEAD(__VA_ARGS__))) \ - DEFER2 ( __PP_EACH_DEFER ) () (TF, TAIL(__VA_ARGS__)) \ - ) - - //This indirection along with the DEFER2 and EVAL macros allows the recursive implementation of _PP_EACH_DEFER - #define __PP_EACH_DEFER() _PP_EACH_DEFER + #define PP_EACH(TF, ...) _PP_EACH(TF, PP_NARG(__VA_ARGS__), __VA_ARGS__) + #define _PP_EACH(TF, N, ...) __PP_EACH(TF, N, __VA_ARGS__) + #define __PP_EACH(TF, N, ...) EXPAND(_PP_EACH_##N(TF, __VA_ARGS__)) + #define _PP_EACH_0(TF, ...) + #define _PP_EACH_1(TF, next_arg) TF(next_arg) + #define _PP_EACH_2(TF, next_arg, ...) TF(next_arg) _PP_EACH_1(TF, __VA_ARGS__) + #define _PP_EACH_3(TF, next_arg, ...) TF(next_arg) _PP_EACH_2(TF, __VA_ARGS__) + #define _PP_EACH_4(TF, next_arg, ...) TF(next_arg) _PP_EACH_3(TF, __VA_ARGS__) + #define _PP_EACH_5(TF, next_arg, ...) TF(next_arg) _PP_EACH_4(TF, __VA_ARGS__) + #define _PP_EACH_6(TF, next_arg, ...) TF(next_arg) _PP_EACH_5(TF, __VA_ARGS__) + #define _PP_EACH_7(TF, next_arg, ...) TF(next_arg) _PP_EACH_6(TF, __VA_ARGS__) + #define _PP_EACH_8(TF, next_arg, ...) TF(next_arg) _PP_EACH_7(TF, __VA_ARGS__) + #define _PP_EACH_9(TF, next_arg, ...) TF(next_arg) _PP_EACH_8(TF, __VA_ARGS__) + #define _PP_EACH_10(TF, next_arg, ...) TF(next_arg) _PP_EACH_9(TF, __VA_ARGS__) + #define _PP_EACH_11(TF, next_arg, ...) TF(next_arg) _PP_EACH_10(TF, __VA_ARGS__) + #define _PP_EACH_12(TF, next_arg, ...) TF(next_arg) _PP_EACH_11(TF, __VA_ARGS__) + #define _PP_EACH_13(TF, next_arg, ...) TF(next_arg) _PP_EACH_12(TF, __VA_ARGS__) + #define _PP_EACH_14(TF, next_arg, ...) TF(next_arg) _PP_EACH_13(TF, __VA_ARGS__) + #define _PP_EACH_15(TF, next_arg, ...) TF(next_arg) _PP_EACH_14(TF, __VA_ARGS__) + #define _PP_EACH_16(TF, next_arg, ...) TF(next_arg) _PP_EACH_15(TF, __VA_ARGS__) + #define _PP_EACH_17(TF, next_arg, ...) TF(next_arg) _PP_EACH_16(TF, __VA_ARGS__) + #define _PP_EACH_18(TF, next_arg, ...) TF(next_arg) _PP_EACH_17(TF, __VA_ARGS__) + #define _PP_EACH_19(TF, next_arg, ...) TF(next_arg) _PP_EACH_18(TF, __VA_ARGS__) + #define _PP_EACH_20(TF, next_arg, ...) TF(next_arg) _PP_EACH_19(TF, __VA_ARGS__) + #define _PP_EACH_21(TF, next_arg, ...) TF(next_arg) _PP_EACH_20(TF, __VA_ARGS__) + #define _PP_EACH_22(TF, next_arg, ...) TF(next_arg) _PP_EACH_21(TF, __VA_ARGS__) + #define _PP_EACH_23(TF, next_arg, ...) TF(next_arg) _PP_EACH_22(TF, __VA_ARGS__) + #define _PP_EACH_24(TF, next_arg, ...) TF(next_arg) _PP_EACH_23(TF, __VA_ARGS__) + #define _PP_EACH_25(TF, next_arg, ...) TF(next_arg) _PP_EACH_24(TF, __VA_ARGS__) + #define _PP_EACH_26(TF, next_arg, ...) TF(next_arg) _PP_EACH_25(TF, __VA_ARGS__) + #define _PP_EACH_27(TF, next_arg, ...) TF(next_arg) _PP_EACH_26(TF, __VA_ARGS__) + #define _PP_EACH_28(TF, next_arg, ...) TF(next_arg) _PP_EACH_27(TF, __VA_ARGS__) + #define _PP_EACH_29(TF, next_arg, ...) TF(next_arg) _PP_EACH_28(TF, __VA_ARGS__) + #define _PP_EACH_30(TF, next_arg, ...) TF(next_arg) _PP_EACH_29(TF, __VA_ARGS__) + #define _PP_EACH_31(TF, next_arg, ...) TF(next_arg) _PP_EACH_30(TF, __VA_ARGS__) + #define _PP_EACH_32(TF, next_arg, ...) TF(next_arg) _PP_EACH_31(TF, __VA_ARGS__) + #define _PP_EACH_33(TF, next_arg, ...) TF(next_arg) _PP_EACH_32(TF, __VA_ARGS__) + #define _PP_EACH_34(TF, next_arg, ...) TF(next_arg) _PP_EACH_33(TF, __VA_ARGS__) + #define _PP_EACH_35(TF, next_arg, ...) TF(next_arg) _PP_EACH_34(TF, __VA_ARGS__) + #define _PP_EACH_36(TF, next_arg, ...) TF(next_arg) _PP_EACH_35(TF, __VA_ARGS__) + #define _PP_EACH_37(TF, next_arg, ...) TF(next_arg) _PP_EACH_36(TF, __VA_ARGS__) + #define _PP_EACH_38(TF, next_arg, ...) TF(next_arg) _PP_EACH_37(TF, __VA_ARGS__) + #define _PP_EACH_39(TF, next_arg, ...) TF(next_arg) _PP_EACH_38(TF, __VA_ARGS__) + #define _PP_EACH_40(TF, next_arg, ...) TF(next_arg) _PP_EACH_39(TF, __VA_ARGS__) + #define _PP_EACH_41(TF, next_arg, ...) TF(next_arg) _PP_EACH_40(TF, __VA_ARGS__) + #define _PP_EACH_42(TF, next_arg, ...) TF(next_arg) _PP_EACH_41(TF, __VA_ARGS__) + #define _PP_EACH_43(TF, next_arg, ...) TF(next_arg) _PP_EACH_42(TF, __VA_ARGS__) + #define _PP_EACH_44(TF, next_arg, ...) TF(next_arg) _PP_EACH_43(TF, __VA_ARGS__) + #define _PP_EACH_45(TF, next_arg, ...) TF(next_arg) _PP_EACH_44(TF, __VA_ARGS__) + #define _PP_EACH_46(TF, next_arg, ...) TF(next_arg) _PP_EACH_45(TF, __VA_ARGS__) + #define _PP_EACH_47(TF, next_arg, ...) TF(next_arg) _PP_EACH_46(TF, __VA_ARGS__) + #define _PP_EACH_48(TF, next_arg, ...) TF(next_arg) _PP_EACH_47(TF, __VA_ARGS__) + #define _PP_EACH_49(TF, next_arg, ...) TF(next_arg) _PP_EACH_48(TF, __VA_ARGS__) + #define _PP_EACH_50(TF, next_arg, ...) TF(next_arg) _PP_EACH_49(TF, __VA_ARGS__) + #define _PP_EACH_51(TF, next_arg, ...) TF(next_arg) _PP_EACH_50(TF, __VA_ARGS__) + #define _PP_EACH_52(TF, next_arg, ...) TF(next_arg) _PP_EACH_51(TF, __VA_ARGS__) + #define _PP_EACH_53(TF, next_arg, ...) TF(next_arg) _PP_EACH_52(TF, __VA_ARGS__) + #define _PP_EACH_54(TF, next_arg, ...) TF(next_arg) _PP_EACH_53(TF, __VA_ARGS__) + #define _PP_EACH_55(TF, next_arg, ...) TF(next_arg) _PP_EACH_54(TF, __VA_ARGS__) + #define _PP_EACH_56(TF, next_arg, ...) TF(next_arg) _PP_EACH_55(TF, __VA_ARGS__) + #define _PP_EACH_57(TF, next_arg, ...) TF(next_arg) _PP_EACH_56(TF, __VA_ARGS__) + #define _PP_EACH_58(TF, next_arg, ...) TF(next_arg) _PP_EACH_57(TF, __VA_ARGS__) + #define _PP_EACH_59(TF, next_arg, ...) TF(next_arg) _PP_EACH_58(TF, __VA_ARGS__) + #define _PP_EACH_60(TF, next_arg, ...) TF(next_arg) _PP_EACH_59(TF, __VA_ARGS__) + #define _PP_EACH_61(TF, next_arg, ...) TF(next_arg) _PP_EACH_60(TF, __VA_ARGS__) + #define _PP_EACH_62(TF, next_arg, ...) TF(next_arg) _PP_EACH_61(TF, __VA_ARGS__) + #define _PP_EACH_63(TF, next_arg, ...) TF(next_arg) _PP_EACH_62(TF, __VA_ARGS__) + #define _PP_EACH_64(TF, next_arg, ...) TF(next_arg) _PP_EACH_63(TF, __VA_ARGS__) #endif //PP_EACH //PP_EACH_IDX #ifndef PP_EACH_IDX - #define PP_EACH_IDX(TF, ...) EVAL(_PP_EACH_IDX_DEFER(TF, (PP_SEQ_N()), __VA_ARGS__)) - - #define _PP_EACH_IDX_DEFER(TF, VA_INDICES, ...) \ - IF ( NOT_EMPTY( __VA_ARGS__ ) ) \ - ( \ - DEFER2(TF) (OPT_DEPAREN(HEAD(__VA_ARGS__)), DEFER(HEAD)(DEPAREN(VA_INDICES))) \ - DEFER2 ( __PP_EACH_IDX_DEFER ) () (TF, (TAIL VA_INDICES), TAIL(__VA_ARGS__)) \ - ) - - #define __PP_EACH_IDX_DEFER() _PP_EACH_IDX_DEFER + #define PP_EACH_IDX(TF, ...) _PP_EACH_IDX(TF, PP_NARG(__VA_ARGS__), __VA_ARGS__) + #define _PP_EACH_IDX(TF, N, ...) __PP_EACH_IDX(TF, N, __VA_ARGS__) + #define __PP_EACH_IDX(TF, N, ...) EXPAND(_PP_EACH_IDX_##N(TF, __VA_ARGS__)) + #define _PP_EACH_IDX_0(TF, dummy) + #define _PP_EACH_IDX_1(TF, _0) TF(_0, 0) + #define _PP_EACH_IDX_2(TF, _0, _1) TF(_0, 0) TF(_1, 1) + #define _PP_EACH_IDX_3(TF, _0, _1, _2) TF(_0, 0) TF(_1, 1) TF(_2, 2) + #define _PP_EACH_IDX_4(TF, _0, _1, _2, _3) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) + #define _PP_EACH_IDX_5(TF, _0, _1, _2, _3, _4) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) + #define _PP_EACH_IDX_6(TF, _0, _1, _2, _3, _4, _5) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) + #define _PP_EACH_IDX_7(TF, _0, _1, _2, _3, _4, _5, _6) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) + #define _PP_EACH_IDX_8(TF, _0, _1, _2, _3, _4, _5, _6, _7) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) + #define _PP_EACH_IDX_9(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) + #define _PP_EACH_IDX_10(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) + #define _PP_EACH_IDX_11(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) + #define _PP_EACH_IDX_12(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) + #define _PP_EACH_IDX_13(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) + #define _PP_EACH_IDX_14(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) + #define _PP_EACH_IDX_15(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) + #define _PP_EACH_IDX_16(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) + #define _PP_EACH_IDX_17(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) + #define _PP_EACH_IDX_18(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) + #define _PP_EACH_IDX_19(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) + #define _PP_EACH_IDX_20(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) + #define _PP_EACH_IDX_21(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) + #define _PP_EACH_IDX_22(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) + #define _PP_EACH_IDX_23(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) + #define _PP_EACH_IDX_24(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) + #define _PP_EACH_IDX_25(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) + #define _PP_EACH_IDX_26(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) + #define _PP_EACH_IDX_27(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) + #define _PP_EACH_IDX_28(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) + #define _PP_EACH_IDX_29(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) + #define _PP_EACH_IDX_30(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) + #define _PP_EACH_IDX_31(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) + #define _PP_EACH_IDX_32(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) + #define _PP_EACH_IDX_33(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) + #define _PP_EACH_IDX_34(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) + #define _PP_EACH_IDX_35(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) + #define _PP_EACH_IDX_36(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) + #define _PP_EACH_IDX_37(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) + #define _PP_EACH_IDX_38(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) + #define _PP_EACH_IDX_39(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) + #define _PP_EACH_IDX_40(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) + #define _PP_EACH_IDX_41(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) + #define _PP_EACH_IDX_42(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) TF(_41, 41) + #define _PP_EACH_IDX_43(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) TF(_41, 41) TF(_42, 42) + #define _PP_EACH_IDX_44(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) TF(_41, 41) TF(_42, 42) TF(_43, 43) + #define _PP_EACH_IDX_45(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) TF(_41, 41) TF(_42, 42) TF(_43, 43) TF(_44, 44) + #define _PP_EACH_IDX_46(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) TF(_41, 41) TF(_42, 42) TF(_43, 43) TF(_44, 44) TF(_45, 45) + #define _PP_EACH_IDX_47(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) TF(_41, 41) TF(_42, 42) TF(_43, 43) TF(_44, 44) TF(_45, 45) TF(_46, 46) + #define _PP_EACH_IDX_48(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) TF(_41, 41) TF(_42, 42) TF(_43, 43) TF(_44, 44) TF(_45, 45) TF(_46, 46) TF(_47, 47) + #define _PP_EACH_IDX_49(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) TF(_41, 41) TF(_42, 42) TF(_43, 43) TF(_44, 44) TF(_45, 45) TF(_46, 46) TF(_47, 47) TF(_48, 48) + #define _PP_EACH_IDX_50(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) TF(_41, 41) TF(_42, 42) TF(_43, 43) TF(_44, 44) TF(_45, 45) TF(_46, 46) TF(_47, 47) TF(_48, 48) TF(_49, 49) + #define _PP_EACH_IDX_51(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) TF(_41, 41) TF(_42, 42) TF(_43, 43) TF(_44, 44) TF(_45, 45) TF(_46, 46) TF(_47, 47) TF(_48, 48) TF(_49, 49) TF(_50, 50) + #define _PP_EACH_IDX_52(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) TF(_41, 41) TF(_42, 42) TF(_43, 43) TF(_44, 44) TF(_45, 45) TF(_46, 46) TF(_47, 47) TF(_48, 48) TF(_49, 49) TF(_50, 50) TF(_51, 51) + #define _PP_EACH_IDX_53(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) TF(_41, 41) TF(_42, 42) TF(_43, 43) TF(_44, 44) TF(_45, 45) TF(_46, 46) TF(_47, 47) TF(_48, 48) TF(_49, 49) TF(_50, 50) TF(_51, 51) TF(_52, 52) + #define _PP_EACH_IDX_54(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) TF(_41, 41) TF(_42, 42) TF(_43, 43) TF(_44, 44) TF(_45, 45) TF(_46, 46) TF(_47, 47) TF(_48, 48) TF(_49, 49) TF(_50, 50) TF(_51, 51) TF(_52, 52) TF(_53, 53) + #define _PP_EACH_IDX_55(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) TF(_41, 41) TF(_42, 42) TF(_43, 43) TF(_44, 44) TF(_45, 45) TF(_46, 46) TF(_47, 47) TF(_48, 48) TF(_49, 49) TF(_50, 50) TF(_51, 51) TF(_52, 52) TF(_53, 53) TF(_54, 54) + #define _PP_EACH_IDX_56(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) TF(_41, 41) TF(_42, 42) TF(_43, 43) TF(_44, 44) TF(_45, 45) TF(_46, 46) TF(_47, 47) TF(_48, 48) TF(_49, 49) TF(_50, 50) TF(_51, 51) TF(_52, 52) TF(_53, 53) TF(_54, 54) TF(_55, 55) + #define _PP_EACH_IDX_57(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) TF(_41, 41) TF(_42, 42) TF(_43, 43) TF(_44, 44) TF(_45, 45) TF(_46, 46) TF(_47, 47) TF(_48, 48) TF(_49, 49) TF(_50, 50) TF(_51, 51) TF(_52, 52) TF(_53, 53) TF(_54, 54) TF(_55, 55) TF(_56, 56) + #define _PP_EACH_IDX_58(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) TF(_41, 41) TF(_42, 42) TF(_43, 43) TF(_44, 44) TF(_45, 45) TF(_46, 46) TF(_47, 47) TF(_48, 48) TF(_49, 49) TF(_50, 50) TF(_51, 51) TF(_52, 52) TF(_53, 53) TF(_54, 54) TF(_55, 55) TF(_56, 56) TF(_57, 57) + #define _PP_EACH_IDX_59(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) TF(_41, 41) TF(_42, 42) TF(_43, 43) TF(_44, 44) TF(_45, 45) TF(_46, 46) TF(_47, 47) TF(_48, 48) TF(_49, 49) TF(_50, 50) TF(_51, 51) TF(_52, 52) TF(_53, 53) TF(_54, 54) TF(_55, 55) TF(_56, 56) TF(_57, 57) TF(_58, 58) + #define _PP_EACH_IDX_60(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) TF(_41, 41) TF(_42, 42) TF(_43, 43) TF(_44, 44) TF(_45, 45) TF(_46, 46) TF(_47, 47) TF(_48, 48) TF(_49, 49) TF(_50, 50) TF(_51, 51) TF(_52, 52) TF(_53, 53) TF(_54, 54) TF(_55, 55) TF(_56, 56) TF(_57, 57) TF(_58, 58) TF(_59, 59) + #define _PP_EACH_IDX_61(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) TF(_41, 41) TF(_42, 42) TF(_43, 43) TF(_44, 44) TF(_45, 45) TF(_46, 46) TF(_47, 47) TF(_48, 48) TF(_49, 49) TF(_50, 50) TF(_51, 51) TF(_52, 52) TF(_53, 53) TF(_54, 54) TF(_55, 55) TF(_56, 56) TF(_57, 57) TF(_58, 58) TF(_59, 59) TF(_60, 60) + #define _PP_EACH_IDX_62(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) TF(_41, 41) TF(_42, 42) TF(_43, 43) TF(_44, 44) TF(_45, 45) TF(_46, 46) TF(_47, 47) TF(_48, 48) TF(_49, 49) TF(_50, 50) TF(_51, 51) TF(_52, 52) TF(_53, 53) TF(_54, 54) TF(_55, 55) TF(_56, 56) TF(_57, 57) TF(_58, 58) TF(_59, 59) TF(_60, 60) TF(_61, 61) + #define _PP_EACH_IDX_63(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) TF(_41, 41) TF(_42, 42) TF(_43, 43) TF(_44, 44) TF(_45, 45) TF(_46, 46) TF(_47, 47) TF(_48, 48) TF(_49, 49) TF(_50, 50) TF(_51, 51) TF(_52, 52) TF(_53, 53) TF(_54, 54) TF(_55, 55) TF(_56, 56) TF(_57, 57) TF(_58, 58) TF(_59, 59) TF(_60, 60) TF(_61, 61) TF(_62, 62) + #define _PP_EACH_IDX_64(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) TF(_41, 41) TF(_42, 42) TF(_43, 43) TF(_44, 44) TF(_45, 45) TF(_46, 46) TF(_47, 47) TF(_48, 48) TF(_49, 49) TF(_50, 50) TF(_51, 51) TF(_52, 52) TF(_53, 53) TF(_54, 54) TF(_55, 55) TF(_56, 56) TF(_57, 57) TF(_58, 58) TF(_59, 59) TF(_60, 60) TF(_61, 61) TF(_62, 62) TF(_63, 63) #endif //PP_EACH_IDX //PP_PAR_EACH_IDX #ifndef PP_PAR_EACH_IDX - #define PP_PAR_EACH_IDX(TF, FARGS, ...) EVAL(_PP_PAR_EACH_IDX_DEFER(TF, FARGS, (PP_SEQ_N()), __VA_ARGS__)) - - #define _PP_PAR_EACH_IDX_DEFER(TF, FARGS, VA_INDICES, ...) \ - IF ( NOT_EMPTY( __VA_ARGS__ ) ) \ - ( \ - DEFER2(TF) (OPT_DEPAREN(FARGS), OPT_DEPAREN(HEAD(__VA_ARGS__)), DEFER(HEAD)(DEPAREN(VA_INDICES))) \ - DEFER2 ( __PP_PAR_EACH_IDX_DEFER ) () (TF, FARGS, (TAIL VA_INDICES), TAIL(__VA_ARGS__)) \ - ) - - #define __PP_PAR_EACH_IDX_DEFER() _PP_PAR_EACH_IDX_DEFER + #define PP_PAR_EACH_IDX(TF, FARGS, ...) _PP_PAR_EACH_IDX(TF, FARGS, PP_NARG(__VA_ARGS__), __VA_ARGS__) + #define _PP_PAR_EACH_IDX(TF, FARGS, N, ...) __PP_PAR_EACH_IDX(TF, FARGS, N, __VA_ARGS__) + #define __PP_PAR_EACH_IDX(TF, FARGS, N, ...) EXPAND(_PP_PAR_IDX_##N(TF, FARGS, __VA_ARGS__)) + #define _PP_APPLY(TF, FARGS, VARG, IDX) DEFER(TF) (DEPAREN(FARGS), VARG, IDX) + #define _PP_PAR_IDX_0(TF, FARGS, dummy) + #define _PP_PAR_IDX_1(TF, FARGS, _0) EVAL(_PP_APPLY(TF, FARGS, _0, 0)) + #define _PP_PAR_IDX_2(TF, FARGS, _0, _1) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1)) + #define _PP_PAR_IDX_3(TF, FARGS, _0, _1, _2) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2)) + #define _PP_PAR_IDX_4(TF, FARGS, _0, _1, _2, _3) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3)) + #define _PP_PAR_IDX_5(TF, FARGS, _0, _1, _2, _3, _4) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4)) + #define _PP_PAR_IDX_6(TF, FARGS, _0, _1, _2, _3, _4, _5) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5)) + #define _PP_PAR_IDX_7(TF, FARGS, _0, _1, _2, _3, _4, _5, _6) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6)) + #define _PP_PAR_IDX_8(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7)) + #define _PP_PAR_IDX_9(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8)) + #define _PP_PAR_IDX_10(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9)) + #define _PP_PAR_IDX_11(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10)) + #define _PP_PAR_IDX_12(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11)) + #define _PP_PAR_IDX_13(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12)) + #define _PP_PAR_IDX_14(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13)) + #define _PP_PAR_IDX_15(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14)) + #define _PP_PAR_IDX_16(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15)) + #define _PP_PAR_IDX_17(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16)) + #define _PP_PAR_IDX_18(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17)) + #define _PP_PAR_IDX_19(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18)) + #define _PP_PAR_IDX_20(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19)) + #define _PP_PAR_IDX_21(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20)) + #define _PP_PAR_IDX_22(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21)) + #define _PP_PAR_IDX_23(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22)) + #define _PP_PAR_IDX_24(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23)) + #define _PP_PAR_IDX_25(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24)) + #define _PP_PAR_IDX_26(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25)) + #define _PP_PAR_IDX_27(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26)) + #define _PP_PAR_IDX_28(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27)) + #define _PP_PAR_IDX_29(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28)) + #define _PP_PAR_IDX_30(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29)) + #define _PP_PAR_IDX_31(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30)) + #define _PP_PAR_IDX_32(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31)) + #define _PP_PAR_IDX_33(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32)) + #define _PP_PAR_IDX_34(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33)) + #define _PP_PAR_IDX_35(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34)) + #define _PP_PAR_IDX_36(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35)) + #define _PP_PAR_IDX_37(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36)) + #define _PP_PAR_IDX_38(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37)) + #define _PP_PAR_IDX_39(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38)) + #define _PP_PAR_IDX_40(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39)) + #define _PP_PAR_IDX_41(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40)) + #define _PP_PAR_IDX_42(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41)) + #define _PP_PAR_IDX_43(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42)) + #define _PP_PAR_IDX_44(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43)) + #define _PP_PAR_IDX_45(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44)) + #define _PP_PAR_IDX_46(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45)) + #define _PP_PAR_IDX_47(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46)) + #define _PP_PAR_IDX_48(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47)) + #define _PP_PAR_IDX_49(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48)) + #define _PP_PAR_IDX_50(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49)) + #define _PP_PAR_IDX_51(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50)) + #define _PP_PAR_IDX_52(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51)) + #define _PP_PAR_IDX_53(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52)) + #define _PP_PAR_IDX_54(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52) _PP_APPLY(TF, FARGS, _53, 53)) + #define _PP_PAR_IDX_55(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52) _PP_APPLY(TF, FARGS, _53, 53) _PP_APPLY(TF, FARGS, _54, 54)) + #define _PP_PAR_IDX_56(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52) _PP_APPLY(TF, FARGS, _53, 53) _PP_APPLY(TF, FARGS, _54, 54) _PP_APPLY(TF, FARGS, _55, 55)) + #define _PP_PAR_IDX_57(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52) _PP_APPLY(TF, FARGS, _53, 53) _PP_APPLY(TF, FARGS, _54, 54) _PP_APPLY(TF, FARGS, _55, 55) _PP_APPLY(TF, FARGS, _56, 56)) + #define _PP_PAR_IDX_58(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52) _PP_APPLY(TF, FARGS, _53, 53) _PP_APPLY(TF, FARGS, _54, 54) _PP_APPLY(TF, FARGS, _55, 55) _PP_APPLY(TF, FARGS, _56, 56) _PP_APPLY(TF, FARGS, _57, 57)) + #define _PP_PAR_IDX_59(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52) _PP_APPLY(TF, FARGS, _53, 53) _PP_APPLY(TF, FARGS, _54, 54) _PP_APPLY(TF, FARGS, _55, 55) _PP_APPLY(TF, FARGS, _56, 56) _PP_APPLY(TF, FARGS, _57, 57) _PP_APPLY(TF, FARGS, _58, 58)) + #define _PP_PAR_IDX_60(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52) _PP_APPLY(TF, FARGS, _53, 53) _PP_APPLY(TF, FARGS, _54, 54) _PP_APPLY(TF, FARGS, _55, 55) _PP_APPLY(TF, FARGS, _56, 56) _PP_APPLY(TF, FARGS, _57, 57) _PP_APPLY(TF, FARGS, _58, 58) _PP_APPLY(TF, FARGS, _59, 59)) + #define _PP_PAR_IDX_61(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52) _PP_APPLY(TF, FARGS, _53, 53) _PP_APPLY(TF, FARGS, _54, 54) _PP_APPLY(TF, FARGS, _55, 55) _PP_APPLY(TF, FARGS, _56, 56) _PP_APPLY(TF, FARGS, _57, 57) _PP_APPLY(TF, FARGS, _58, 58) _PP_APPLY(TF, FARGS, _59, 59) _PP_APPLY(TF, FARGS, _60, 60)) + #define _PP_PAR_IDX_62(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52) _PP_APPLY(TF, FARGS, _53, 53) _PP_APPLY(TF, FARGS, _54, 54) _PP_APPLY(TF, FARGS, _55, 55) _PP_APPLY(TF, FARGS, _56, 56) _PP_APPLY(TF, FARGS, _57, 57) _PP_APPLY(TF, FARGS, _58, 58) _PP_APPLY(TF, FARGS, _59, 59) _PP_APPLY(TF, FARGS, _60, 60) _PP_APPLY(TF, FARGS, _61, 61)) + #define _PP_PAR_IDX_63(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52) _PP_APPLY(TF, FARGS, _53, 53) _PP_APPLY(TF, FARGS, _54, 54) _PP_APPLY(TF, FARGS, _55, 55) _PP_APPLY(TF, FARGS, _56, 56) _PP_APPLY(TF, FARGS, _57, 57) _PP_APPLY(TF, FARGS, _58, 58) _PP_APPLY(TF, FARGS, _59, 59) _PP_APPLY(TF, FARGS, _60, 60) _PP_APPLY(TF, FARGS, _61, 61) _PP_APPLY(TF, FARGS, _62, 62)) + #define _PP_PAR_IDX_64(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52) _PP_APPLY(TF, FARGS, _53, 53) _PP_APPLY(TF, FARGS, _54, 54) _PP_APPLY(TF, FARGS, _55, 55) _PP_APPLY(TF, FARGS, _56, 56) _PP_APPLY(TF, FARGS, _57, 57) _PP_APPLY(TF, FARGS, _58, 58) _PP_APPLY(TF, FARGS, _59, 59) _PP_APPLY(TF, FARGS, _60, 60) _PP_APPLY(TF, FARGS, _61, 61) _PP_APPLY(TF, FARGS, _62, 62) _PP_APPLY(TF, FARGS, _63, 63)) #endif //PP_PAR_EACH_IDX @@ -6773,10 +6946,10 @@ FFF_END_EXTERN_C #define PP_ARG_MINUS1_N(...) EXPAND(_PP_ARG_MINUS1_N(__VA_ARGS__)) #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define PP_NARG_MINUS1(...) EXPAND(PP_ARG_MINUS1_N(_0, ##__VA_ARGS__, PP_RSEQ_N())) - #define _PP_ARG_MINUS1_N(__0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, N, ...) N + #define _PP_ARG_MINUS1_N(__0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, _65, N, ...) N #else #define PP_NARG_MINUS1(...) EXPAND(PP_ARG_MINUS1_N(__VA_ARGS__, PP_RSEQ_N())) - #define _PP_ARG_MINUS1_N(__0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, N, ...) N + #define _PP_ARG_MINUS1_N(__0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, N, ...) N #endif #endif //PP_NARG_MINUS1 @@ -6785,10 +6958,10 @@ FFF_END_EXTERN_C #define PP_ARG_MINUS2_N(...) EXPAND(_PP_ARG_MINUS2_N(__VA_ARGS__)) #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define PP_NARG_MINUS2(...) EXPAND(PP_ARG_MINUS2_N(_0, ##__VA_ARGS__, PP_RSEQ_N())) - #define _PP_ARG_MINUS2_N(__1, __0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, N, ...) N + #define _PP_ARG_MINUS2_N(__1, __0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, _65, N, ...) N #else #define PP_NARG_MINUS2(...) EXPAND(PP_ARG_MINUS2_N(__VA_ARGS__, PP_RSEQ_N())) - #define _PP_ARG_MINUS2_N(__1, __0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, N, ...) N + #define _PP_ARG_MINUS2_N(__1, __0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, N, ...) N #endif #endif //PP_NARG_MINUS2 @@ -6797,25 +6970,84 @@ FFF_END_EXTERN_C #define PP_ARG_MINUS3_N(...) EXPAND(_PP_ARG_MINUS3_N(__VA_ARGS__)) #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define PP_NARG_MINUS3(...) EXPAND(PP_ARG_MINUS3_N(_0, ##__VA_ARGS__, PP_RSEQ_N())) - #define _PP_ARG_MINUS3_N(__2, __1, __0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, N, ...) N + #define _PP_ARG_MINUS3_N(__2, __1, __0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, _65, N, ...) N #else #define PP_NARG_MINUS3(...) EXPAND(PP_ARG_MINUS3_N(__VA_ARGS__, PP_RSEQ_N())) - #define _PP_ARG_MINUS3_N(__2, __1, __0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, N, ...) N + #define _PP_ARG_MINUS3_N(__2, __1, __0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, N, ...) N #endif #endif //PP_NARG_MINUS3 #ifndef PP_PAR_EACH_IDX - #define PP_PAR_EACH_IDX(TF, FARGS, ...) EVAL(_PP_PAR_EACH_IDX_DEFER(TF, FARGS, (PP_SEQ_N()), __VA_ARGS__)) - - #define _PP_PAR_EACH_IDX_DEFER(TF, FARGS, VA_INDICES, ...) \ - IF ( NOT_EMPTY( __VA_ARGS__ ) ) \ - ( \ - DEFER2(TF) (OPT_DEPAREN(FARGS), OPT_DEPAREN(HEAD(__VA_ARGS__)), DEFER(HEAD)(DEPAREN(VA_INDICES))) \ - DEFER2 ( __PP_PAR_EACH_IDX_DEFER ) () (TF, FARGS, (TAIL VA_INDICES), TAIL(__VA_ARGS__)) \ - ) - - #define __PP_PAR_EACH_IDX_DEFER() _PP_PAR_EACH_IDX_DEFER + #define PP_PAR_EACH_IDX(TF, FARGS, ...) _PP_PAR_EACH_IDX(TF, FARGS, PP_NARG(__VA_ARGS__), __VA_ARGS__) + #define _PP_PAR_EACH_IDX(TF, FARGS, N, ...) __PP_PAR_EACH_IDX(TF, FARGS, N, __VA_ARGS__) + #define __PP_PAR_EACH_IDX(TF, FARGS, N, ...) EXPAND(_PP_PAR_IDX_##N(TF, FARGS, __VA_ARGS__)) + #define _PP_APPLY(TF, FARGS, VARG, IDX) DEFER(TF) (DEPAREN(FARGS), VARG, IDX) + #define _PP_PAR_IDX_0(TF, FARGS, dummy) + #define _PP_PAR_IDX_1(TF, FARGS, _0) EVAL(_PP_APPLY(TF, FARGS, _0, 0)) + #define _PP_PAR_IDX_2(TF, FARGS, _0, _1) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1)) + #define _PP_PAR_IDX_3(TF, FARGS, _0, _1, _2) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2)) + #define _PP_PAR_IDX_4(TF, FARGS, _0, _1, _2, _3) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3)) + #define _PP_PAR_IDX_5(TF, FARGS, _0, _1, _2, _3, _4) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4)) + #define _PP_PAR_IDX_6(TF, FARGS, _0, _1, _2, _3, _4, _5) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5)) + #define _PP_PAR_IDX_7(TF, FARGS, _0, _1, _2, _3, _4, _5, _6) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6)) + #define _PP_PAR_IDX_8(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7)) + #define _PP_PAR_IDX_9(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8)) + #define _PP_PAR_IDX_10(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9)) + #define _PP_PAR_IDX_11(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10)) + #define _PP_PAR_IDX_12(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11)) + #define _PP_PAR_IDX_13(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12)) + #define _PP_PAR_IDX_14(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13)) + #define _PP_PAR_IDX_15(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14)) + #define _PP_PAR_IDX_16(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15)) + #define _PP_PAR_IDX_17(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16)) + #define _PP_PAR_IDX_18(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17)) + #define _PP_PAR_IDX_19(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18)) + #define _PP_PAR_IDX_20(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19)) + #define _PP_PAR_IDX_21(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20)) + #define _PP_PAR_IDX_22(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21)) + #define _PP_PAR_IDX_23(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22)) + #define _PP_PAR_IDX_24(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23)) + #define _PP_PAR_IDX_25(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24)) + #define _PP_PAR_IDX_26(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25)) + #define _PP_PAR_IDX_27(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26)) + #define _PP_PAR_IDX_28(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27)) + #define _PP_PAR_IDX_29(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28)) + #define _PP_PAR_IDX_30(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29)) + #define _PP_PAR_IDX_31(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30)) + #define _PP_PAR_IDX_32(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31)) + #define _PP_PAR_IDX_33(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32)) + #define _PP_PAR_IDX_34(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33)) + #define _PP_PAR_IDX_35(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34)) + #define _PP_PAR_IDX_36(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35)) + #define _PP_PAR_IDX_37(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36)) + #define _PP_PAR_IDX_38(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37)) + #define _PP_PAR_IDX_39(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38)) + #define _PP_PAR_IDX_40(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39)) + #define _PP_PAR_IDX_41(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40)) + #define _PP_PAR_IDX_42(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41)) + #define _PP_PAR_IDX_43(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42)) + #define _PP_PAR_IDX_44(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43)) + #define _PP_PAR_IDX_45(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44)) + #define _PP_PAR_IDX_46(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45)) + #define _PP_PAR_IDX_47(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46)) + #define _PP_PAR_IDX_48(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47)) + #define _PP_PAR_IDX_49(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48)) + #define _PP_PAR_IDX_50(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49)) + #define _PP_PAR_IDX_51(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50)) + #define _PP_PAR_IDX_52(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51)) + #define _PP_PAR_IDX_53(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52)) + #define _PP_PAR_IDX_54(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52) _PP_APPLY(TF, FARGS, _53, 53)) + #define _PP_PAR_IDX_55(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52) _PP_APPLY(TF, FARGS, _53, 53) _PP_APPLY(TF, FARGS, _54, 54)) + #define _PP_PAR_IDX_56(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52) _PP_APPLY(TF, FARGS, _53, 53) _PP_APPLY(TF, FARGS, _54, 54) _PP_APPLY(TF, FARGS, _55, 55)) + #define _PP_PAR_IDX_57(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52) _PP_APPLY(TF, FARGS, _53, 53) _PP_APPLY(TF, FARGS, _54, 54) _PP_APPLY(TF, FARGS, _55, 55) _PP_APPLY(TF, FARGS, _56, 56)) + #define _PP_PAR_IDX_58(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52) _PP_APPLY(TF, FARGS, _53, 53) _PP_APPLY(TF, FARGS, _54, 54) _PP_APPLY(TF, FARGS, _55, 55) _PP_APPLY(TF, FARGS, _56, 56) _PP_APPLY(TF, FARGS, _57, 57)) + #define _PP_PAR_IDX_59(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52) _PP_APPLY(TF, FARGS, _53, 53) _PP_APPLY(TF, FARGS, _54, 54) _PP_APPLY(TF, FARGS, _55, 55) _PP_APPLY(TF, FARGS, _56, 56) _PP_APPLY(TF, FARGS, _57, 57) _PP_APPLY(TF, FARGS, _58, 58)) + #define _PP_PAR_IDX_60(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52) _PP_APPLY(TF, FARGS, _53, 53) _PP_APPLY(TF, FARGS, _54, 54) _PP_APPLY(TF, FARGS, _55, 55) _PP_APPLY(TF, FARGS, _56, 56) _PP_APPLY(TF, FARGS, _57, 57) _PP_APPLY(TF, FARGS, _58, 58) _PP_APPLY(TF, FARGS, _59, 59)) + #define _PP_PAR_IDX_61(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52) _PP_APPLY(TF, FARGS, _53, 53) _PP_APPLY(TF, FARGS, _54, 54) _PP_APPLY(TF, FARGS, _55, 55) _PP_APPLY(TF, FARGS, _56, 56) _PP_APPLY(TF, FARGS, _57, 57) _PP_APPLY(TF, FARGS, _58, 58) _PP_APPLY(TF, FARGS, _59, 59) _PP_APPLY(TF, FARGS, _60, 60)) + #define _PP_PAR_IDX_62(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52) _PP_APPLY(TF, FARGS, _53, 53) _PP_APPLY(TF, FARGS, _54, 54) _PP_APPLY(TF, FARGS, _55, 55) _PP_APPLY(TF, FARGS, _56, 56) _PP_APPLY(TF, FARGS, _57, 57) _PP_APPLY(TF, FARGS, _58, 58) _PP_APPLY(TF, FARGS, _59, 59) _PP_APPLY(TF, FARGS, _60, 60) _PP_APPLY(TF, FARGS, _61, 61)) + #define _PP_PAR_IDX_63(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52) _PP_APPLY(TF, FARGS, _53, 53) _PP_APPLY(TF, FARGS, _54, 54) _PP_APPLY(TF, FARGS, _55, 55) _PP_APPLY(TF, FARGS, _56, 56) _PP_APPLY(TF, FARGS, _57, 57) _PP_APPLY(TF, FARGS, _58, 58) _PP_APPLY(TF, FARGS, _59, 59) _PP_APPLY(TF, FARGS, _60, 60) _PP_APPLY(TF, FARGS, _61, 61) _PP_APPLY(TF, FARGS, _62, 62)) + #define _PP_PAR_IDX_64(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52) _PP_APPLY(TF, FARGS, _53, 53) _PP_APPLY(TF, FARGS, _54, 54) _PP_APPLY(TF, FARGS, _55, 55) _PP_APPLY(TF, FARGS, _56, 56) _PP_APPLY(TF, FARGS, _57, 57) _PP_APPLY(TF, FARGS, _58, 58) _PP_APPLY(TF, FARGS, _59, 59) _PP_APPLY(TF, FARGS, _60, 60) _PP_APPLY(TF, FARGS, _61, 61) _PP_APPLY(TF, FARGS, _62, 62) _PP_APPLY(TF, FARGS, _63, 63)) #endif //PP_PAR_EACH_IDX diff --git a/pp_iterators.rb b/pp_iterators.rb index d6c8f7c..b74257e 100755 --- a/pp_iterators.rb +++ b/pp_iterators.rb @@ -280,7 +280,7 @@ def pp_each_non_recursive CFile::define_macros([ "PP_EACH(TF, ...) _PP_EACH(TF, PP_NARG(__VA_ARGS__), __VA_ARGS__)", "_PP_EACH(TF, N, ...) __PP_EACH(TF, N, __VA_ARGS__)", - "__PP_EACH(TF, N, ...) _PP_EACH_##N(TF, __VA_ARGS__)", + "__PP_EACH(TF, N, ...) EXPAND(_PP_EACH_##N(TF, __VA_ARGS__))", "", "_PP_EACH_0(TF, ...)", "_PP_EACH_1(TF, next_arg) TF(next_arg)", @@ -293,7 +293,7 @@ def each_idx_non_recursive [ "PP_EACH_IDX(TF, ...) _PP_EACH_IDX(TF, PP_NARG(__VA_ARGS__), __VA_ARGS__)", "_PP_EACH_IDX(TF, N, ...) __PP_EACH_IDX(TF, N, __VA_ARGS__)", - "__PP_EACH_IDX(TF, N, ...) _PP_EACH_IDX_##N(TF, __VA_ARGS__)", + "__PP_EACH_IDX(TF, N, ...) EXPAND(_PP_EACH_IDX_##N(TF, __VA_ARGS__))", "", "_PP_EACH_IDX_0(TF, dummy)" ] + (1..@nargs_max).map do |arg_count| @@ -341,7 +341,7 @@ def pp_par_each_idx_non_recursive [ "PP_PAR_EACH_IDX(TF, FARGS, ...) _PP_PAR_EACH_IDX(TF, FARGS, PP_NARG(__VA_ARGS__), __VA_ARGS__)", "_PP_PAR_EACH_IDX(TF, FARGS, N, ...) __PP_PAR_EACH_IDX(TF, FARGS, N, __VA_ARGS__)", - "__PP_PAR_EACH_IDX(TF, FARGS, N, ...) _PP_PAR_IDX_##N(TF, FARGS, __VA_ARGS__)", + "__PP_PAR_EACH_IDX(TF, FARGS, N, ...) EXPAND(_PP_PAR_IDX_##N(TF, FARGS, __VA_ARGS__))", "_PP_APPLY(TF, FARGS, VARG, IDX) DEFER(TF) (DEPAREN(FARGS), VARG, IDX)", "", "_PP_PAR_IDX_0(TF, FARGS, dummy)", diff --git a/test/fff_test_c.c b/test/fff_test_c.c index 0ef6c26..2c11475 100644 --- a/test/fff_test_c.c +++ b/test/fff_test_c.c @@ -17,7 +17,11 @@ #define RUN_INDEXED_TEST(SUITE, TEST_COUNT, TESTNAME, IDX) do { printf(" Running (%d/%d) %s.%s: \n", IDX+1, TEST_COUNT, #SUITE, #TESTNAME); setup(); TESTNAME(); printf(" SUCCESS\n"); } while (0); \ -#define RUN_TESTS(SUITE, ...) PP_2PAR_EACH_IDX(RUN_INDEXED_TEST, SUITE, PP_NARG(__VA_ARGS__), __VA_ARGS__) +/* #define RUN_TESTS(SUITE, ...) PP_2PAR_EACH_IDX(RUN_INDEXED_TEST, SUITE, PP_NARG(__VA_ARGS__), __VA_ARGS__) */ +//Temporary hack to diagnose MSVC issues.... +#define RUN_TEST(TESTNAME) do { printf(" Running %s: \n", #TESTNAME); setup(); TESTNAME(); printf(" SUCCESS\n"); } while (0); \ + +#define RUN_TESTS(SUITE, ...) PP_EACH(RUN_TEST, __VA_ARGS__) enum MYBOOL { FALSE = 899, TRUE }; struct MyStruct { From 19f7392daa9729b6e5ffae70fbc3a02b66194d4a Mon Sep 17 00:00:00 2001 From: Cormac Cannon Date: Thu, 18 Jul 2019 10:51:04 +0100 Subject: [PATCH 14/15] Reverted to recursion by default. Extracted test iteration macros --- fakegen.rb | 2 +- fff.h | 338 ++++++--------------------------------- test/c_test_iterators.h | 6 + test/fff_test_c.c | 11 +- test/fff_test_global_c.c | 7 +- 5 files changed, 62 insertions(+), 302 deletions(-) create mode 100644 test/c_test_iterators.h diff --git a/fakegen.rb b/fakegen.rb index e1b60b7..a843566 100644 --- a/fakegen.rb +++ b/fakegen.rb @@ -637,7 +637,7 @@ def counting_macro_instance(type, has_calling_conventions, vararg = :non_vararg, def output_macro_counting_shortcuts(has_calling_conventions) - ppiter = PPIterators.new(recursive: false) + ppiter = PPIterators.new(recursive: true) putd <<-MACRO_COUNTING #{ppiter.embed_macros} diff --git a/fff.h b/fff.h index 78f6a33..d9ea4ae 100644 --- a/fff.h +++ b/fff.h @@ -6667,7 +6667,7 @@ FFF_END_EXTERN_C #define IS_EMPTY(...)_ISEMPTY( /* test if there is just one argument, eventually an empty one */ HAS_COMMA(__VA_ARGS__), /* test if _TRIGGER_PARENTHESIS_ together with the argument adds a comma */ HAS_COMMA(_TRIGGER_PARENTHESIS_ __VA_ARGS__), /* test if the argument together with a parenthesis adds a comma */ HAS_COMMA(__VA_ARGS__ (/*empty*/)), /* test if placing it between _TRIGGER_PARENTHESIS_ and the parenthesis adds a comma */ HAS_COMMA(_TRIGGER_PARENTHESIS_ __VA_ARGS__ (/*empty*/)) ) #define _ISEMPTY(_0, _1, _2, _3) HAS_COMMA(PASTE5(_IS_EMPTY_CASE_, _0, _1, _2, _3)) - #define HAS_COMMA(...) PP_ARG_N(__VA_ARGS__, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0) + #define HAS_COMMA(...) PP_ARG_N(__VA_ARGS__, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0) #define _TRIGGER_PARENTHESIS_(...) , #define PASTE5(_0, _1, _2, _3, _4) _0 ## _1 ## _2 ## _3 ## _4 #define _IS_EMPTY_CASE_0001 , @@ -6698,239 +6698,66 @@ FFF_END_EXTERN_C #ifndef PP_UTIL #define PP_UTIL #define EXPAND(x) x - #define PP_SEQ_N() 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64 - #define PP_RSEQ_N() 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 + #define PP_SEQ_N() 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63 + #define PP_RSEQ_N() 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 #endif //PP_UTIL #ifndef PP_NARG #define PP_ARG_N(...) EXPAND(_PP_ARG_N(__VA_ARGS__)) #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define PP_NARG(...) EXPAND(PP_ARG_N(_0, ##__VA_ARGS__, PP_RSEQ_N())) - #define _PP_ARG_N(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, _65, N, ...) N + #define _PP_ARG_N(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, N, ...) N #else #define PP_NARG(...) EXPAND(PP_ARG_N(__VA_ARGS__, PP_RSEQ_N())) - #define _PP_ARG_N(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, N, ...) N + #define _PP_ARG_N(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, N, ...) N #endif #endif //PP_NARG //PP_EACH #ifndef PP_EACH - #define PP_EACH(TF, ...) _PP_EACH(TF, PP_NARG(__VA_ARGS__), __VA_ARGS__) - #define _PP_EACH(TF, N, ...) __PP_EACH(TF, N, __VA_ARGS__) - #define __PP_EACH(TF, N, ...) EXPAND(_PP_EACH_##N(TF, __VA_ARGS__)) - #define _PP_EACH_0(TF, ...) - #define _PP_EACH_1(TF, next_arg) TF(next_arg) - #define _PP_EACH_2(TF, next_arg, ...) TF(next_arg) _PP_EACH_1(TF, __VA_ARGS__) - #define _PP_EACH_3(TF, next_arg, ...) TF(next_arg) _PP_EACH_2(TF, __VA_ARGS__) - #define _PP_EACH_4(TF, next_arg, ...) TF(next_arg) _PP_EACH_3(TF, __VA_ARGS__) - #define _PP_EACH_5(TF, next_arg, ...) TF(next_arg) _PP_EACH_4(TF, __VA_ARGS__) - #define _PP_EACH_6(TF, next_arg, ...) TF(next_arg) _PP_EACH_5(TF, __VA_ARGS__) - #define _PP_EACH_7(TF, next_arg, ...) TF(next_arg) _PP_EACH_6(TF, __VA_ARGS__) - #define _PP_EACH_8(TF, next_arg, ...) TF(next_arg) _PP_EACH_7(TF, __VA_ARGS__) - #define _PP_EACH_9(TF, next_arg, ...) TF(next_arg) _PP_EACH_8(TF, __VA_ARGS__) - #define _PP_EACH_10(TF, next_arg, ...) TF(next_arg) _PP_EACH_9(TF, __VA_ARGS__) - #define _PP_EACH_11(TF, next_arg, ...) TF(next_arg) _PP_EACH_10(TF, __VA_ARGS__) - #define _PP_EACH_12(TF, next_arg, ...) TF(next_arg) _PP_EACH_11(TF, __VA_ARGS__) - #define _PP_EACH_13(TF, next_arg, ...) TF(next_arg) _PP_EACH_12(TF, __VA_ARGS__) - #define _PP_EACH_14(TF, next_arg, ...) TF(next_arg) _PP_EACH_13(TF, __VA_ARGS__) - #define _PP_EACH_15(TF, next_arg, ...) TF(next_arg) _PP_EACH_14(TF, __VA_ARGS__) - #define _PP_EACH_16(TF, next_arg, ...) TF(next_arg) _PP_EACH_15(TF, __VA_ARGS__) - #define _PP_EACH_17(TF, next_arg, ...) TF(next_arg) _PP_EACH_16(TF, __VA_ARGS__) - #define _PP_EACH_18(TF, next_arg, ...) TF(next_arg) _PP_EACH_17(TF, __VA_ARGS__) - #define _PP_EACH_19(TF, next_arg, ...) TF(next_arg) _PP_EACH_18(TF, __VA_ARGS__) - #define _PP_EACH_20(TF, next_arg, ...) TF(next_arg) _PP_EACH_19(TF, __VA_ARGS__) - #define _PP_EACH_21(TF, next_arg, ...) TF(next_arg) _PP_EACH_20(TF, __VA_ARGS__) - #define _PP_EACH_22(TF, next_arg, ...) TF(next_arg) _PP_EACH_21(TF, __VA_ARGS__) - #define _PP_EACH_23(TF, next_arg, ...) TF(next_arg) _PP_EACH_22(TF, __VA_ARGS__) - #define _PP_EACH_24(TF, next_arg, ...) TF(next_arg) _PP_EACH_23(TF, __VA_ARGS__) - #define _PP_EACH_25(TF, next_arg, ...) TF(next_arg) _PP_EACH_24(TF, __VA_ARGS__) - #define _PP_EACH_26(TF, next_arg, ...) TF(next_arg) _PP_EACH_25(TF, __VA_ARGS__) - #define _PP_EACH_27(TF, next_arg, ...) TF(next_arg) _PP_EACH_26(TF, __VA_ARGS__) - #define _PP_EACH_28(TF, next_arg, ...) TF(next_arg) _PP_EACH_27(TF, __VA_ARGS__) - #define _PP_EACH_29(TF, next_arg, ...) TF(next_arg) _PP_EACH_28(TF, __VA_ARGS__) - #define _PP_EACH_30(TF, next_arg, ...) TF(next_arg) _PP_EACH_29(TF, __VA_ARGS__) - #define _PP_EACH_31(TF, next_arg, ...) TF(next_arg) _PP_EACH_30(TF, __VA_ARGS__) - #define _PP_EACH_32(TF, next_arg, ...) TF(next_arg) _PP_EACH_31(TF, __VA_ARGS__) - #define _PP_EACH_33(TF, next_arg, ...) TF(next_arg) _PP_EACH_32(TF, __VA_ARGS__) - #define _PP_EACH_34(TF, next_arg, ...) TF(next_arg) _PP_EACH_33(TF, __VA_ARGS__) - #define _PP_EACH_35(TF, next_arg, ...) TF(next_arg) _PP_EACH_34(TF, __VA_ARGS__) - #define _PP_EACH_36(TF, next_arg, ...) TF(next_arg) _PP_EACH_35(TF, __VA_ARGS__) - #define _PP_EACH_37(TF, next_arg, ...) TF(next_arg) _PP_EACH_36(TF, __VA_ARGS__) - #define _PP_EACH_38(TF, next_arg, ...) TF(next_arg) _PP_EACH_37(TF, __VA_ARGS__) - #define _PP_EACH_39(TF, next_arg, ...) TF(next_arg) _PP_EACH_38(TF, __VA_ARGS__) - #define _PP_EACH_40(TF, next_arg, ...) TF(next_arg) _PP_EACH_39(TF, __VA_ARGS__) - #define _PP_EACH_41(TF, next_arg, ...) TF(next_arg) _PP_EACH_40(TF, __VA_ARGS__) - #define _PP_EACH_42(TF, next_arg, ...) TF(next_arg) _PP_EACH_41(TF, __VA_ARGS__) - #define _PP_EACH_43(TF, next_arg, ...) TF(next_arg) _PP_EACH_42(TF, __VA_ARGS__) - #define _PP_EACH_44(TF, next_arg, ...) TF(next_arg) _PP_EACH_43(TF, __VA_ARGS__) - #define _PP_EACH_45(TF, next_arg, ...) TF(next_arg) _PP_EACH_44(TF, __VA_ARGS__) - #define _PP_EACH_46(TF, next_arg, ...) TF(next_arg) _PP_EACH_45(TF, __VA_ARGS__) - #define _PP_EACH_47(TF, next_arg, ...) TF(next_arg) _PP_EACH_46(TF, __VA_ARGS__) - #define _PP_EACH_48(TF, next_arg, ...) TF(next_arg) _PP_EACH_47(TF, __VA_ARGS__) - #define _PP_EACH_49(TF, next_arg, ...) TF(next_arg) _PP_EACH_48(TF, __VA_ARGS__) - #define _PP_EACH_50(TF, next_arg, ...) TF(next_arg) _PP_EACH_49(TF, __VA_ARGS__) - #define _PP_EACH_51(TF, next_arg, ...) TF(next_arg) _PP_EACH_50(TF, __VA_ARGS__) - #define _PP_EACH_52(TF, next_arg, ...) TF(next_arg) _PP_EACH_51(TF, __VA_ARGS__) - #define _PP_EACH_53(TF, next_arg, ...) TF(next_arg) _PP_EACH_52(TF, __VA_ARGS__) - #define _PP_EACH_54(TF, next_arg, ...) TF(next_arg) _PP_EACH_53(TF, __VA_ARGS__) - #define _PP_EACH_55(TF, next_arg, ...) TF(next_arg) _PP_EACH_54(TF, __VA_ARGS__) - #define _PP_EACH_56(TF, next_arg, ...) TF(next_arg) _PP_EACH_55(TF, __VA_ARGS__) - #define _PP_EACH_57(TF, next_arg, ...) TF(next_arg) _PP_EACH_56(TF, __VA_ARGS__) - #define _PP_EACH_58(TF, next_arg, ...) TF(next_arg) _PP_EACH_57(TF, __VA_ARGS__) - #define _PP_EACH_59(TF, next_arg, ...) TF(next_arg) _PP_EACH_58(TF, __VA_ARGS__) - #define _PP_EACH_60(TF, next_arg, ...) TF(next_arg) _PP_EACH_59(TF, __VA_ARGS__) - #define _PP_EACH_61(TF, next_arg, ...) TF(next_arg) _PP_EACH_60(TF, __VA_ARGS__) - #define _PP_EACH_62(TF, next_arg, ...) TF(next_arg) _PP_EACH_61(TF, __VA_ARGS__) - #define _PP_EACH_63(TF, next_arg, ...) TF(next_arg) _PP_EACH_62(TF, __VA_ARGS__) - #define _PP_EACH_64(TF, next_arg, ...) TF(next_arg) _PP_EACH_63(TF, __VA_ARGS__) + #define PP_EACH(TF, ...) \ + EVAL(_PP_EACH_DEFER(TF, __VA_ARGS__)) + + #define _PP_EACH_DEFER(TF, ...) \ + IF ( NOT_EMPTY( __VA_ARGS__ ) ) \ + ( \ + DEFER(TF) (OPT_DEPAREN(HEAD(__VA_ARGS__))) \ + DEFER2 ( __PP_EACH_DEFER ) () (TF, TAIL(__VA_ARGS__)) \ + ) + + //This indirection along with the DEFER2 and EVAL macros allows the recursive implementation of _PP_EACH_DEFER + #define __PP_EACH_DEFER() _PP_EACH_DEFER #endif //PP_EACH //PP_EACH_IDX #ifndef PP_EACH_IDX - #define PP_EACH_IDX(TF, ...) _PP_EACH_IDX(TF, PP_NARG(__VA_ARGS__), __VA_ARGS__) - #define _PP_EACH_IDX(TF, N, ...) __PP_EACH_IDX(TF, N, __VA_ARGS__) - #define __PP_EACH_IDX(TF, N, ...) EXPAND(_PP_EACH_IDX_##N(TF, __VA_ARGS__)) - #define _PP_EACH_IDX_0(TF, dummy) - #define _PP_EACH_IDX_1(TF, _0) TF(_0, 0) - #define _PP_EACH_IDX_2(TF, _0, _1) TF(_0, 0) TF(_1, 1) - #define _PP_EACH_IDX_3(TF, _0, _1, _2) TF(_0, 0) TF(_1, 1) TF(_2, 2) - #define _PP_EACH_IDX_4(TF, _0, _1, _2, _3) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) - #define _PP_EACH_IDX_5(TF, _0, _1, _2, _3, _4) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) - #define _PP_EACH_IDX_6(TF, _0, _1, _2, _3, _4, _5) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) - #define _PP_EACH_IDX_7(TF, _0, _1, _2, _3, _4, _5, _6) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) - #define _PP_EACH_IDX_8(TF, _0, _1, _2, _3, _4, _5, _6, _7) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) - #define _PP_EACH_IDX_9(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) - #define _PP_EACH_IDX_10(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) - #define _PP_EACH_IDX_11(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) - #define _PP_EACH_IDX_12(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) - #define _PP_EACH_IDX_13(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) - #define _PP_EACH_IDX_14(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) - #define _PP_EACH_IDX_15(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) - #define _PP_EACH_IDX_16(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) - #define _PP_EACH_IDX_17(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) - #define _PP_EACH_IDX_18(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) - #define _PP_EACH_IDX_19(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) - #define _PP_EACH_IDX_20(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) - #define _PP_EACH_IDX_21(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) - #define _PP_EACH_IDX_22(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) - #define _PP_EACH_IDX_23(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) - #define _PP_EACH_IDX_24(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) - #define _PP_EACH_IDX_25(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) - #define _PP_EACH_IDX_26(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) - #define _PP_EACH_IDX_27(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) - #define _PP_EACH_IDX_28(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) - #define _PP_EACH_IDX_29(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) - #define _PP_EACH_IDX_30(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) - #define _PP_EACH_IDX_31(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) - #define _PP_EACH_IDX_32(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) - #define _PP_EACH_IDX_33(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) - #define _PP_EACH_IDX_34(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) - #define _PP_EACH_IDX_35(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) - #define _PP_EACH_IDX_36(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) - #define _PP_EACH_IDX_37(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) - #define _PP_EACH_IDX_38(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) - #define _PP_EACH_IDX_39(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) - #define _PP_EACH_IDX_40(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) - #define _PP_EACH_IDX_41(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) - #define _PP_EACH_IDX_42(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) TF(_41, 41) - #define _PP_EACH_IDX_43(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) TF(_41, 41) TF(_42, 42) - #define _PP_EACH_IDX_44(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) TF(_41, 41) TF(_42, 42) TF(_43, 43) - #define _PP_EACH_IDX_45(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) TF(_41, 41) TF(_42, 42) TF(_43, 43) TF(_44, 44) - #define _PP_EACH_IDX_46(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) TF(_41, 41) TF(_42, 42) TF(_43, 43) TF(_44, 44) TF(_45, 45) - #define _PP_EACH_IDX_47(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) TF(_41, 41) TF(_42, 42) TF(_43, 43) TF(_44, 44) TF(_45, 45) TF(_46, 46) - #define _PP_EACH_IDX_48(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) TF(_41, 41) TF(_42, 42) TF(_43, 43) TF(_44, 44) TF(_45, 45) TF(_46, 46) TF(_47, 47) - #define _PP_EACH_IDX_49(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) TF(_41, 41) TF(_42, 42) TF(_43, 43) TF(_44, 44) TF(_45, 45) TF(_46, 46) TF(_47, 47) TF(_48, 48) - #define _PP_EACH_IDX_50(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) TF(_41, 41) TF(_42, 42) TF(_43, 43) TF(_44, 44) TF(_45, 45) TF(_46, 46) TF(_47, 47) TF(_48, 48) TF(_49, 49) - #define _PP_EACH_IDX_51(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) TF(_41, 41) TF(_42, 42) TF(_43, 43) TF(_44, 44) TF(_45, 45) TF(_46, 46) TF(_47, 47) TF(_48, 48) TF(_49, 49) TF(_50, 50) - #define _PP_EACH_IDX_52(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) TF(_41, 41) TF(_42, 42) TF(_43, 43) TF(_44, 44) TF(_45, 45) TF(_46, 46) TF(_47, 47) TF(_48, 48) TF(_49, 49) TF(_50, 50) TF(_51, 51) - #define _PP_EACH_IDX_53(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) TF(_41, 41) TF(_42, 42) TF(_43, 43) TF(_44, 44) TF(_45, 45) TF(_46, 46) TF(_47, 47) TF(_48, 48) TF(_49, 49) TF(_50, 50) TF(_51, 51) TF(_52, 52) - #define _PP_EACH_IDX_54(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) TF(_41, 41) TF(_42, 42) TF(_43, 43) TF(_44, 44) TF(_45, 45) TF(_46, 46) TF(_47, 47) TF(_48, 48) TF(_49, 49) TF(_50, 50) TF(_51, 51) TF(_52, 52) TF(_53, 53) - #define _PP_EACH_IDX_55(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) TF(_41, 41) TF(_42, 42) TF(_43, 43) TF(_44, 44) TF(_45, 45) TF(_46, 46) TF(_47, 47) TF(_48, 48) TF(_49, 49) TF(_50, 50) TF(_51, 51) TF(_52, 52) TF(_53, 53) TF(_54, 54) - #define _PP_EACH_IDX_56(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) TF(_41, 41) TF(_42, 42) TF(_43, 43) TF(_44, 44) TF(_45, 45) TF(_46, 46) TF(_47, 47) TF(_48, 48) TF(_49, 49) TF(_50, 50) TF(_51, 51) TF(_52, 52) TF(_53, 53) TF(_54, 54) TF(_55, 55) - #define _PP_EACH_IDX_57(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) TF(_41, 41) TF(_42, 42) TF(_43, 43) TF(_44, 44) TF(_45, 45) TF(_46, 46) TF(_47, 47) TF(_48, 48) TF(_49, 49) TF(_50, 50) TF(_51, 51) TF(_52, 52) TF(_53, 53) TF(_54, 54) TF(_55, 55) TF(_56, 56) - #define _PP_EACH_IDX_58(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) TF(_41, 41) TF(_42, 42) TF(_43, 43) TF(_44, 44) TF(_45, 45) TF(_46, 46) TF(_47, 47) TF(_48, 48) TF(_49, 49) TF(_50, 50) TF(_51, 51) TF(_52, 52) TF(_53, 53) TF(_54, 54) TF(_55, 55) TF(_56, 56) TF(_57, 57) - #define _PP_EACH_IDX_59(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) TF(_41, 41) TF(_42, 42) TF(_43, 43) TF(_44, 44) TF(_45, 45) TF(_46, 46) TF(_47, 47) TF(_48, 48) TF(_49, 49) TF(_50, 50) TF(_51, 51) TF(_52, 52) TF(_53, 53) TF(_54, 54) TF(_55, 55) TF(_56, 56) TF(_57, 57) TF(_58, 58) - #define _PP_EACH_IDX_60(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) TF(_41, 41) TF(_42, 42) TF(_43, 43) TF(_44, 44) TF(_45, 45) TF(_46, 46) TF(_47, 47) TF(_48, 48) TF(_49, 49) TF(_50, 50) TF(_51, 51) TF(_52, 52) TF(_53, 53) TF(_54, 54) TF(_55, 55) TF(_56, 56) TF(_57, 57) TF(_58, 58) TF(_59, 59) - #define _PP_EACH_IDX_61(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) TF(_41, 41) TF(_42, 42) TF(_43, 43) TF(_44, 44) TF(_45, 45) TF(_46, 46) TF(_47, 47) TF(_48, 48) TF(_49, 49) TF(_50, 50) TF(_51, 51) TF(_52, 52) TF(_53, 53) TF(_54, 54) TF(_55, 55) TF(_56, 56) TF(_57, 57) TF(_58, 58) TF(_59, 59) TF(_60, 60) - #define _PP_EACH_IDX_62(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) TF(_41, 41) TF(_42, 42) TF(_43, 43) TF(_44, 44) TF(_45, 45) TF(_46, 46) TF(_47, 47) TF(_48, 48) TF(_49, 49) TF(_50, 50) TF(_51, 51) TF(_52, 52) TF(_53, 53) TF(_54, 54) TF(_55, 55) TF(_56, 56) TF(_57, 57) TF(_58, 58) TF(_59, 59) TF(_60, 60) TF(_61, 61) - #define _PP_EACH_IDX_63(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) TF(_41, 41) TF(_42, 42) TF(_43, 43) TF(_44, 44) TF(_45, 45) TF(_46, 46) TF(_47, 47) TF(_48, 48) TF(_49, 49) TF(_50, 50) TF(_51, 51) TF(_52, 52) TF(_53, 53) TF(_54, 54) TF(_55, 55) TF(_56, 56) TF(_57, 57) TF(_58, 58) TF(_59, 59) TF(_60, 60) TF(_61, 61) TF(_62, 62) - #define _PP_EACH_IDX_64(TF, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63) TF(_0, 0) TF(_1, 1) TF(_2, 2) TF(_3, 3) TF(_4, 4) TF(_5, 5) TF(_6, 6) TF(_7, 7) TF(_8, 8) TF(_9, 9) TF(_10, 10) TF(_11, 11) TF(_12, 12) TF(_13, 13) TF(_14, 14) TF(_15, 15) TF(_16, 16) TF(_17, 17) TF(_18, 18) TF(_19, 19) TF(_20, 20) TF(_21, 21) TF(_22, 22) TF(_23, 23) TF(_24, 24) TF(_25, 25) TF(_26, 26) TF(_27, 27) TF(_28, 28) TF(_29, 29) TF(_30, 30) TF(_31, 31) TF(_32, 32) TF(_33, 33) TF(_34, 34) TF(_35, 35) TF(_36, 36) TF(_37, 37) TF(_38, 38) TF(_39, 39) TF(_40, 40) TF(_41, 41) TF(_42, 42) TF(_43, 43) TF(_44, 44) TF(_45, 45) TF(_46, 46) TF(_47, 47) TF(_48, 48) TF(_49, 49) TF(_50, 50) TF(_51, 51) TF(_52, 52) TF(_53, 53) TF(_54, 54) TF(_55, 55) TF(_56, 56) TF(_57, 57) TF(_58, 58) TF(_59, 59) TF(_60, 60) TF(_61, 61) TF(_62, 62) TF(_63, 63) + #define PP_EACH_IDX(TF, ...) EVAL(_PP_EACH_IDX_DEFER(TF, (PP_SEQ_N()), __VA_ARGS__)) + + #define _PP_EACH_IDX_DEFER(TF, VA_INDICES, ...) \ + IF ( NOT_EMPTY( __VA_ARGS__ ) ) \ + ( \ + DEFER2(TF) (OPT_DEPAREN(HEAD(__VA_ARGS__)), DEFER(HEAD)(DEPAREN(VA_INDICES))) \ + DEFER2 ( __PP_EACH_IDX_DEFER ) () (TF, (TAIL VA_INDICES), TAIL(__VA_ARGS__)) \ + ) + + #define __PP_EACH_IDX_DEFER() _PP_EACH_IDX_DEFER #endif //PP_EACH_IDX //PP_PAR_EACH_IDX #ifndef PP_PAR_EACH_IDX - #define PP_PAR_EACH_IDX(TF, FARGS, ...) _PP_PAR_EACH_IDX(TF, FARGS, PP_NARG(__VA_ARGS__), __VA_ARGS__) - #define _PP_PAR_EACH_IDX(TF, FARGS, N, ...) __PP_PAR_EACH_IDX(TF, FARGS, N, __VA_ARGS__) - #define __PP_PAR_EACH_IDX(TF, FARGS, N, ...) EXPAND(_PP_PAR_IDX_##N(TF, FARGS, __VA_ARGS__)) - #define _PP_APPLY(TF, FARGS, VARG, IDX) DEFER(TF) (DEPAREN(FARGS), VARG, IDX) - #define _PP_PAR_IDX_0(TF, FARGS, dummy) - #define _PP_PAR_IDX_1(TF, FARGS, _0) EVAL(_PP_APPLY(TF, FARGS, _0, 0)) - #define _PP_PAR_IDX_2(TF, FARGS, _0, _1) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1)) - #define _PP_PAR_IDX_3(TF, FARGS, _0, _1, _2) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2)) - #define _PP_PAR_IDX_4(TF, FARGS, _0, _1, _2, _3) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3)) - #define _PP_PAR_IDX_5(TF, FARGS, _0, _1, _2, _3, _4) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4)) - #define _PP_PAR_IDX_6(TF, FARGS, _0, _1, _2, _3, _4, _5) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5)) - #define _PP_PAR_IDX_7(TF, FARGS, _0, _1, _2, _3, _4, _5, _6) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6)) - #define _PP_PAR_IDX_8(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7)) - #define _PP_PAR_IDX_9(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8)) - #define _PP_PAR_IDX_10(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9)) - #define _PP_PAR_IDX_11(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10)) - #define _PP_PAR_IDX_12(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11)) - #define _PP_PAR_IDX_13(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12)) - #define _PP_PAR_IDX_14(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13)) - #define _PP_PAR_IDX_15(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14)) - #define _PP_PAR_IDX_16(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15)) - #define _PP_PAR_IDX_17(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16)) - #define _PP_PAR_IDX_18(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17)) - #define _PP_PAR_IDX_19(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18)) - #define _PP_PAR_IDX_20(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19)) - #define _PP_PAR_IDX_21(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20)) - #define _PP_PAR_IDX_22(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21)) - #define _PP_PAR_IDX_23(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22)) - #define _PP_PAR_IDX_24(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23)) - #define _PP_PAR_IDX_25(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24)) - #define _PP_PAR_IDX_26(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25)) - #define _PP_PAR_IDX_27(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26)) - #define _PP_PAR_IDX_28(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27)) - #define _PP_PAR_IDX_29(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28)) - #define _PP_PAR_IDX_30(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29)) - #define _PP_PAR_IDX_31(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30)) - #define _PP_PAR_IDX_32(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31)) - #define _PP_PAR_IDX_33(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32)) - #define _PP_PAR_IDX_34(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33)) - #define _PP_PAR_IDX_35(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34)) - #define _PP_PAR_IDX_36(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35)) - #define _PP_PAR_IDX_37(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36)) - #define _PP_PAR_IDX_38(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37)) - #define _PP_PAR_IDX_39(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38)) - #define _PP_PAR_IDX_40(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39)) - #define _PP_PAR_IDX_41(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40)) - #define _PP_PAR_IDX_42(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41)) - #define _PP_PAR_IDX_43(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42)) - #define _PP_PAR_IDX_44(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43)) - #define _PP_PAR_IDX_45(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44)) - #define _PP_PAR_IDX_46(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45)) - #define _PP_PAR_IDX_47(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46)) - #define _PP_PAR_IDX_48(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47)) - #define _PP_PAR_IDX_49(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48)) - #define _PP_PAR_IDX_50(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49)) - #define _PP_PAR_IDX_51(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50)) - #define _PP_PAR_IDX_52(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51)) - #define _PP_PAR_IDX_53(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52)) - #define _PP_PAR_IDX_54(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52) _PP_APPLY(TF, FARGS, _53, 53)) - #define _PP_PAR_IDX_55(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52) _PP_APPLY(TF, FARGS, _53, 53) _PP_APPLY(TF, FARGS, _54, 54)) - #define _PP_PAR_IDX_56(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52) _PP_APPLY(TF, FARGS, _53, 53) _PP_APPLY(TF, FARGS, _54, 54) _PP_APPLY(TF, FARGS, _55, 55)) - #define _PP_PAR_IDX_57(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52) _PP_APPLY(TF, FARGS, _53, 53) _PP_APPLY(TF, FARGS, _54, 54) _PP_APPLY(TF, FARGS, _55, 55) _PP_APPLY(TF, FARGS, _56, 56)) - #define _PP_PAR_IDX_58(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52) _PP_APPLY(TF, FARGS, _53, 53) _PP_APPLY(TF, FARGS, _54, 54) _PP_APPLY(TF, FARGS, _55, 55) _PP_APPLY(TF, FARGS, _56, 56) _PP_APPLY(TF, FARGS, _57, 57)) - #define _PP_PAR_IDX_59(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52) _PP_APPLY(TF, FARGS, _53, 53) _PP_APPLY(TF, FARGS, _54, 54) _PP_APPLY(TF, FARGS, _55, 55) _PP_APPLY(TF, FARGS, _56, 56) _PP_APPLY(TF, FARGS, _57, 57) _PP_APPLY(TF, FARGS, _58, 58)) - #define _PP_PAR_IDX_60(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52) _PP_APPLY(TF, FARGS, _53, 53) _PP_APPLY(TF, FARGS, _54, 54) _PP_APPLY(TF, FARGS, _55, 55) _PP_APPLY(TF, FARGS, _56, 56) _PP_APPLY(TF, FARGS, _57, 57) _PP_APPLY(TF, FARGS, _58, 58) _PP_APPLY(TF, FARGS, _59, 59)) - #define _PP_PAR_IDX_61(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52) _PP_APPLY(TF, FARGS, _53, 53) _PP_APPLY(TF, FARGS, _54, 54) _PP_APPLY(TF, FARGS, _55, 55) _PP_APPLY(TF, FARGS, _56, 56) _PP_APPLY(TF, FARGS, _57, 57) _PP_APPLY(TF, FARGS, _58, 58) _PP_APPLY(TF, FARGS, _59, 59) _PP_APPLY(TF, FARGS, _60, 60)) - #define _PP_PAR_IDX_62(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52) _PP_APPLY(TF, FARGS, _53, 53) _PP_APPLY(TF, FARGS, _54, 54) _PP_APPLY(TF, FARGS, _55, 55) _PP_APPLY(TF, FARGS, _56, 56) _PP_APPLY(TF, FARGS, _57, 57) _PP_APPLY(TF, FARGS, _58, 58) _PP_APPLY(TF, FARGS, _59, 59) _PP_APPLY(TF, FARGS, _60, 60) _PP_APPLY(TF, FARGS, _61, 61)) - #define _PP_PAR_IDX_63(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52) _PP_APPLY(TF, FARGS, _53, 53) _PP_APPLY(TF, FARGS, _54, 54) _PP_APPLY(TF, FARGS, _55, 55) _PP_APPLY(TF, FARGS, _56, 56) _PP_APPLY(TF, FARGS, _57, 57) _PP_APPLY(TF, FARGS, _58, 58) _PP_APPLY(TF, FARGS, _59, 59) _PP_APPLY(TF, FARGS, _60, 60) _PP_APPLY(TF, FARGS, _61, 61) _PP_APPLY(TF, FARGS, _62, 62)) - #define _PP_PAR_IDX_64(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52) _PP_APPLY(TF, FARGS, _53, 53) _PP_APPLY(TF, FARGS, _54, 54) _PP_APPLY(TF, FARGS, _55, 55) _PP_APPLY(TF, FARGS, _56, 56) _PP_APPLY(TF, FARGS, _57, 57) _PP_APPLY(TF, FARGS, _58, 58) _PP_APPLY(TF, FARGS, _59, 59) _PP_APPLY(TF, FARGS, _60, 60) _PP_APPLY(TF, FARGS, _61, 61) _PP_APPLY(TF, FARGS, _62, 62) _PP_APPLY(TF, FARGS, _63, 63)) + #define PP_PAR_EACH_IDX(TF, FARGS, ...) EVAL(_PP_PAR_EACH_IDX_DEFER(TF, FARGS, (PP_SEQ_N()), __VA_ARGS__)) + + #define _PP_PAR_EACH_IDX_DEFER(TF, FARGS, VA_INDICES, ...) \ + IF ( NOT_EMPTY( __VA_ARGS__ ) ) \ + ( \ + DEFER2(TF) (OPT_DEPAREN(FARGS), OPT_DEPAREN(HEAD(__VA_ARGS__)), DEFER(HEAD)(DEPAREN(VA_INDICES))) \ + DEFER2 ( __PP_PAR_EACH_IDX_DEFER ) () (TF, FARGS, (TAIL VA_INDICES), TAIL(__VA_ARGS__)) \ + ) + + #define __PP_PAR_EACH_IDX_DEFER() _PP_PAR_EACH_IDX_DEFER #endif //PP_PAR_EACH_IDX @@ -6946,10 +6773,10 @@ FFF_END_EXTERN_C #define PP_ARG_MINUS1_N(...) EXPAND(_PP_ARG_MINUS1_N(__VA_ARGS__)) #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define PP_NARG_MINUS1(...) EXPAND(PP_ARG_MINUS1_N(_0, ##__VA_ARGS__, PP_RSEQ_N())) - #define _PP_ARG_MINUS1_N(__0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, _65, N, ...) N + #define _PP_ARG_MINUS1_N(__0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, N, ...) N #else #define PP_NARG_MINUS1(...) EXPAND(PP_ARG_MINUS1_N(__VA_ARGS__, PP_RSEQ_N())) - #define _PP_ARG_MINUS1_N(__0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, N, ...) N + #define _PP_ARG_MINUS1_N(__0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, N, ...) N #endif #endif //PP_NARG_MINUS1 @@ -6958,10 +6785,10 @@ FFF_END_EXTERN_C #define PP_ARG_MINUS2_N(...) EXPAND(_PP_ARG_MINUS2_N(__VA_ARGS__)) #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define PP_NARG_MINUS2(...) EXPAND(PP_ARG_MINUS2_N(_0, ##__VA_ARGS__, PP_RSEQ_N())) - #define _PP_ARG_MINUS2_N(__1, __0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, _65, N, ...) N + #define _PP_ARG_MINUS2_N(__1, __0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, N, ...) N #else #define PP_NARG_MINUS2(...) EXPAND(PP_ARG_MINUS2_N(__VA_ARGS__, PP_RSEQ_N())) - #define _PP_ARG_MINUS2_N(__1, __0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, N, ...) N + #define _PP_ARG_MINUS2_N(__1, __0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, N, ...) N #endif #endif //PP_NARG_MINUS2 @@ -6970,84 +6797,25 @@ FFF_END_EXTERN_C #define PP_ARG_MINUS3_N(...) EXPAND(_PP_ARG_MINUS3_N(__VA_ARGS__)) #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define PP_NARG_MINUS3(...) EXPAND(PP_ARG_MINUS3_N(_0, ##__VA_ARGS__, PP_RSEQ_N())) - #define _PP_ARG_MINUS3_N(__2, __1, __0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, _65, N, ...) N + #define _PP_ARG_MINUS3_N(__2, __1, __0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, N, ...) N #else #define PP_NARG_MINUS3(...) EXPAND(PP_ARG_MINUS3_N(__VA_ARGS__, PP_RSEQ_N())) - #define _PP_ARG_MINUS3_N(__2, __1, __0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, N, ...) N + #define _PP_ARG_MINUS3_N(__2, __1, __0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, N, ...) N #endif #endif //PP_NARG_MINUS3 #ifndef PP_PAR_EACH_IDX - #define PP_PAR_EACH_IDX(TF, FARGS, ...) _PP_PAR_EACH_IDX(TF, FARGS, PP_NARG(__VA_ARGS__), __VA_ARGS__) - #define _PP_PAR_EACH_IDX(TF, FARGS, N, ...) __PP_PAR_EACH_IDX(TF, FARGS, N, __VA_ARGS__) - #define __PP_PAR_EACH_IDX(TF, FARGS, N, ...) EXPAND(_PP_PAR_IDX_##N(TF, FARGS, __VA_ARGS__)) - #define _PP_APPLY(TF, FARGS, VARG, IDX) DEFER(TF) (DEPAREN(FARGS), VARG, IDX) - #define _PP_PAR_IDX_0(TF, FARGS, dummy) - #define _PP_PAR_IDX_1(TF, FARGS, _0) EVAL(_PP_APPLY(TF, FARGS, _0, 0)) - #define _PP_PAR_IDX_2(TF, FARGS, _0, _1) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1)) - #define _PP_PAR_IDX_3(TF, FARGS, _0, _1, _2) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2)) - #define _PP_PAR_IDX_4(TF, FARGS, _0, _1, _2, _3) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3)) - #define _PP_PAR_IDX_5(TF, FARGS, _0, _1, _2, _3, _4) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4)) - #define _PP_PAR_IDX_6(TF, FARGS, _0, _1, _2, _3, _4, _5) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5)) - #define _PP_PAR_IDX_7(TF, FARGS, _0, _1, _2, _3, _4, _5, _6) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6)) - #define _PP_PAR_IDX_8(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7)) - #define _PP_PAR_IDX_9(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8)) - #define _PP_PAR_IDX_10(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9)) - #define _PP_PAR_IDX_11(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10)) - #define _PP_PAR_IDX_12(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11)) - #define _PP_PAR_IDX_13(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12)) - #define _PP_PAR_IDX_14(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13)) - #define _PP_PAR_IDX_15(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14)) - #define _PP_PAR_IDX_16(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15)) - #define _PP_PAR_IDX_17(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16)) - #define _PP_PAR_IDX_18(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17)) - #define _PP_PAR_IDX_19(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18)) - #define _PP_PAR_IDX_20(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19)) - #define _PP_PAR_IDX_21(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20)) - #define _PP_PAR_IDX_22(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21)) - #define _PP_PAR_IDX_23(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22)) - #define _PP_PAR_IDX_24(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23)) - #define _PP_PAR_IDX_25(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24)) - #define _PP_PAR_IDX_26(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25)) - #define _PP_PAR_IDX_27(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26)) - #define _PP_PAR_IDX_28(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27)) - #define _PP_PAR_IDX_29(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28)) - #define _PP_PAR_IDX_30(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29)) - #define _PP_PAR_IDX_31(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30)) - #define _PP_PAR_IDX_32(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31)) - #define _PP_PAR_IDX_33(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32)) - #define _PP_PAR_IDX_34(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33)) - #define _PP_PAR_IDX_35(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34)) - #define _PP_PAR_IDX_36(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35)) - #define _PP_PAR_IDX_37(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36)) - #define _PP_PAR_IDX_38(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37)) - #define _PP_PAR_IDX_39(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38)) - #define _PP_PAR_IDX_40(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39)) - #define _PP_PAR_IDX_41(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40)) - #define _PP_PAR_IDX_42(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41)) - #define _PP_PAR_IDX_43(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42)) - #define _PP_PAR_IDX_44(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43)) - #define _PP_PAR_IDX_45(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44)) - #define _PP_PAR_IDX_46(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45)) - #define _PP_PAR_IDX_47(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46)) - #define _PP_PAR_IDX_48(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47)) - #define _PP_PAR_IDX_49(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48)) - #define _PP_PAR_IDX_50(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49)) - #define _PP_PAR_IDX_51(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50)) - #define _PP_PAR_IDX_52(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51)) - #define _PP_PAR_IDX_53(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52)) - #define _PP_PAR_IDX_54(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52) _PP_APPLY(TF, FARGS, _53, 53)) - #define _PP_PAR_IDX_55(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52) _PP_APPLY(TF, FARGS, _53, 53) _PP_APPLY(TF, FARGS, _54, 54)) - #define _PP_PAR_IDX_56(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52) _PP_APPLY(TF, FARGS, _53, 53) _PP_APPLY(TF, FARGS, _54, 54) _PP_APPLY(TF, FARGS, _55, 55)) - #define _PP_PAR_IDX_57(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52) _PP_APPLY(TF, FARGS, _53, 53) _PP_APPLY(TF, FARGS, _54, 54) _PP_APPLY(TF, FARGS, _55, 55) _PP_APPLY(TF, FARGS, _56, 56)) - #define _PP_PAR_IDX_58(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52) _PP_APPLY(TF, FARGS, _53, 53) _PP_APPLY(TF, FARGS, _54, 54) _PP_APPLY(TF, FARGS, _55, 55) _PP_APPLY(TF, FARGS, _56, 56) _PP_APPLY(TF, FARGS, _57, 57)) - #define _PP_PAR_IDX_59(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52) _PP_APPLY(TF, FARGS, _53, 53) _PP_APPLY(TF, FARGS, _54, 54) _PP_APPLY(TF, FARGS, _55, 55) _PP_APPLY(TF, FARGS, _56, 56) _PP_APPLY(TF, FARGS, _57, 57) _PP_APPLY(TF, FARGS, _58, 58)) - #define _PP_PAR_IDX_60(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52) _PP_APPLY(TF, FARGS, _53, 53) _PP_APPLY(TF, FARGS, _54, 54) _PP_APPLY(TF, FARGS, _55, 55) _PP_APPLY(TF, FARGS, _56, 56) _PP_APPLY(TF, FARGS, _57, 57) _PP_APPLY(TF, FARGS, _58, 58) _PP_APPLY(TF, FARGS, _59, 59)) - #define _PP_PAR_IDX_61(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52) _PP_APPLY(TF, FARGS, _53, 53) _PP_APPLY(TF, FARGS, _54, 54) _PP_APPLY(TF, FARGS, _55, 55) _PP_APPLY(TF, FARGS, _56, 56) _PP_APPLY(TF, FARGS, _57, 57) _PP_APPLY(TF, FARGS, _58, 58) _PP_APPLY(TF, FARGS, _59, 59) _PP_APPLY(TF, FARGS, _60, 60)) - #define _PP_PAR_IDX_62(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52) _PP_APPLY(TF, FARGS, _53, 53) _PP_APPLY(TF, FARGS, _54, 54) _PP_APPLY(TF, FARGS, _55, 55) _PP_APPLY(TF, FARGS, _56, 56) _PP_APPLY(TF, FARGS, _57, 57) _PP_APPLY(TF, FARGS, _58, 58) _PP_APPLY(TF, FARGS, _59, 59) _PP_APPLY(TF, FARGS, _60, 60) _PP_APPLY(TF, FARGS, _61, 61)) - #define _PP_PAR_IDX_63(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52) _PP_APPLY(TF, FARGS, _53, 53) _PP_APPLY(TF, FARGS, _54, 54) _PP_APPLY(TF, FARGS, _55, 55) _PP_APPLY(TF, FARGS, _56, 56) _PP_APPLY(TF, FARGS, _57, 57) _PP_APPLY(TF, FARGS, _58, 58) _PP_APPLY(TF, FARGS, _59, 59) _PP_APPLY(TF, FARGS, _60, 60) _PP_APPLY(TF, FARGS, _61, 61) _PP_APPLY(TF, FARGS, _62, 62)) - #define _PP_PAR_IDX_64(TF, FARGS, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63) EVAL(_PP_APPLY(TF, FARGS, _0, 0) _PP_APPLY(TF, FARGS, _1, 1) _PP_APPLY(TF, FARGS, _2, 2) _PP_APPLY(TF, FARGS, _3, 3) _PP_APPLY(TF, FARGS, _4, 4) _PP_APPLY(TF, FARGS, _5, 5) _PP_APPLY(TF, FARGS, _6, 6) _PP_APPLY(TF, FARGS, _7, 7) _PP_APPLY(TF, FARGS, _8, 8) _PP_APPLY(TF, FARGS, _9, 9) _PP_APPLY(TF, FARGS, _10, 10) _PP_APPLY(TF, FARGS, _11, 11) _PP_APPLY(TF, FARGS, _12, 12) _PP_APPLY(TF, FARGS, _13, 13) _PP_APPLY(TF, FARGS, _14, 14) _PP_APPLY(TF, FARGS, _15, 15) _PP_APPLY(TF, FARGS, _16, 16) _PP_APPLY(TF, FARGS, _17, 17) _PP_APPLY(TF, FARGS, _18, 18) _PP_APPLY(TF, FARGS, _19, 19) _PP_APPLY(TF, FARGS, _20, 20) _PP_APPLY(TF, FARGS, _21, 21) _PP_APPLY(TF, FARGS, _22, 22) _PP_APPLY(TF, FARGS, _23, 23) _PP_APPLY(TF, FARGS, _24, 24) _PP_APPLY(TF, FARGS, _25, 25) _PP_APPLY(TF, FARGS, _26, 26) _PP_APPLY(TF, FARGS, _27, 27) _PP_APPLY(TF, FARGS, _28, 28) _PP_APPLY(TF, FARGS, _29, 29) _PP_APPLY(TF, FARGS, _30, 30) _PP_APPLY(TF, FARGS, _31, 31) _PP_APPLY(TF, FARGS, _32, 32) _PP_APPLY(TF, FARGS, _33, 33) _PP_APPLY(TF, FARGS, _34, 34) _PP_APPLY(TF, FARGS, _35, 35) _PP_APPLY(TF, FARGS, _36, 36) _PP_APPLY(TF, FARGS, _37, 37) _PP_APPLY(TF, FARGS, _38, 38) _PP_APPLY(TF, FARGS, _39, 39) _PP_APPLY(TF, FARGS, _40, 40) _PP_APPLY(TF, FARGS, _41, 41) _PP_APPLY(TF, FARGS, _42, 42) _PP_APPLY(TF, FARGS, _43, 43) _PP_APPLY(TF, FARGS, _44, 44) _PP_APPLY(TF, FARGS, _45, 45) _PP_APPLY(TF, FARGS, _46, 46) _PP_APPLY(TF, FARGS, _47, 47) _PP_APPLY(TF, FARGS, _48, 48) _PP_APPLY(TF, FARGS, _49, 49) _PP_APPLY(TF, FARGS, _50, 50) _PP_APPLY(TF, FARGS, _51, 51) _PP_APPLY(TF, FARGS, _52, 52) _PP_APPLY(TF, FARGS, _53, 53) _PP_APPLY(TF, FARGS, _54, 54) _PP_APPLY(TF, FARGS, _55, 55) _PP_APPLY(TF, FARGS, _56, 56) _PP_APPLY(TF, FARGS, _57, 57) _PP_APPLY(TF, FARGS, _58, 58) _PP_APPLY(TF, FARGS, _59, 59) _PP_APPLY(TF, FARGS, _60, 60) _PP_APPLY(TF, FARGS, _61, 61) _PP_APPLY(TF, FARGS, _62, 62) _PP_APPLY(TF, FARGS, _63, 63)) + #define PP_PAR_EACH_IDX(TF, FARGS, ...) EVAL(_PP_PAR_EACH_IDX_DEFER(TF, FARGS, (PP_SEQ_N()), __VA_ARGS__)) + + #define _PP_PAR_EACH_IDX_DEFER(TF, FARGS, VA_INDICES, ...) \ + IF ( NOT_EMPTY( __VA_ARGS__ ) ) \ + ( \ + DEFER2(TF) (OPT_DEPAREN(FARGS), OPT_DEPAREN(HEAD(__VA_ARGS__)), DEFER(HEAD)(DEPAREN(VA_INDICES))) \ + DEFER2 ( __PP_PAR_EACH_IDX_DEFER ) () (TF, FARGS, (TAIL VA_INDICES), TAIL(__VA_ARGS__)) \ + ) + + #define __PP_PAR_EACH_IDX_DEFER() _PP_PAR_EACH_IDX_DEFER #endif //PP_PAR_EACH_IDX diff --git a/test/c_test_iterators.h b/test/c_test_iterators.h new file mode 100644 index 0000000..3593e95 --- /dev/null +++ b/test/c_test_iterators.h @@ -0,0 +1,6 @@ +//VA_ARG based iteration macros for c_test_framework.h + +#define RUN_INDEXED_TEST(SUITE, TEST_COUNT, TESTNAME, IDX) do { printf(" Running (%d/%d) %s.%s: \n", IDX+1, TEST_COUNT, #SUITE, #TESTNAME); setup(); TESTNAME(); printf(" SUCCESS\n"); } while (0); \ + + +#define RUN_TESTS(SUITE, ...) PP_2PAR_EACH_IDX(RUN_INDEXED_TEST, SUITE, PP_NARG(__VA_ARGS__), __VA_ARGS__) diff --git a/test/fff_test_c.c b/test/fff_test_c.c index 2c11475..f35fd6f 100644 --- a/test/fff_test_c.c +++ b/test/fff_test_c.c @@ -8,21 +8,12 @@ #include "../fff.h" #include "c_test_framework.h" +#include "c_test_iterators.h" #include #include #include -// Could move this into c_test_framework.h, but it uses the PP iteration macros from fff.h.... -#define RUN_INDEXED_TEST(SUITE, TEST_COUNT, TESTNAME, IDX) do { printf(" Running (%d/%d) %s.%s: \n", IDX+1, TEST_COUNT, #SUITE, #TESTNAME); setup(); TESTNAME(); printf(" SUCCESS\n"); } while (0); \ - - -/* #define RUN_TESTS(SUITE, ...) PP_2PAR_EACH_IDX(RUN_INDEXED_TEST, SUITE, PP_NARG(__VA_ARGS__), __VA_ARGS__) */ -//Temporary hack to diagnose MSVC issues.... -#define RUN_TEST(TESTNAME) do { printf(" Running %s: \n", #TESTNAME); setup(); TESTNAME(); printf(" SUCCESS\n"); } while (0); \ - -#define RUN_TESTS(SUITE, ...) PP_EACH(RUN_TEST, __VA_ARGS__) - enum MYBOOL { FALSE = 899, TRUE }; struct MyStruct { int x; diff --git a/test/fff_test_global_c.c b/test/fff_test_global_c.c index 0bb9d72..96bb38b 100644 --- a/test/fff_test_global_c.c +++ b/test/fff_test_global_c.c @@ -1,15 +1,10 @@ #include "global_fakes.h" #include "c_test_framework.h" - +#include "c_test_iterators.h" DEFINE_FFF_GLOBALS; -// Could move this into c_test_framework.h, but it uses the PP iteration macros from fff.h.... -#define RUN_INDEXED_TEST(SUITE, TEST_COUNT, TESTNAME, IDX) do { printf(" Running (%d/%d) %s.%s: \n", IDX+1, TEST_COUNT, #SUITE, #TESTNAME); setup(); TESTNAME(); printf(" SUCCESS\n"); } while (0); \ - - -#define RUN_TESTS(SUITE, ...) PP_2PAR_EACH_IDX(RUN_INDEXED_TEST, SUITE, PP_NARG(__VA_ARGS__), __VA_ARGS__) #include "test_cases_assertions_setup.include" From a64e0a6867b5c8c8dab4f6b7bc4d49723eb2df2a Mon Sep 17 00:00:00 2001 From: Cormac Cannon Date: Tue, 9 Aug 2022 12:32:20 +0100 Subject: [PATCH 15/15] Reformatted _FFF_VERIFY_ANY_CALL macro Formatting had been garbled. No syntax change / changed type of verified from into to bool... --- fff.h | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/fff.h b/fff.h index d9ea4ae..0ef226d 100644 --- a/fff.h +++ b/fff.h @@ -126,10 +126,10 @@ SOFTWARE. #ifdef __cplusplus #define FFF_EXTERN_C extern "C"{ - #define FFF_END_EXTERN_C } + #define FFF_END_EXTERN_C } #else /* ansi c */ - #define FFF_EXTERN_C - #define FFF_END_EXTERN_C + #define FFF_EXTERN_C + #define FFF_END_EXTERN_C #endif /* cpp/ansi c */ #define DEFINE_RESET_FUNCTION(FUNCNAME) \ @@ -149,12 +149,21 @@ SOFTWARE. //This uses GCC compound statement expression: //https://gcc.gnu.org/onlinedocs/gcc/Statement-Exprs.html -#define _FFF_VERIFY_ANY_CALL(FN, ...) ({ int verified = 0; int call_idx = FFF_CALLS(FN); while(call_idx && !verified) { verified |= _FFF_VERIFY_NTH_CALL(FN, call_idx, __VA_ARGS__); call_idx--; } verified; }) +#define _FFF_VERIFY_ANY_CALL(FN, ...) \ + ({ \ + bool verified = false; \ + int call_idx = FFF_CALLS(FN); \ + while (call_idx && !verified) { \ + verified |= _FFF_VERIFY_NTH_CALL(FN, call_idx, __VA_ARGS__); \ + call_idx--; \ + } \ + verified; \ + }) /* -- END INTERNAL HELPER MACROS -- */ typedef void (*fff_function_t)(void); -typedef struct { +typedef struct { fff_function_t call_history[FFF_CALL_HISTORY_LEN]; unsigned int call_history_idx; } fff_globals_t;