Skip to content

Instantly share code, notes, and snippets.

@in4lio
Last active October 21, 2016 15:46
Show Gist options
  • Save in4lio/9102547 to your computer and use it in GitHub Desktop.
Save in4lio/9102547 to your computer and use it in GitHub Desktop.
Unfolding of C macros
/**
* \file unfold.h (generated by unfold_h.py)
* \brief Unfolding of C macros (up to 255).
* \code
* UNFOLD( 3, T0, T, arg1, arg2 ) --> T0( 0, arg1, arg2 ) T( 1, arg1, arg2 ) T( 2, arg1, arg2 )
* UNFOLD_FROM( 10, 3, T0, T, arg1, arg2 ) --> T0( 10, arg1, arg2 ) T( 11, arg1, arg2 ) T( 12, arg1, arg2 )
* \endcode
* In case of `UNFOLD_FROM`, you must use `__concat_X` in macros (`T`) to concatenate index (`N`), for example:
* \code
* #define T0( N ) BIT_##N
* #define T( N ) | __concat_2( BIT_, N )
* pool = UNFOLD_FROM( 2, 4, T0, T );
* pool = BIT_2 | BIT_3 | BIT_4 | BIT_5;
* \endcode
*/
#ifndef UNFOLD_H
#define UNFOLD_H
#ifndef __concat
#define __concat_2( h, t ) h##t
#define __concat( h, t ) __concat_2( h, t )
#define __concat_3( h, b, t ) h##b##t
#endif
#define o_O( x ) x /* MSVC __VA_ARGS__ bug workaround */
#define UNFOLD( L, T0, T, ... ) o_O( _UNFOLD( L, T0, T, ## __VA_ARGS__ ))
#define _UNFOLD( L, T0, T, ... ) o_O( UNFOLD_##L( T0, T, ## __VA_ARGS__ ))
#define UNFOLD_0( T0, T, ... )
#define UNFOLD_1( T0, T, ... ) o_O( T0( 0, ## __VA_ARGS__ ))
/** \cond */
#define UNFOLD_2( T0, T, ... ) o_O( UNFOLD_1( T0, T, ## __VA_ARGS__ )) o_O( T( 1, ## __VA_ARGS__ ))
#define UNFOLD_3( T0, T, ... ) o_O( UNFOLD_2( T0, T, ## __VA_ARGS__ )) o_O( T( 2, ## __VA_ARGS__ ))
#define UNFOLD_4( T0, T, ... ) o_O( UNFOLD_3( T0, T, ## __VA_ARGS__ )) o_O( T( 3, ## __VA_ARGS__ ))
#define UNFOLD_5( T0, T, ... ) o_O( UNFOLD_4( T0, T, ## __VA_ARGS__ )) o_O( T( 4, ## __VA_ARGS__ ))
#define UNFOLD_6( T0, T, ... ) o_O( UNFOLD_5( T0, T, ## __VA_ARGS__ )) o_O( T( 5, ## __VA_ARGS__ ))
#define UNFOLD_7( T0, T, ... ) o_O( UNFOLD_6( T0, T, ## __VA_ARGS__ )) o_O( T( 6, ## __VA_ARGS__ ))
#define UNFOLD_8( T0, T, ... ) o_O( UNFOLD_7( T0, T, ## __VA_ARGS__ )) o_O( T( 7, ## __VA_ARGS__ ))
#define UNFOLD_9( T0, T, ... ) o_O( UNFOLD_8( T0, T, ## __VA_ARGS__ )) o_O( T( 8, ## __VA_ARGS__ ))
#define UNFOLD_10( T0, T, ... ) o_O( UNFOLD_9( T0, T, ## __VA_ARGS__ )) o_O( T( 9, ## __VA_ARGS__ ))
#define UNFOLD_11( T0, T, ... ) o_O( UNFOLD_10( T0, T, ## __VA_ARGS__ )) o_O( T( 10, ## __VA_ARGS__ ))
#define UNFOLD_12( T0, T, ... ) o_O( UNFOLD_11( T0, T, ## __VA_ARGS__ )) o_O( T( 11, ## __VA_ARGS__ ))
#define UNFOLD_13( T0, T, ... ) o_O( UNFOLD_12( T0, T, ## __VA_ARGS__ )) o_O( T( 12, ## __VA_ARGS__ ))
#define UNFOLD_14( T0, T, ... ) o_O( UNFOLD_13( T0, T, ## __VA_ARGS__ )) o_O( T( 13, ## __VA_ARGS__ ))
#define UNFOLD_15( T0, T, ... ) o_O( UNFOLD_14( T0, T, ## __VA_ARGS__ )) o_O( T( 14, ## __VA_ARGS__ ))
#define UNFOLD_16( T0, T, ... ) o_O( UNFOLD_15( T0, T, ## __VA_ARGS__ )) o_O( T( 15, ## __VA_ARGS__ ))
#define UNFOLD_17( T0, T, ... ) o_O( UNFOLD_16( T0, T, ## __VA_ARGS__ )) o_O( T( 16, ## __VA_ARGS__ ))
#define UNFOLD_18( T0, T, ... ) o_O( UNFOLD_17( T0, T, ## __VA_ARGS__ )) o_O( T( 17, ## __VA_ARGS__ ))
#define UNFOLD_19( T0, T, ... ) o_O( UNFOLD_18( T0, T, ## __VA_ARGS__ )) o_O( T( 18, ## __VA_ARGS__ ))
#define UNFOLD_20( T0, T, ... ) o_O( UNFOLD_19( T0, T, ## __VA_ARGS__ )) o_O( T( 19, ## __VA_ARGS__ ))
#define UNFOLD_21( T0, T, ... ) o_O( UNFOLD_20( T0, T, ## __VA_ARGS__ )) o_O( T( 20, ## __VA_ARGS__ ))
#define UNFOLD_22( T0, T, ... ) o_O( UNFOLD_21( T0, T, ## __VA_ARGS__ )) o_O( T( 21, ## __VA_ARGS__ ))
#define UNFOLD_23( T0, T, ... ) o_O( UNFOLD_22( T0, T, ## __VA_ARGS__ )) o_O( T( 22, ## __VA_ARGS__ ))
#define UNFOLD_24( T0, T, ... ) o_O( UNFOLD_23( T0, T, ## __VA_ARGS__ )) o_O( T( 23, ## __VA_ARGS__ ))
#define UNFOLD_25( T0, T, ... ) o_O( UNFOLD_24( T0, T, ## __VA_ARGS__ )) o_O( T( 24, ## __VA_ARGS__ ))
#define UNFOLD_26( T0, T, ... ) o_O( UNFOLD_25( T0, T, ## __VA_ARGS__ )) o_O( T( 25, ## __VA_ARGS__ ))
#define UNFOLD_27( T0, T, ... ) o_O( UNFOLD_26( T0, T, ## __VA_ARGS__ )) o_O( T( 26, ## __VA_ARGS__ ))
#define UNFOLD_28( T0, T, ... ) o_O( UNFOLD_27( T0, T, ## __VA_ARGS__ )) o_O( T( 27, ## __VA_ARGS__ ))
#define UNFOLD_29( T0, T, ... ) o_O( UNFOLD_28( T0, T, ## __VA_ARGS__ )) o_O( T( 28, ## __VA_ARGS__ ))
#define UNFOLD_30( T0, T, ... ) o_O( UNFOLD_29( T0, T, ## __VA_ARGS__ )) o_O( T( 29, ## __VA_ARGS__ ))
#define UNFOLD_31( T0, T, ... ) o_O( UNFOLD_30( T0, T, ## __VA_ARGS__ )) o_O( T( 30, ## __VA_ARGS__ ))
#define UNFOLD_32( T0, T, ... ) o_O( UNFOLD_31( T0, T, ## __VA_ARGS__ )) o_O( T( 31, ## __VA_ARGS__ ))
#define UNFOLD_33( T0, T, ... ) o_O( UNFOLD_32( T0, T, ## __VA_ARGS__ )) o_O( T( 32, ## __VA_ARGS__ ))
#define UNFOLD_34( T0, T, ... ) o_O( UNFOLD_33( T0, T, ## __VA_ARGS__ )) o_O( T( 33, ## __VA_ARGS__ ))
#define UNFOLD_35( T0, T, ... ) o_O( UNFOLD_34( T0, T, ## __VA_ARGS__ )) o_O( T( 34, ## __VA_ARGS__ ))
#define UNFOLD_36( T0, T, ... ) o_O( UNFOLD_35( T0, T, ## __VA_ARGS__ )) o_O( T( 35, ## __VA_ARGS__ ))
#define UNFOLD_37( T0, T, ... ) o_O( UNFOLD_36( T0, T, ## __VA_ARGS__ )) o_O( T( 36, ## __VA_ARGS__ ))
#define UNFOLD_38( T0, T, ... ) o_O( UNFOLD_37( T0, T, ## __VA_ARGS__ )) o_O( T( 37, ## __VA_ARGS__ ))
#define UNFOLD_39( T0, T, ... ) o_O( UNFOLD_38( T0, T, ## __VA_ARGS__ )) o_O( T( 38, ## __VA_ARGS__ ))
#define UNFOLD_40( T0, T, ... ) o_O( UNFOLD_39( T0, T, ## __VA_ARGS__ )) o_O( T( 39, ## __VA_ARGS__ ))
#define UNFOLD_41( T0, T, ... ) o_O( UNFOLD_40( T0, T, ## __VA_ARGS__ )) o_O( T( 40, ## __VA_ARGS__ ))
#define UNFOLD_42( T0, T, ... ) o_O( UNFOLD_41( T0, T, ## __VA_ARGS__ )) o_O( T( 41, ## __VA_ARGS__ ))
#define UNFOLD_43( T0, T, ... ) o_O( UNFOLD_42( T0, T, ## __VA_ARGS__ )) o_O( T( 42, ## __VA_ARGS__ ))
#define UNFOLD_44( T0, T, ... ) o_O( UNFOLD_43( T0, T, ## __VA_ARGS__ )) o_O( T( 43, ## __VA_ARGS__ ))
#define UNFOLD_45( T0, T, ... ) o_O( UNFOLD_44( T0, T, ## __VA_ARGS__ )) o_O( T( 44, ## __VA_ARGS__ ))
#define UNFOLD_46( T0, T, ... ) o_O( UNFOLD_45( T0, T, ## __VA_ARGS__ )) o_O( T( 45, ## __VA_ARGS__ ))
#define UNFOLD_47( T0, T, ... ) o_O( UNFOLD_46( T0, T, ## __VA_ARGS__ )) o_O( T( 46, ## __VA_ARGS__ ))
#define UNFOLD_48( T0, T, ... ) o_O( UNFOLD_47( T0, T, ## __VA_ARGS__ )) o_O( T( 47, ## __VA_ARGS__ ))
#define UNFOLD_49( T0, T, ... ) o_O( UNFOLD_48( T0, T, ## __VA_ARGS__ )) o_O( T( 48, ## __VA_ARGS__ ))
#define UNFOLD_50( T0, T, ... ) o_O( UNFOLD_49( T0, T, ## __VA_ARGS__ )) o_O( T( 49, ## __VA_ARGS__ ))
#define UNFOLD_51( T0, T, ... ) o_O( UNFOLD_50( T0, T, ## __VA_ARGS__ )) o_O( T( 50, ## __VA_ARGS__ ))
#define UNFOLD_52( T0, T, ... ) o_O( UNFOLD_51( T0, T, ## __VA_ARGS__ )) o_O( T( 51, ## __VA_ARGS__ ))
#define UNFOLD_53( T0, T, ... ) o_O( UNFOLD_52( T0, T, ## __VA_ARGS__ )) o_O( T( 52, ## __VA_ARGS__ ))
#define UNFOLD_54( T0, T, ... ) o_O( UNFOLD_53( T0, T, ## __VA_ARGS__ )) o_O( T( 53, ## __VA_ARGS__ ))
#define UNFOLD_55( T0, T, ... ) o_O( UNFOLD_54( T0, T, ## __VA_ARGS__ )) o_O( T( 54, ## __VA_ARGS__ ))
#define UNFOLD_56( T0, T, ... ) o_O( UNFOLD_55( T0, T, ## __VA_ARGS__ )) o_O( T( 55, ## __VA_ARGS__ ))
#define UNFOLD_57( T0, T, ... ) o_O( UNFOLD_56( T0, T, ## __VA_ARGS__ )) o_O( T( 56, ## __VA_ARGS__ ))
#define UNFOLD_58( T0, T, ... ) o_O( UNFOLD_57( T0, T, ## __VA_ARGS__ )) o_O( T( 57, ## __VA_ARGS__ ))
#define UNFOLD_59( T0, T, ... ) o_O( UNFOLD_58( T0, T, ## __VA_ARGS__ )) o_O( T( 58, ## __VA_ARGS__ ))
#define UNFOLD_60( T0, T, ... ) o_O( UNFOLD_59( T0, T, ## __VA_ARGS__ )) o_O( T( 59, ## __VA_ARGS__ ))
#define UNFOLD_61( T0, T, ... ) o_O( UNFOLD_60( T0, T, ## __VA_ARGS__ )) o_O( T( 60, ## __VA_ARGS__ ))
#define UNFOLD_62( T0, T, ... ) o_O( UNFOLD_61( T0, T, ## __VA_ARGS__ )) o_O( T( 61, ## __VA_ARGS__ ))
#define UNFOLD_63( T0, T, ... ) o_O( UNFOLD_62( T0, T, ## __VA_ARGS__ )) o_O( T( 62, ## __VA_ARGS__ ))
#define UNFOLD_64( T0, T, ... ) o_O( UNFOLD_63( T0, T, ## __VA_ARGS__ )) o_O( T( 63, ## __VA_ARGS__ ))
#define UNFOLD_65( T0, T, ... ) o_O( UNFOLD_64( T0, T, ## __VA_ARGS__ )) o_O( T( 64, ## __VA_ARGS__ ))
#define UNFOLD_66( T0, T, ... ) o_O( UNFOLD_65( T0, T, ## __VA_ARGS__ )) o_O( T( 65, ## __VA_ARGS__ ))
#define UNFOLD_67( T0, T, ... ) o_O( UNFOLD_66( T0, T, ## __VA_ARGS__ )) o_O( T( 66, ## __VA_ARGS__ ))
#define UNFOLD_68( T0, T, ... ) o_O( UNFOLD_67( T0, T, ## __VA_ARGS__ )) o_O( T( 67, ## __VA_ARGS__ ))
#define UNFOLD_69( T0, T, ... ) o_O( UNFOLD_68( T0, T, ## __VA_ARGS__ )) o_O( T( 68, ## __VA_ARGS__ ))
#define UNFOLD_70( T0, T, ... ) o_O( UNFOLD_69( T0, T, ## __VA_ARGS__ )) o_O( T( 69, ## __VA_ARGS__ ))
#define UNFOLD_71( T0, T, ... ) o_O( UNFOLD_70( T0, T, ## __VA_ARGS__ )) o_O( T( 70, ## __VA_ARGS__ ))
#define UNFOLD_72( T0, T, ... ) o_O( UNFOLD_71( T0, T, ## __VA_ARGS__ )) o_O( T( 71, ## __VA_ARGS__ ))
#define UNFOLD_73( T0, T, ... ) o_O( UNFOLD_72( T0, T, ## __VA_ARGS__ )) o_O( T( 72, ## __VA_ARGS__ ))
#define UNFOLD_74( T0, T, ... ) o_O( UNFOLD_73( T0, T, ## __VA_ARGS__ )) o_O( T( 73, ## __VA_ARGS__ ))
#define UNFOLD_75( T0, T, ... ) o_O( UNFOLD_74( T0, T, ## __VA_ARGS__ )) o_O( T( 74, ## __VA_ARGS__ ))
#define UNFOLD_76( T0, T, ... ) o_O( UNFOLD_75( T0, T, ## __VA_ARGS__ )) o_O( T( 75, ## __VA_ARGS__ ))
#define UNFOLD_77( T0, T, ... ) o_O( UNFOLD_76( T0, T, ## __VA_ARGS__ )) o_O( T( 76, ## __VA_ARGS__ ))
#define UNFOLD_78( T0, T, ... ) o_O( UNFOLD_77( T0, T, ## __VA_ARGS__ )) o_O( T( 77, ## __VA_ARGS__ ))
#define UNFOLD_79( T0, T, ... ) o_O( UNFOLD_78( T0, T, ## __VA_ARGS__ )) o_O( T( 78, ## __VA_ARGS__ ))
#define UNFOLD_80( T0, T, ... ) o_O( UNFOLD_79( T0, T, ## __VA_ARGS__ )) o_O( T( 79, ## __VA_ARGS__ ))
#define UNFOLD_81( T0, T, ... ) o_O( UNFOLD_80( T0, T, ## __VA_ARGS__ )) o_O( T( 80, ## __VA_ARGS__ ))
#define UNFOLD_82( T0, T, ... ) o_O( UNFOLD_81( T0, T, ## __VA_ARGS__ )) o_O( T( 81, ## __VA_ARGS__ ))
#define UNFOLD_83( T0, T, ... ) o_O( UNFOLD_82( T0, T, ## __VA_ARGS__ )) o_O( T( 82, ## __VA_ARGS__ ))
#define UNFOLD_84( T0, T, ... ) o_O( UNFOLD_83( T0, T, ## __VA_ARGS__ )) o_O( T( 83, ## __VA_ARGS__ ))
#define UNFOLD_85( T0, T, ... ) o_O( UNFOLD_84( T0, T, ## __VA_ARGS__ )) o_O( T( 84, ## __VA_ARGS__ ))
#define UNFOLD_86( T0, T, ... ) o_O( UNFOLD_85( T0, T, ## __VA_ARGS__ )) o_O( T( 85, ## __VA_ARGS__ ))
#define UNFOLD_87( T0, T, ... ) o_O( UNFOLD_86( T0, T, ## __VA_ARGS__ )) o_O( T( 86, ## __VA_ARGS__ ))
#define UNFOLD_88( T0, T, ... ) o_O( UNFOLD_87( T0, T, ## __VA_ARGS__ )) o_O( T( 87, ## __VA_ARGS__ ))
#define UNFOLD_89( T0, T, ... ) o_O( UNFOLD_88( T0, T, ## __VA_ARGS__ )) o_O( T( 88, ## __VA_ARGS__ ))
#define UNFOLD_90( T0, T, ... ) o_O( UNFOLD_89( T0, T, ## __VA_ARGS__ )) o_O( T( 89, ## __VA_ARGS__ ))
#define UNFOLD_91( T0, T, ... ) o_O( UNFOLD_90( T0, T, ## __VA_ARGS__ )) o_O( T( 90, ## __VA_ARGS__ ))
#define UNFOLD_92( T0, T, ... ) o_O( UNFOLD_91( T0, T, ## __VA_ARGS__ )) o_O( T( 91, ## __VA_ARGS__ ))
#define UNFOLD_93( T0, T, ... ) o_O( UNFOLD_92( T0, T, ## __VA_ARGS__ )) o_O( T( 92, ## __VA_ARGS__ ))
#define UNFOLD_94( T0, T, ... ) o_O( UNFOLD_93( T0, T, ## __VA_ARGS__ )) o_O( T( 93, ## __VA_ARGS__ ))
#define UNFOLD_95( T0, T, ... ) o_O( UNFOLD_94( T0, T, ## __VA_ARGS__ )) o_O( T( 94, ## __VA_ARGS__ ))
#define UNFOLD_96( T0, T, ... ) o_O( UNFOLD_95( T0, T, ## __VA_ARGS__ )) o_O( T( 95, ## __VA_ARGS__ ))
#define UNFOLD_97( T0, T, ... ) o_O( UNFOLD_96( T0, T, ## __VA_ARGS__ )) o_O( T( 96, ## __VA_ARGS__ ))
#define UNFOLD_98( T0, T, ... ) o_O( UNFOLD_97( T0, T, ## __VA_ARGS__ )) o_O( T( 97, ## __VA_ARGS__ ))
#define UNFOLD_99( T0, T, ... ) o_O( UNFOLD_98( T0, T, ## __VA_ARGS__ )) o_O( T( 98, ## __VA_ARGS__ ))
#define UNFOLD_100( T0, T, ... ) o_O( UNFOLD_99( T0, T, ## __VA_ARGS__ )) o_O( T( 99, ## __VA_ARGS__ ))
#define UNFOLD_101( T0, T, ... ) o_O( UNFOLD_100( T0, T, ## __VA_ARGS__ )) o_O( T( 100, ## __VA_ARGS__ ))
#define UNFOLD_102( T0, T, ... ) o_O( UNFOLD_101( T0, T, ## __VA_ARGS__ )) o_O( T( 101, ## __VA_ARGS__ ))
#define UNFOLD_103( T0, T, ... ) o_O( UNFOLD_102( T0, T, ## __VA_ARGS__ )) o_O( T( 102, ## __VA_ARGS__ ))
#define UNFOLD_104( T0, T, ... ) o_O( UNFOLD_103( T0, T, ## __VA_ARGS__ )) o_O( T( 103, ## __VA_ARGS__ ))
#define UNFOLD_105( T0, T, ... ) o_O( UNFOLD_104( T0, T, ## __VA_ARGS__ )) o_O( T( 104, ## __VA_ARGS__ ))
#define UNFOLD_106( T0, T, ... ) o_O( UNFOLD_105( T0, T, ## __VA_ARGS__ )) o_O( T( 105, ## __VA_ARGS__ ))
#define UNFOLD_107( T0, T, ... ) o_O( UNFOLD_106( T0, T, ## __VA_ARGS__ )) o_O( T( 106, ## __VA_ARGS__ ))
#define UNFOLD_108( T0, T, ... ) o_O( UNFOLD_107( T0, T, ## __VA_ARGS__ )) o_O( T( 107, ## __VA_ARGS__ ))
#define UNFOLD_109( T0, T, ... ) o_O( UNFOLD_108( T0, T, ## __VA_ARGS__ )) o_O( T( 108, ## __VA_ARGS__ ))
#define UNFOLD_110( T0, T, ... ) o_O( UNFOLD_109( T0, T, ## __VA_ARGS__ )) o_O( T( 109, ## __VA_ARGS__ ))
#define UNFOLD_111( T0, T, ... ) o_O( UNFOLD_110( T0, T, ## __VA_ARGS__ )) o_O( T( 110, ## __VA_ARGS__ ))
#define UNFOLD_112( T0, T, ... ) o_O( UNFOLD_111( T0, T, ## __VA_ARGS__ )) o_O( T( 111, ## __VA_ARGS__ ))
#define UNFOLD_113( T0, T, ... ) o_O( UNFOLD_112( T0, T, ## __VA_ARGS__ )) o_O( T( 112, ## __VA_ARGS__ ))
#define UNFOLD_114( T0, T, ... ) o_O( UNFOLD_113( T0, T, ## __VA_ARGS__ )) o_O( T( 113, ## __VA_ARGS__ ))
#define UNFOLD_115( T0, T, ... ) o_O( UNFOLD_114( T0, T, ## __VA_ARGS__ )) o_O( T( 114, ## __VA_ARGS__ ))
#define UNFOLD_116( T0, T, ... ) o_O( UNFOLD_115( T0, T, ## __VA_ARGS__ )) o_O( T( 115, ## __VA_ARGS__ ))
#define UNFOLD_117( T0, T, ... ) o_O( UNFOLD_116( T0, T, ## __VA_ARGS__ )) o_O( T( 116, ## __VA_ARGS__ ))
#define UNFOLD_118( T0, T, ... ) o_O( UNFOLD_117( T0, T, ## __VA_ARGS__ )) o_O( T( 117, ## __VA_ARGS__ ))
#define UNFOLD_119( T0, T, ... ) o_O( UNFOLD_118( T0, T, ## __VA_ARGS__ )) o_O( T( 118, ## __VA_ARGS__ ))
#define UNFOLD_120( T0, T, ... ) o_O( UNFOLD_119( T0, T, ## __VA_ARGS__ )) o_O( T( 119, ## __VA_ARGS__ ))
#define UNFOLD_121( T0, T, ... ) o_O( UNFOLD_120( T0, T, ## __VA_ARGS__ )) o_O( T( 120, ## __VA_ARGS__ ))
#define UNFOLD_122( T0, T, ... ) o_O( UNFOLD_121( T0, T, ## __VA_ARGS__ )) o_O( T( 121, ## __VA_ARGS__ ))
#define UNFOLD_123( T0, T, ... ) o_O( UNFOLD_122( T0, T, ## __VA_ARGS__ )) o_O( T( 122, ## __VA_ARGS__ ))
#define UNFOLD_124( T0, T, ... ) o_O( UNFOLD_123( T0, T, ## __VA_ARGS__ )) o_O( T( 123, ## __VA_ARGS__ ))
#define UNFOLD_125( T0, T, ... ) o_O( UNFOLD_124( T0, T, ## __VA_ARGS__ )) o_O( T( 124, ## __VA_ARGS__ ))
#define UNFOLD_126( T0, T, ... ) o_O( UNFOLD_125( T0, T, ## __VA_ARGS__ )) o_O( T( 125, ## __VA_ARGS__ ))
#define UNFOLD_127( T0, T, ... ) o_O( UNFOLD_126( T0, T, ## __VA_ARGS__ )) o_O( T( 126, ## __VA_ARGS__ ))
#define UNFOLD_128( T0, T, ... ) o_O( UNFOLD_127( T0, T, ## __VA_ARGS__ )) o_O( T( 127, ## __VA_ARGS__ ))
#define UNFOLD_129( T0, T, ... ) o_O( UNFOLD_128( T0, T, ## __VA_ARGS__ )) o_O( T( 128, ## __VA_ARGS__ ))
#define UNFOLD_130( T0, T, ... ) o_O( UNFOLD_129( T0, T, ## __VA_ARGS__ )) o_O( T( 129, ## __VA_ARGS__ ))
#define UNFOLD_131( T0, T, ... ) o_O( UNFOLD_130( T0, T, ## __VA_ARGS__ )) o_O( T( 130, ## __VA_ARGS__ ))
#define UNFOLD_132( T0, T, ... ) o_O( UNFOLD_131( T0, T, ## __VA_ARGS__ )) o_O( T( 131, ## __VA_ARGS__ ))
#define UNFOLD_133( T0, T, ... ) o_O( UNFOLD_132( T0, T, ## __VA_ARGS__ )) o_O( T( 132, ## __VA_ARGS__ ))
#define UNFOLD_134( T0, T, ... ) o_O( UNFOLD_133( T0, T, ## __VA_ARGS__ )) o_O( T( 133, ## __VA_ARGS__ ))
#define UNFOLD_135( T0, T, ... ) o_O( UNFOLD_134( T0, T, ## __VA_ARGS__ )) o_O( T( 134, ## __VA_ARGS__ ))
#define UNFOLD_136( T0, T, ... ) o_O( UNFOLD_135( T0, T, ## __VA_ARGS__ )) o_O( T( 135, ## __VA_ARGS__ ))
#define UNFOLD_137( T0, T, ... ) o_O( UNFOLD_136( T0, T, ## __VA_ARGS__ )) o_O( T( 136, ## __VA_ARGS__ ))
#define UNFOLD_138( T0, T, ... ) o_O( UNFOLD_137( T0, T, ## __VA_ARGS__ )) o_O( T( 137, ## __VA_ARGS__ ))
#define UNFOLD_139( T0, T, ... ) o_O( UNFOLD_138( T0, T, ## __VA_ARGS__ )) o_O( T( 138, ## __VA_ARGS__ ))
#define UNFOLD_140( T0, T, ... ) o_O( UNFOLD_139( T0, T, ## __VA_ARGS__ )) o_O( T( 139, ## __VA_ARGS__ ))
#define UNFOLD_141( T0, T, ... ) o_O( UNFOLD_140( T0, T, ## __VA_ARGS__ )) o_O( T( 140, ## __VA_ARGS__ ))
#define UNFOLD_142( T0, T, ... ) o_O( UNFOLD_141( T0, T, ## __VA_ARGS__ )) o_O( T( 141, ## __VA_ARGS__ ))
#define UNFOLD_143( T0, T, ... ) o_O( UNFOLD_142( T0, T, ## __VA_ARGS__ )) o_O( T( 142, ## __VA_ARGS__ ))
#define UNFOLD_144( T0, T, ... ) o_O( UNFOLD_143( T0, T, ## __VA_ARGS__ )) o_O( T( 143, ## __VA_ARGS__ ))
#define UNFOLD_145( T0, T, ... ) o_O( UNFOLD_144( T0, T, ## __VA_ARGS__ )) o_O( T( 144, ## __VA_ARGS__ ))
#define UNFOLD_146( T0, T, ... ) o_O( UNFOLD_145( T0, T, ## __VA_ARGS__ )) o_O( T( 145, ## __VA_ARGS__ ))
#define UNFOLD_147( T0, T, ... ) o_O( UNFOLD_146( T0, T, ## __VA_ARGS__ )) o_O( T( 146, ## __VA_ARGS__ ))
#define UNFOLD_148( T0, T, ... ) o_O( UNFOLD_147( T0, T, ## __VA_ARGS__ )) o_O( T( 147, ## __VA_ARGS__ ))
#define UNFOLD_149( T0, T, ... ) o_O( UNFOLD_148( T0, T, ## __VA_ARGS__ )) o_O( T( 148, ## __VA_ARGS__ ))
#define UNFOLD_150( T0, T, ... ) o_O( UNFOLD_149( T0, T, ## __VA_ARGS__ )) o_O( T( 149, ## __VA_ARGS__ ))
#define UNFOLD_151( T0, T, ... ) o_O( UNFOLD_150( T0, T, ## __VA_ARGS__ )) o_O( T( 150, ## __VA_ARGS__ ))
#define UNFOLD_152( T0, T, ... ) o_O( UNFOLD_151( T0, T, ## __VA_ARGS__ )) o_O( T( 151, ## __VA_ARGS__ ))
#define UNFOLD_153( T0, T, ... ) o_O( UNFOLD_152( T0, T, ## __VA_ARGS__ )) o_O( T( 152, ## __VA_ARGS__ ))
#define UNFOLD_154( T0, T, ... ) o_O( UNFOLD_153( T0, T, ## __VA_ARGS__ )) o_O( T( 153, ## __VA_ARGS__ ))
#define UNFOLD_155( T0, T, ... ) o_O( UNFOLD_154( T0, T, ## __VA_ARGS__ )) o_O( T( 154, ## __VA_ARGS__ ))
#define UNFOLD_156( T0, T, ... ) o_O( UNFOLD_155( T0, T, ## __VA_ARGS__ )) o_O( T( 155, ## __VA_ARGS__ ))
#define UNFOLD_157( T0, T, ... ) o_O( UNFOLD_156( T0, T, ## __VA_ARGS__ )) o_O( T( 156, ## __VA_ARGS__ ))
#define UNFOLD_158( T0, T, ... ) o_O( UNFOLD_157( T0, T, ## __VA_ARGS__ )) o_O( T( 157, ## __VA_ARGS__ ))
#define UNFOLD_159( T0, T, ... ) o_O( UNFOLD_158( T0, T, ## __VA_ARGS__ )) o_O( T( 158, ## __VA_ARGS__ ))
#define UNFOLD_160( T0, T, ... ) o_O( UNFOLD_159( T0, T, ## __VA_ARGS__ )) o_O( T( 159, ## __VA_ARGS__ ))
#define UNFOLD_161( T0, T, ... ) o_O( UNFOLD_160( T0, T, ## __VA_ARGS__ )) o_O( T( 160, ## __VA_ARGS__ ))
#define UNFOLD_162( T0, T, ... ) o_O( UNFOLD_161( T0, T, ## __VA_ARGS__ )) o_O( T( 161, ## __VA_ARGS__ ))
#define UNFOLD_163( T0, T, ... ) o_O( UNFOLD_162( T0, T, ## __VA_ARGS__ )) o_O( T( 162, ## __VA_ARGS__ ))
#define UNFOLD_164( T0, T, ... ) o_O( UNFOLD_163( T0, T, ## __VA_ARGS__ )) o_O( T( 163, ## __VA_ARGS__ ))
#define UNFOLD_165( T0, T, ... ) o_O( UNFOLD_164( T0, T, ## __VA_ARGS__ )) o_O( T( 164, ## __VA_ARGS__ ))
#define UNFOLD_166( T0, T, ... ) o_O( UNFOLD_165( T0, T, ## __VA_ARGS__ )) o_O( T( 165, ## __VA_ARGS__ ))
#define UNFOLD_167( T0, T, ... ) o_O( UNFOLD_166( T0, T, ## __VA_ARGS__ )) o_O( T( 166, ## __VA_ARGS__ ))
#define UNFOLD_168( T0, T, ... ) o_O( UNFOLD_167( T0, T, ## __VA_ARGS__ )) o_O( T( 167, ## __VA_ARGS__ ))
#define UNFOLD_169( T0, T, ... ) o_O( UNFOLD_168( T0, T, ## __VA_ARGS__ )) o_O( T( 168, ## __VA_ARGS__ ))
#define UNFOLD_170( T0, T, ... ) o_O( UNFOLD_169( T0, T, ## __VA_ARGS__ )) o_O( T( 169, ## __VA_ARGS__ ))
#define UNFOLD_171( T0, T, ... ) o_O( UNFOLD_170( T0, T, ## __VA_ARGS__ )) o_O( T( 170, ## __VA_ARGS__ ))
#define UNFOLD_172( T0, T, ... ) o_O( UNFOLD_171( T0, T, ## __VA_ARGS__ )) o_O( T( 171, ## __VA_ARGS__ ))
#define UNFOLD_173( T0, T, ... ) o_O( UNFOLD_172( T0, T, ## __VA_ARGS__ )) o_O( T( 172, ## __VA_ARGS__ ))
#define UNFOLD_174( T0, T, ... ) o_O( UNFOLD_173( T0, T, ## __VA_ARGS__ )) o_O( T( 173, ## __VA_ARGS__ ))
#define UNFOLD_175( T0, T, ... ) o_O( UNFOLD_174( T0, T, ## __VA_ARGS__ )) o_O( T( 174, ## __VA_ARGS__ ))
#define UNFOLD_176( T0, T, ... ) o_O( UNFOLD_175( T0, T, ## __VA_ARGS__ )) o_O( T( 175, ## __VA_ARGS__ ))
#define UNFOLD_177( T0, T, ... ) o_O( UNFOLD_176( T0, T, ## __VA_ARGS__ )) o_O( T( 176, ## __VA_ARGS__ ))
#define UNFOLD_178( T0, T, ... ) o_O( UNFOLD_177( T0, T, ## __VA_ARGS__ )) o_O( T( 177, ## __VA_ARGS__ ))
#define UNFOLD_179( T0, T, ... ) o_O( UNFOLD_178( T0, T, ## __VA_ARGS__ )) o_O( T( 178, ## __VA_ARGS__ ))
#define UNFOLD_180( T0, T, ... ) o_O( UNFOLD_179( T0, T, ## __VA_ARGS__ )) o_O( T( 179, ## __VA_ARGS__ ))
#define UNFOLD_181( T0, T, ... ) o_O( UNFOLD_180( T0, T, ## __VA_ARGS__ )) o_O( T( 180, ## __VA_ARGS__ ))
#define UNFOLD_182( T0, T, ... ) o_O( UNFOLD_181( T0, T, ## __VA_ARGS__ )) o_O( T( 181, ## __VA_ARGS__ ))
#define UNFOLD_183( T0, T, ... ) o_O( UNFOLD_182( T0, T, ## __VA_ARGS__ )) o_O( T( 182, ## __VA_ARGS__ ))
#define UNFOLD_184( T0, T, ... ) o_O( UNFOLD_183( T0, T, ## __VA_ARGS__ )) o_O( T( 183, ## __VA_ARGS__ ))
#define UNFOLD_185( T0, T, ... ) o_O( UNFOLD_184( T0, T, ## __VA_ARGS__ )) o_O( T( 184, ## __VA_ARGS__ ))
#define UNFOLD_186( T0, T, ... ) o_O( UNFOLD_185( T0, T, ## __VA_ARGS__ )) o_O( T( 185, ## __VA_ARGS__ ))
#define UNFOLD_187( T0, T, ... ) o_O( UNFOLD_186( T0, T, ## __VA_ARGS__ )) o_O( T( 186, ## __VA_ARGS__ ))
#define UNFOLD_188( T0, T, ... ) o_O( UNFOLD_187( T0, T, ## __VA_ARGS__ )) o_O( T( 187, ## __VA_ARGS__ ))
#define UNFOLD_189( T0, T, ... ) o_O( UNFOLD_188( T0, T, ## __VA_ARGS__ )) o_O( T( 188, ## __VA_ARGS__ ))
#define UNFOLD_190( T0, T, ... ) o_O( UNFOLD_189( T0, T, ## __VA_ARGS__ )) o_O( T( 189, ## __VA_ARGS__ ))
#define UNFOLD_191( T0, T, ... ) o_O( UNFOLD_190( T0, T, ## __VA_ARGS__ )) o_O( T( 190, ## __VA_ARGS__ ))
#define UNFOLD_192( T0, T, ... ) o_O( UNFOLD_191( T0, T, ## __VA_ARGS__ )) o_O( T( 191, ## __VA_ARGS__ ))
#define UNFOLD_193( T0, T, ... ) o_O( UNFOLD_192( T0, T, ## __VA_ARGS__ )) o_O( T( 192, ## __VA_ARGS__ ))
#define UNFOLD_194( T0, T, ... ) o_O( UNFOLD_193( T0, T, ## __VA_ARGS__ )) o_O( T( 193, ## __VA_ARGS__ ))
#define UNFOLD_195( T0, T, ... ) o_O( UNFOLD_194( T0, T, ## __VA_ARGS__ )) o_O( T( 194, ## __VA_ARGS__ ))
#define UNFOLD_196( T0, T, ... ) o_O( UNFOLD_195( T0, T, ## __VA_ARGS__ )) o_O( T( 195, ## __VA_ARGS__ ))
#define UNFOLD_197( T0, T, ... ) o_O( UNFOLD_196( T0, T, ## __VA_ARGS__ )) o_O( T( 196, ## __VA_ARGS__ ))
#define UNFOLD_198( T0, T, ... ) o_O( UNFOLD_197( T0, T, ## __VA_ARGS__ )) o_O( T( 197, ## __VA_ARGS__ ))
#define UNFOLD_199( T0, T, ... ) o_O( UNFOLD_198( T0, T, ## __VA_ARGS__ )) o_O( T( 198, ## __VA_ARGS__ ))
#define UNFOLD_200( T0, T, ... ) o_O( UNFOLD_199( T0, T, ## __VA_ARGS__ )) o_O( T( 199, ## __VA_ARGS__ ))
#define UNFOLD_201( T0, T, ... ) o_O( UNFOLD_200( T0, T, ## __VA_ARGS__ )) o_O( T( 200, ## __VA_ARGS__ ))
#define UNFOLD_202( T0, T, ... ) o_O( UNFOLD_201( T0, T, ## __VA_ARGS__ )) o_O( T( 201, ## __VA_ARGS__ ))
#define UNFOLD_203( T0, T, ... ) o_O( UNFOLD_202( T0, T, ## __VA_ARGS__ )) o_O( T( 202, ## __VA_ARGS__ ))
#define UNFOLD_204( T0, T, ... ) o_O( UNFOLD_203( T0, T, ## __VA_ARGS__ )) o_O( T( 203, ## __VA_ARGS__ ))
#define UNFOLD_205( T0, T, ... ) o_O( UNFOLD_204( T0, T, ## __VA_ARGS__ )) o_O( T( 204, ## __VA_ARGS__ ))
#define UNFOLD_206( T0, T, ... ) o_O( UNFOLD_205( T0, T, ## __VA_ARGS__ )) o_O( T( 205, ## __VA_ARGS__ ))
#define UNFOLD_207( T0, T, ... ) o_O( UNFOLD_206( T0, T, ## __VA_ARGS__ )) o_O( T( 206, ## __VA_ARGS__ ))
#define UNFOLD_208( T0, T, ... ) o_O( UNFOLD_207( T0, T, ## __VA_ARGS__ )) o_O( T( 207, ## __VA_ARGS__ ))
#define UNFOLD_209( T0, T, ... ) o_O( UNFOLD_208( T0, T, ## __VA_ARGS__ )) o_O( T( 208, ## __VA_ARGS__ ))
#define UNFOLD_210( T0, T, ... ) o_O( UNFOLD_209( T0, T, ## __VA_ARGS__ )) o_O( T( 209, ## __VA_ARGS__ ))
#define UNFOLD_211( T0, T, ... ) o_O( UNFOLD_210( T0, T, ## __VA_ARGS__ )) o_O( T( 210, ## __VA_ARGS__ ))
#define UNFOLD_212( T0, T, ... ) o_O( UNFOLD_211( T0, T, ## __VA_ARGS__ )) o_O( T( 211, ## __VA_ARGS__ ))
#define UNFOLD_213( T0, T, ... ) o_O( UNFOLD_212( T0, T, ## __VA_ARGS__ )) o_O( T( 212, ## __VA_ARGS__ ))
#define UNFOLD_214( T0, T, ... ) o_O( UNFOLD_213( T0, T, ## __VA_ARGS__ )) o_O( T( 213, ## __VA_ARGS__ ))
#define UNFOLD_215( T0, T, ... ) o_O( UNFOLD_214( T0, T, ## __VA_ARGS__ )) o_O( T( 214, ## __VA_ARGS__ ))
#define UNFOLD_216( T0, T, ... ) o_O( UNFOLD_215( T0, T, ## __VA_ARGS__ )) o_O( T( 215, ## __VA_ARGS__ ))
#define UNFOLD_217( T0, T, ... ) o_O( UNFOLD_216( T0, T, ## __VA_ARGS__ )) o_O( T( 216, ## __VA_ARGS__ ))
#define UNFOLD_218( T0, T, ... ) o_O( UNFOLD_217( T0, T, ## __VA_ARGS__ )) o_O( T( 217, ## __VA_ARGS__ ))
#define UNFOLD_219( T0, T, ... ) o_O( UNFOLD_218( T0, T, ## __VA_ARGS__ )) o_O( T( 218, ## __VA_ARGS__ ))
#define UNFOLD_220( T0, T, ... ) o_O( UNFOLD_219( T0, T, ## __VA_ARGS__ )) o_O( T( 219, ## __VA_ARGS__ ))
#define UNFOLD_221( T0, T, ... ) o_O( UNFOLD_220( T0, T, ## __VA_ARGS__ )) o_O( T( 220, ## __VA_ARGS__ ))
#define UNFOLD_222( T0, T, ... ) o_O( UNFOLD_221( T0, T, ## __VA_ARGS__ )) o_O( T( 221, ## __VA_ARGS__ ))
#define UNFOLD_223( T0, T, ... ) o_O( UNFOLD_222( T0, T, ## __VA_ARGS__ )) o_O( T( 222, ## __VA_ARGS__ ))
#define UNFOLD_224( T0, T, ... ) o_O( UNFOLD_223( T0, T, ## __VA_ARGS__ )) o_O( T( 223, ## __VA_ARGS__ ))
#define UNFOLD_225( T0, T, ... ) o_O( UNFOLD_224( T0, T, ## __VA_ARGS__ )) o_O( T( 224, ## __VA_ARGS__ ))
#define UNFOLD_226( T0, T, ... ) o_O( UNFOLD_225( T0, T, ## __VA_ARGS__ )) o_O( T( 225, ## __VA_ARGS__ ))
#define UNFOLD_227( T0, T, ... ) o_O( UNFOLD_226( T0, T, ## __VA_ARGS__ )) o_O( T( 226, ## __VA_ARGS__ ))
#define UNFOLD_228( T0, T, ... ) o_O( UNFOLD_227( T0, T, ## __VA_ARGS__ )) o_O( T( 227, ## __VA_ARGS__ ))
#define UNFOLD_229( T0, T, ... ) o_O( UNFOLD_228( T0, T, ## __VA_ARGS__ )) o_O( T( 228, ## __VA_ARGS__ ))
#define UNFOLD_230( T0, T, ... ) o_O( UNFOLD_229( T0, T, ## __VA_ARGS__ )) o_O( T( 229, ## __VA_ARGS__ ))
#define UNFOLD_231( T0, T, ... ) o_O( UNFOLD_230( T0, T, ## __VA_ARGS__ )) o_O( T( 230, ## __VA_ARGS__ ))
#define UNFOLD_232( T0, T, ... ) o_O( UNFOLD_231( T0, T, ## __VA_ARGS__ )) o_O( T( 231, ## __VA_ARGS__ ))
#define UNFOLD_233( T0, T, ... ) o_O( UNFOLD_232( T0, T, ## __VA_ARGS__ )) o_O( T( 232, ## __VA_ARGS__ ))
#define UNFOLD_234( T0, T, ... ) o_O( UNFOLD_233( T0, T, ## __VA_ARGS__ )) o_O( T( 233, ## __VA_ARGS__ ))
#define UNFOLD_235( T0, T, ... ) o_O( UNFOLD_234( T0, T, ## __VA_ARGS__ )) o_O( T( 234, ## __VA_ARGS__ ))
#define UNFOLD_236( T0, T, ... ) o_O( UNFOLD_235( T0, T, ## __VA_ARGS__ )) o_O( T( 235, ## __VA_ARGS__ ))
#define UNFOLD_237( T0, T, ... ) o_O( UNFOLD_236( T0, T, ## __VA_ARGS__ )) o_O( T( 236, ## __VA_ARGS__ ))
#define UNFOLD_238( T0, T, ... ) o_O( UNFOLD_237( T0, T, ## __VA_ARGS__ )) o_O( T( 237, ## __VA_ARGS__ ))
#define UNFOLD_239( T0, T, ... ) o_O( UNFOLD_238( T0, T, ## __VA_ARGS__ )) o_O( T( 238, ## __VA_ARGS__ ))
#define UNFOLD_240( T0, T, ... ) o_O( UNFOLD_239( T0, T, ## __VA_ARGS__ )) o_O( T( 239, ## __VA_ARGS__ ))
#define UNFOLD_241( T0, T, ... ) o_O( UNFOLD_240( T0, T, ## __VA_ARGS__ )) o_O( T( 240, ## __VA_ARGS__ ))
#define UNFOLD_242( T0, T, ... ) o_O( UNFOLD_241( T0, T, ## __VA_ARGS__ )) o_O( T( 241, ## __VA_ARGS__ ))
#define UNFOLD_243( T0, T, ... ) o_O( UNFOLD_242( T0, T, ## __VA_ARGS__ )) o_O( T( 242, ## __VA_ARGS__ ))
#define UNFOLD_244( T0, T, ... ) o_O( UNFOLD_243( T0, T, ## __VA_ARGS__ )) o_O( T( 243, ## __VA_ARGS__ ))
#define UNFOLD_245( T0, T, ... ) o_O( UNFOLD_244( T0, T, ## __VA_ARGS__ )) o_O( T( 244, ## __VA_ARGS__ ))
#define UNFOLD_246( T0, T, ... ) o_O( UNFOLD_245( T0, T, ## __VA_ARGS__ )) o_O( T( 245, ## __VA_ARGS__ ))
#define UNFOLD_247( T0, T, ... ) o_O( UNFOLD_246( T0, T, ## __VA_ARGS__ )) o_O( T( 246, ## __VA_ARGS__ ))
#define UNFOLD_248( T0, T, ... ) o_O( UNFOLD_247( T0, T, ## __VA_ARGS__ )) o_O( T( 247, ## __VA_ARGS__ ))
#define UNFOLD_249( T0, T, ... ) o_O( UNFOLD_248( T0, T, ## __VA_ARGS__ )) o_O( T( 248, ## __VA_ARGS__ ))
#define UNFOLD_250( T0, T, ... ) o_O( UNFOLD_249( T0, T, ## __VA_ARGS__ )) o_O( T( 249, ## __VA_ARGS__ ))
#define UNFOLD_251( T0, T, ... ) o_O( UNFOLD_250( T0, T, ## __VA_ARGS__ )) o_O( T( 250, ## __VA_ARGS__ ))
#define UNFOLD_252( T0, T, ... ) o_O( UNFOLD_251( T0, T, ## __VA_ARGS__ )) o_O( T( 251, ## __VA_ARGS__ ))
#define UNFOLD_253( T0, T, ... ) o_O( UNFOLD_252( T0, T, ## __VA_ARGS__ )) o_O( T( 252, ## __VA_ARGS__ ))
#define UNFOLD_254( T0, T, ... ) o_O( UNFOLD_253( T0, T, ## __VA_ARGS__ )) o_O( T( 253, ## __VA_ARGS__ ))
#define UNFOLD_255( T0, T, ... ) o_O( UNFOLD_254( T0, T, ## __VA_ARGS__ )) o_O( T( 254, ## __VA_ARGS__ ))
/** \endcond */
#define _INC( N ) INC_##N
/** \cond */
#define INC_0 1
#define INC_1 2
#define INC_2 3
#define INC_3 4
#define INC_4 5
#define INC_5 6
#define INC_6 7
#define INC_7 8
#define INC_8 9
#define INC_9 10
#define INC_10 11
#define INC_11 12
#define INC_12 13
#define INC_13 14
#define INC_14 15
#define INC_15 16
#define INC_16 17
#define INC_17 18
#define INC_18 19
#define INC_19 20
#define INC_20 21
#define INC_21 22
#define INC_22 23
#define INC_23 24
#define INC_24 25
#define INC_25 26
#define INC_26 27
#define INC_27 28
#define INC_28 29
#define INC_29 30
#define INC_30 31
#define INC_31 32
#define INC_32 33
#define INC_33 34
#define INC_34 35
#define INC_35 36
#define INC_36 37
#define INC_37 38
#define INC_38 39
#define INC_39 40
#define INC_40 41
#define INC_41 42
#define INC_42 43
#define INC_43 44
#define INC_44 45
#define INC_45 46
#define INC_46 47
#define INC_47 48
#define INC_48 49
#define INC_49 50
#define INC_50 51
#define INC_51 52
#define INC_52 53
#define INC_53 54
#define INC_54 55
#define INC_55 56
#define INC_56 57
#define INC_57 58
#define INC_58 59
#define INC_59 60
#define INC_60 61
#define INC_61 62
#define INC_62 63
#define INC_63 64
#define INC_64 65
#define INC_65 66
#define INC_66 67
#define INC_67 68
#define INC_68 69
#define INC_69 70
#define INC_70 71
#define INC_71 72
#define INC_72 73
#define INC_73 74
#define INC_74 75
#define INC_75 76
#define INC_76 77
#define INC_77 78
#define INC_78 79
#define INC_79 80
#define INC_80 81
#define INC_81 82
#define INC_82 83
#define INC_83 84
#define INC_84 85
#define INC_85 86
#define INC_86 87
#define INC_87 88
#define INC_88 89
#define INC_89 90
#define INC_90 91
#define INC_91 92
#define INC_92 93
#define INC_93 94
#define INC_94 95
#define INC_95 96
#define INC_96 97
#define INC_97 98
#define INC_98 99
#define INC_99 100
#define INC_100 101
#define INC_101 102
#define INC_102 103
#define INC_103 104
#define INC_104 105
#define INC_105 106
#define INC_106 107
#define INC_107 108
#define INC_108 109
#define INC_109 110
#define INC_110 111
#define INC_111 112
#define INC_112 113
#define INC_113 114
#define INC_114 115
#define INC_115 116
#define INC_116 117
#define INC_117 118
#define INC_118 119
#define INC_119 120
#define INC_120 121
#define INC_121 122
#define INC_122 123
#define INC_123 124
#define INC_124 125
#define INC_125 126
#define INC_126 127
#define INC_127 128
#define INC_128 129
#define INC_129 130
#define INC_130 131
#define INC_131 132
#define INC_132 133
#define INC_133 134
#define INC_134 135
#define INC_135 136
#define INC_136 137
#define INC_137 138
#define INC_138 139
#define INC_139 140
#define INC_140 141
#define INC_141 142
#define INC_142 143
#define INC_143 144
#define INC_144 145
#define INC_145 146
#define INC_146 147
#define INC_147 148
#define INC_148 149
#define INC_149 150
#define INC_150 151
#define INC_151 152
#define INC_152 153
#define INC_153 154
#define INC_154 155
#define INC_155 156
#define INC_156 157
#define INC_157 158
#define INC_158 159
#define INC_159 160
#define INC_160 161
#define INC_161 162
#define INC_162 163
#define INC_163 164
#define INC_164 165
#define INC_165 166
#define INC_166 167
#define INC_167 168
#define INC_168 169
#define INC_169 170
#define INC_170 171
#define INC_171 172
#define INC_172 173
#define INC_173 174
#define INC_174 175
#define INC_175 176
#define INC_176 177
#define INC_177 178
#define INC_178 179
#define INC_179 180
#define INC_180 181
#define INC_181 182
#define INC_182 183
#define INC_183 184
#define INC_184 185
#define INC_185 186
#define INC_186 187
#define INC_187 188
#define INC_188 189
#define INC_189 190
#define INC_190 191
#define INC_191 192
#define INC_192 193
#define INC_193 194
#define INC_194 195
#define INC_195 196
#define INC_196 197
#define INC_197 198
#define INC_198 199
#define INC_199 200
#define INC_200 201
#define INC_201 202
#define INC_202 203
#define INC_203 204
#define INC_204 205
#define INC_205 206
#define INC_206 207
#define INC_207 208
#define INC_208 209
#define INC_209 210
#define INC_210 211
#define INC_211 212
#define INC_212 213
#define INC_213 214
#define INC_214 215
#define INC_215 216
#define INC_216 217
#define INC_217 218
#define INC_218 219
#define INC_219 220
#define INC_220 221
#define INC_221 222
#define INC_222 223
#define INC_223 224
#define INC_224 225
#define INC_225 226
#define INC_226 227
#define INC_227 228
#define INC_228 229
#define INC_229 230
#define INC_230 231
#define INC_231 232
#define INC_232 233
#define INC_233 234
#define INC_234 235
#define INC_235 236
#define INC_236 237
#define INC_237 238
#define INC_238 239
#define INC_239 240
#define INC_240 241
#define INC_241 242
#define INC_242 243
#define INC_243 244
#define INC_244 245
#define INC_245 246
#define INC_246 247
#define INC_247 248
#define INC_248 249
#define INC_249 250
#define INC_250 251
#define INC_251 252
#define INC_252 253
#define INC_253 254
#define INC_254 255
#define INC_255 256
#define INC_256 257
#define INC_257 258
#define INC_258 259
#define INC_259 260
#define INC_260 261
#define INC_261 262
#define INC_262 263
#define INC_263 264
#define INC_264 265
#define INC_265 266
#define INC_266 267
#define INC_267 268
#define INC_268 269
#define INC_269 270
#define INC_270 271
#define INC_271 272
#define INC_272 273
#define INC_273 274
#define INC_274 275
#define INC_275 276
#define INC_276 277
#define INC_277 278
#define INC_278 279
#define INC_279 280
#define INC_280 281
#define INC_281 282
#define INC_282 283
#define INC_283 284
#define INC_284 285
#define INC_285 286
#define INC_286 287
#define INC_287 288
#define INC_288 289
#define INC_289 290
#define INC_290 291
#define INC_291 292
#define INC_292 293
#define INC_293 294
#define INC_294 295
#define INC_295 296
#define INC_296 297
#define INC_297 298
#define INC_298 299
#define INC_299 300
#define INC_300 301
#define INC_301 302
#define INC_302 303
#define INC_303 304
#define INC_304 305
#define INC_305 306
#define INC_306 307
#define INC_307 308
#define INC_308 309
#define INC_309 310
#define INC_310 311
#define INC_311 312
#define INC_312 313
#define INC_313 314
#define INC_314 315
#define INC_315 316
#define INC_316 317
#define INC_317 318
#define INC_318 319
#define INC_319 320
#define INC_320 321
#define INC_321 322
#define INC_322 323
#define INC_323 324
#define INC_324 325
#define INC_325 326
#define INC_326 327
#define INC_327 328
#define INC_328 329
#define INC_329 330
#define INC_330 331
#define INC_331 332
#define INC_332 333
#define INC_333 334
#define INC_334 335
#define INC_335 336
#define INC_336 337
#define INC_337 338
#define INC_338 339
#define INC_339 340
#define INC_340 341
#define INC_341 342
#define INC_342 343
#define INC_343 344
#define INC_344 345
#define INC_345 346
#define INC_346 347
#define INC_347 348
#define INC_348 349
#define INC_349 350
#define INC_350 351
#define INC_351 352
#define INC_352 353
#define INC_353 354
#define INC_354 355
#define INC_355 356
#define INC_356 357
#define INC_357 358
#define INC_358 359
#define INC_359 360
#define INC_360 361
#define INC_361 362
#define INC_362 363
#define INC_363 364
#define INC_364 365
#define INC_365 366
#define INC_366 367
#define INC_367 368
#define INC_368 369
#define INC_369 370
#define INC_370 371
#define INC_371 372
#define INC_372 373
#define INC_373 374
#define INC_374 375
#define INC_375 376
#define INC_376 377
#define INC_377 378
#define INC_378 379
#define INC_379 380
#define INC_380 381
#define INC_381 382
#define INC_382 383
#define INC_383 384
#define INC_384 385
#define INC_385 386
#define INC_386 387
#define INC_387 388
#define INC_388 389
#define INC_389 390
#define INC_390 391
#define INC_391 392
#define INC_392 393
#define INC_393 394
#define INC_394 395
#define INC_395 396
#define INC_396 397
#define INC_397 398
#define INC_398 399
#define INC_399 400
#define INC_400 401
#define INC_401 402
#define INC_402 403
#define INC_403 404
#define INC_404 405
#define INC_405 406
#define INC_406 407
#define INC_407 408
#define INC_408 409
#define INC_409 410
#define INC_410 411
#define INC_411 412
#define INC_412 413
#define INC_413 414
#define INC_414 415
#define INC_415 416
#define INC_416 417
#define INC_417 418
#define INC_418 419
#define INC_419 420
#define INC_420 421
#define INC_421 422
#define INC_422 423
#define INC_423 424
#define INC_424 425
#define INC_425 426
#define INC_426 427
#define INC_427 428
#define INC_428 429
#define INC_429 430
#define INC_430 431
#define INC_431 432
#define INC_432 433
#define INC_433 434
#define INC_434 435
#define INC_435 436
#define INC_436 437
#define INC_437 438
#define INC_438 439
#define INC_439 440
#define INC_440 441
#define INC_441 442
#define INC_442 443
#define INC_443 444
#define INC_444 445
#define INC_445 446
#define INC_446 447
#define INC_447 448
#define INC_448 449
#define INC_449 450
#define INC_450 451
#define INC_451 452
#define INC_452 453
#define INC_453 454
#define INC_454 455
#define INC_455 456
#define INC_456 457
#define INC_457 458
#define INC_458 459
#define INC_459 460
#define INC_460 461
#define INC_461 462
#define INC_462 463
#define INC_463 464
#define INC_464 465
#define INC_465 466
#define INC_466 467
#define INC_467 468
#define INC_468 469
#define INC_469 470
#define INC_470 471
#define INC_471 472
#define INC_472 473
#define INC_473 474
#define INC_474 475
#define INC_475 476
#define INC_476 477
#define INC_477 478
#define INC_478 479
#define INC_479 480
#define INC_480 481
#define INC_481 482
#define INC_482 483
#define INC_483 484
#define INC_484 485
#define INC_485 486
#define INC_486 487
#define INC_487 488
#define INC_488 489
#define INC_489 490
#define INC_490 491
#define INC_491 492
#define INC_492 493
#define INC_493 494
#define INC_494 495
#define INC_495 496
#define INC_496 497
#define INC_497 498
#define INC_498 499
#define INC_499 500
#define INC_500 501
#define INC_501 502
#define INC_502 503
#define INC_503 504
#define INC_504 505
#define INC_505 506
#define INC_506 507
#define INC_507 508
#define INC_508 509
#define INC_509 510
#define INC_510 511
#define INC_511 512
/** \endcond */
#define ADD_1( N ) _INC( N )
/** \cond */
#define ADD_2( N ) ADD_1( _INC( N ))
#define ADD_3( N ) ADD_2( _INC( N ))
#define ADD_4( N ) ADD_3( _INC( N ))
#define ADD_5( N ) ADD_4( _INC( N ))
#define ADD_6( N ) ADD_5( _INC( N ))
#define ADD_7( N ) ADD_6( _INC( N ))
#define ADD_8( N ) ADD_7( _INC( N ))
#define ADD_9( N ) ADD_8( _INC( N ))
#define ADD_10( N ) ADD_9( _INC( N ))
#define ADD_11( N ) ADD_10( _INC( N ))
#define ADD_12( N ) ADD_11( _INC( N ))
#define ADD_13( N ) ADD_12( _INC( N ))
#define ADD_14( N ) ADD_13( _INC( N ))
#define ADD_15( N ) ADD_14( _INC( N ))
#define ADD_16( N ) ADD_15( _INC( N ))
#define ADD_17( N ) ADD_16( _INC( N ))
#define ADD_18( N ) ADD_17( _INC( N ))
#define ADD_19( N ) ADD_18( _INC( N ))
#define ADD_20( N ) ADD_19( _INC( N ))
#define ADD_21( N ) ADD_20( _INC( N ))
#define ADD_22( N ) ADD_21( _INC( N ))
#define ADD_23( N ) ADD_22( _INC( N ))
#define ADD_24( N ) ADD_23( _INC( N ))
#define ADD_25( N ) ADD_24( _INC( N ))
#define ADD_26( N ) ADD_25( _INC( N ))
#define ADD_27( N ) ADD_26( _INC( N ))
#define ADD_28( N ) ADD_27( _INC( N ))
#define ADD_29( N ) ADD_28( _INC( N ))
#define ADD_30( N ) ADD_29( _INC( N ))
#define ADD_31( N ) ADD_30( _INC( N ))
#define ADD_32( N ) ADD_31( _INC( N ))
#define ADD_33( N ) ADD_32( _INC( N ))
#define ADD_34( N ) ADD_33( _INC( N ))
#define ADD_35( N ) ADD_34( _INC( N ))
#define ADD_36( N ) ADD_35( _INC( N ))
#define ADD_37( N ) ADD_36( _INC( N ))
#define ADD_38( N ) ADD_37( _INC( N ))
#define ADD_39( N ) ADD_38( _INC( N ))
#define ADD_40( N ) ADD_39( _INC( N ))
#define ADD_41( N ) ADD_40( _INC( N ))
#define ADD_42( N ) ADD_41( _INC( N ))
#define ADD_43( N ) ADD_42( _INC( N ))
#define ADD_44( N ) ADD_43( _INC( N ))
#define ADD_45( N ) ADD_44( _INC( N ))
#define ADD_46( N ) ADD_45( _INC( N ))
#define ADD_47( N ) ADD_46( _INC( N ))
#define ADD_48( N ) ADD_47( _INC( N ))
#define ADD_49( N ) ADD_48( _INC( N ))
#define ADD_50( N ) ADD_49( _INC( N ))
#define ADD_51( N ) ADD_50( _INC( N ))
#define ADD_52( N ) ADD_51( _INC( N ))
#define ADD_53( N ) ADD_52( _INC( N ))
#define ADD_54( N ) ADD_53( _INC( N ))
#define ADD_55( N ) ADD_54( _INC( N ))
#define ADD_56( N ) ADD_55( _INC( N ))
#define ADD_57( N ) ADD_56( _INC( N ))
#define ADD_58( N ) ADD_57( _INC( N ))
#define ADD_59( N ) ADD_58( _INC( N ))
#define ADD_60( N ) ADD_59( _INC( N ))
#define ADD_61( N ) ADD_60( _INC( N ))
#define ADD_62( N ) ADD_61( _INC( N ))
#define ADD_63( N ) ADD_62( _INC( N ))
#define ADD_64( N ) ADD_63( _INC( N ))
#define ADD_65( N ) ADD_64( _INC( N ))
#define ADD_66( N ) ADD_65( _INC( N ))
#define ADD_67( N ) ADD_66( _INC( N ))
#define ADD_68( N ) ADD_67( _INC( N ))
#define ADD_69( N ) ADD_68( _INC( N ))
#define ADD_70( N ) ADD_69( _INC( N ))
#define ADD_71( N ) ADD_70( _INC( N ))
#define ADD_72( N ) ADD_71( _INC( N ))
#define ADD_73( N ) ADD_72( _INC( N ))
#define ADD_74( N ) ADD_73( _INC( N ))
#define ADD_75( N ) ADD_74( _INC( N ))
#define ADD_76( N ) ADD_75( _INC( N ))
#define ADD_77( N ) ADD_76( _INC( N ))
#define ADD_78( N ) ADD_77( _INC( N ))
#define ADD_79( N ) ADD_78( _INC( N ))
#define ADD_80( N ) ADD_79( _INC( N ))
#define ADD_81( N ) ADD_80( _INC( N ))
#define ADD_82( N ) ADD_81( _INC( N ))
#define ADD_83( N ) ADD_82( _INC( N ))
#define ADD_84( N ) ADD_83( _INC( N ))
#define ADD_85( N ) ADD_84( _INC( N ))
#define ADD_86( N ) ADD_85( _INC( N ))
#define ADD_87( N ) ADD_86( _INC( N ))
#define ADD_88( N ) ADD_87( _INC( N ))
#define ADD_89( N ) ADD_88( _INC( N ))
#define ADD_90( N ) ADD_89( _INC( N ))
#define ADD_91( N ) ADD_90( _INC( N ))
#define ADD_92( N ) ADD_91( _INC( N ))
#define ADD_93( N ) ADD_92( _INC( N ))
#define ADD_94( N ) ADD_93( _INC( N ))
#define ADD_95( N ) ADD_94( _INC( N ))
#define ADD_96( N ) ADD_95( _INC( N ))
#define ADD_97( N ) ADD_96( _INC( N ))
#define ADD_98( N ) ADD_97( _INC( N ))
#define ADD_99( N ) ADD_98( _INC( N ))
#define ADD_100( N ) ADD_99( _INC( N ))
#define ADD_101( N ) ADD_100( _INC( N ))
#define ADD_102( N ) ADD_101( _INC( N ))
#define ADD_103( N ) ADD_102( _INC( N ))
#define ADD_104( N ) ADD_103( _INC( N ))
#define ADD_105( N ) ADD_104( _INC( N ))
#define ADD_106( N ) ADD_105( _INC( N ))
#define ADD_107( N ) ADD_106( _INC( N ))
#define ADD_108( N ) ADD_107( _INC( N ))
#define ADD_109( N ) ADD_108( _INC( N ))
#define ADD_110( N ) ADD_109( _INC( N ))
#define ADD_111( N ) ADD_110( _INC( N ))
#define ADD_112( N ) ADD_111( _INC( N ))
#define ADD_113( N ) ADD_112( _INC( N ))
#define ADD_114( N ) ADD_113( _INC( N ))
#define ADD_115( N ) ADD_114( _INC( N ))
#define ADD_116( N ) ADD_115( _INC( N ))
#define ADD_117( N ) ADD_116( _INC( N ))
#define ADD_118( N ) ADD_117( _INC( N ))
#define ADD_119( N ) ADD_118( _INC( N ))
#define ADD_120( N ) ADD_119( _INC( N ))
#define ADD_121( N ) ADD_120( _INC( N ))
#define ADD_122( N ) ADD_121( _INC( N ))
#define ADD_123( N ) ADD_122( _INC( N ))
#define ADD_124( N ) ADD_123( _INC( N ))
#define ADD_125( N ) ADD_124( _INC( N ))
#define ADD_126( N ) ADD_125( _INC( N ))
#define ADD_127( N ) ADD_126( _INC( N ))
#define ADD_128( N ) ADD_127( _INC( N ))
#define ADD_129( N ) ADD_128( _INC( N ))
#define ADD_130( N ) ADD_129( _INC( N ))
#define ADD_131( N ) ADD_130( _INC( N ))
#define ADD_132( N ) ADD_131( _INC( N ))
#define ADD_133( N ) ADD_132( _INC( N ))
#define ADD_134( N ) ADD_133( _INC( N ))
#define ADD_135( N ) ADD_134( _INC( N ))
#define ADD_136( N ) ADD_135( _INC( N ))
#define ADD_137( N ) ADD_136( _INC( N ))
#define ADD_138( N ) ADD_137( _INC( N ))
#define ADD_139( N ) ADD_138( _INC( N ))
#define ADD_140( N ) ADD_139( _INC( N ))
#define ADD_141( N ) ADD_140( _INC( N ))
#define ADD_142( N ) ADD_141( _INC( N ))
#define ADD_143( N ) ADD_142( _INC( N ))
#define ADD_144( N ) ADD_143( _INC( N ))
#define ADD_145( N ) ADD_144( _INC( N ))
#define ADD_146( N ) ADD_145( _INC( N ))
#define ADD_147( N ) ADD_146( _INC( N ))
#define ADD_148( N ) ADD_147( _INC( N ))
#define ADD_149( N ) ADD_148( _INC( N ))
#define ADD_150( N ) ADD_149( _INC( N ))
#define ADD_151( N ) ADD_150( _INC( N ))
#define ADD_152( N ) ADD_151( _INC( N ))
#define ADD_153( N ) ADD_152( _INC( N ))
#define ADD_154( N ) ADD_153( _INC( N ))
#define ADD_155( N ) ADD_154( _INC( N ))
#define ADD_156( N ) ADD_155( _INC( N ))
#define ADD_157( N ) ADD_156( _INC( N ))
#define ADD_158( N ) ADD_157( _INC( N ))
#define ADD_159( N ) ADD_158( _INC( N ))
#define ADD_160( N ) ADD_159( _INC( N ))
#define ADD_161( N ) ADD_160( _INC( N ))
#define ADD_162( N ) ADD_161( _INC( N ))
#define ADD_163( N ) ADD_162( _INC( N ))
#define ADD_164( N ) ADD_163( _INC( N ))
#define ADD_165( N ) ADD_164( _INC( N ))
#define ADD_166( N ) ADD_165( _INC( N ))
#define ADD_167( N ) ADD_166( _INC( N ))
#define ADD_168( N ) ADD_167( _INC( N ))
#define ADD_169( N ) ADD_168( _INC( N ))
#define ADD_170( N ) ADD_169( _INC( N ))
#define ADD_171( N ) ADD_170( _INC( N ))
#define ADD_172( N ) ADD_171( _INC( N ))
#define ADD_173( N ) ADD_172( _INC( N ))
#define ADD_174( N ) ADD_173( _INC( N ))
#define ADD_175( N ) ADD_174( _INC( N ))
#define ADD_176( N ) ADD_175( _INC( N ))
#define ADD_177( N ) ADD_176( _INC( N ))
#define ADD_178( N ) ADD_177( _INC( N ))
#define ADD_179( N ) ADD_178( _INC( N ))
#define ADD_180( N ) ADD_179( _INC( N ))
#define ADD_181( N ) ADD_180( _INC( N ))
#define ADD_182( N ) ADD_181( _INC( N ))
#define ADD_183( N ) ADD_182( _INC( N ))
#define ADD_184( N ) ADD_183( _INC( N ))
#define ADD_185( N ) ADD_184( _INC( N ))
#define ADD_186( N ) ADD_185( _INC( N ))
#define ADD_187( N ) ADD_186( _INC( N ))
#define ADD_188( N ) ADD_187( _INC( N ))
#define ADD_189( N ) ADD_188( _INC( N ))
#define ADD_190( N ) ADD_189( _INC( N ))
#define ADD_191( N ) ADD_190( _INC( N ))
#define ADD_192( N ) ADD_191( _INC( N ))
#define ADD_193( N ) ADD_192( _INC( N ))
#define ADD_194( N ) ADD_193( _INC( N ))
#define ADD_195( N ) ADD_194( _INC( N ))
#define ADD_196( N ) ADD_195( _INC( N ))
#define ADD_197( N ) ADD_196( _INC( N ))
#define ADD_198( N ) ADD_197( _INC( N ))
#define ADD_199( N ) ADD_198( _INC( N ))
#define ADD_200( N ) ADD_199( _INC( N ))
#define ADD_201( N ) ADD_200( _INC( N ))
#define ADD_202( N ) ADD_201( _INC( N ))
#define ADD_203( N ) ADD_202( _INC( N ))
#define ADD_204( N ) ADD_203( _INC( N ))
#define ADD_205( N ) ADD_204( _INC( N ))
#define ADD_206( N ) ADD_205( _INC( N ))
#define ADD_207( N ) ADD_206( _INC( N ))
#define ADD_208( N ) ADD_207( _INC( N ))
#define ADD_209( N ) ADD_208( _INC( N ))
#define ADD_210( N ) ADD_209( _INC( N ))
#define ADD_211( N ) ADD_210( _INC( N ))
#define ADD_212( N ) ADD_211( _INC( N ))
#define ADD_213( N ) ADD_212( _INC( N ))
#define ADD_214( N ) ADD_213( _INC( N ))
#define ADD_215( N ) ADD_214( _INC( N ))
#define ADD_216( N ) ADD_215( _INC( N ))
#define ADD_217( N ) ADD_216( _INC( N ))
#define ADD_218( N ) ADD_217( _INC( N ))
#define ADD_219( N ) ADD_218( _INC( N ))
#define ADD_220( N ) ADD_219( _INC( N ))
#define ADD_221( N ) ADD_220( _INC( N ))
#define ADD_222( N ) ADD_221( _INC( N ))
#define ADD_223( N ) ADD_222( _INC( N ))
#define ADD_224( N ) ADD_223( _INC( N ))
#define ADD_225( N ) ADD_224( _INC( N ))
#define ADD_226( N ) ADD_225( _INC( N ))
#define ADD_227( N ) ADD_226( _INC( N ))
#define ADD_228( N ) ADD_227( _INC( N ))
#define ADD_229( N ) ADD_228( _INC( N ))
#define ADD_230( N ) ADD_229( _INC( N ))
#define ADD_231( N ) ADD_230( _INC( N ))
#define ADD_232( N ) ADD_231( _INC( N ))
#define ADD_233( N ) ADD_232( _INC( N ))
#define ADD_234( N ) ADD_233( _INC( N ))
#define ADD_235( N ) ADD_234( _INC( N ))
#define ADD_236( N ) ADD_235( _INC( N ))
#define ADD_237( N ) ADD_236( _INC( N ))
#define ADD_238( N ) ADD_237( _INC( N ))
#define ADD_239( N ) ADD_238( _INC( N ))
#define ADD_240( N ) ADD_239( _INC( N ))
#define ADD_241( N ) ADD_240( _INC( N ))
#define ADD_242( N ) ADD_241( _INC( N ))
#define ADD_243( N ) ADD_242( _INC( N ))
#define ADD_244( N ) ADD_243( _INC( N ))
#define ADD_245( N ) ADD_244( _INC( N ))
#define ADD_246( N ) ADD_245( _INC( N ))
#define ADD_247( N ) ADD_246( _INC( N ))
#define ADD_248( N ) ADD_247( _INC( N ))
#define ADD_249( N ) ADD_248( _INC( N ))
#define ADD_250( N ) ADD_249( _INC( N ))
#define ADD_251( N ) ADD_250( _INC( N ))
#define ADD_252( N ) ADD_251( _INC( N ))
#define ADD_253( N ) ADD_252( _INC( N ))
#define ADD_254( N ) ADD_253( _INC( N ))
/** \endcond */
#define UNFOLD_FROM( F, L, T0, T, ... ) o_O( _UNFOLD_F( F, L, T0, T, ## __VA_ARGS__ ))
#define _UNFOLD_F( F, L, T0, T, ... ) o_O( UNFOLD_F_##L( F, T0, T, ## __VA_ARGS__ ))
#define UNFOLD_F_0( F, T0, T, ... )
#define UNFOLD_F_1( F, T0, T, ... ) o_O( T0( F, ## __VA_ARGS__ ))
/** \cond */
#define UNFOLD_F_2( F, T0, T, ... ) o_O( UNFOLD_F_1( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_1( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_3( F, T0, T, ... ) o_O( UNFOLD_F_2( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_2( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_4( F, T0, T, ... ) o_O( UNFOLD_F_3( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_3( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_5( F, T0, T, ... ) o_O( UNFOLD_F_4( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_4( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_6( F, T0, T, ... ) o_O( UNFOLD_F_5( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_5( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_7( F, T0, T, ... ) o_O( UNFOLD_F_6( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_6( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_8( F, T0, T, ... ) o_O( UNFOLD_F_7( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_7( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_9( F, T0, T, ... ) o_O( UNFOLD_F_8( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_8( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_10( F, T0, T, ... ) o_O( UNFOLD_F_9( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_9( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_11( F, T0, T, ... ) o_O( UNFOLD_F_10( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_10( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_12( F, T0, T, ... ) o_O( UNFOLD_F_11( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_11( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_13( F, T0, T, ... ) o_O( UNFOLD_F_12( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_12( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_14( F, T0, T, ... ) o_O( UNFOLD_F_13( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_13( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_15( F, T0, T, ... ) o_O( UNFOLD_F_14( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_14( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_16( F, T0, T, ... ) o_O( UNFOLD_F_15( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_15( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_17( F, T0, T, ... ) o_O( UNFOLD_F_16( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_16( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_18( F, T0, T, ... ) o_O( UNFOLD_F_17( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_17( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_19( F, T0, T, ... ) o_O( UNFOLD_F_18( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_18( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_20( F, T0, T, ... ) o_O( UNFOLD_F_19( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_19( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_21( F, T0, T, ... ) o_O( UNFOLD_F_20( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_20( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_22( F, T0, T, ... ) o_O( UNFOLD_F_21( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_21( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_23( F, T0, T, ... ) o_O( UNFOLD_F_22( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_22( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_24( F, T0, T, ... ) o_O( UNFOLD_F_23( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_23( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_25( F, T0, T, ... ) o_O( UNFOLD_F_24( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_24( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_26( F, T0, T, ... ) o_O( UNFOLD_F_25( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_25( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_27( F, T0, T, ... ) o_O( UNFOLD_F_26( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_26( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_28( F, T0, T, ... ) o_O( UNFOLD_F_27( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_27( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_29( F, T0, T, ... ) o_O( UNFOLD_F_28( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_28( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_30( F, T0, T, ... ) o_O( UNFOLD_F_29( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_29( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_31( F, T0, T, ... ) o_O( UNFOLD_F_30( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_30( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_32( F, T0, T, ... ) o_O( UNFOLD_F_31( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_31( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_33( F, T0, T, ... ) o_O( UNFOLD_F_32( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_32( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_34( F, T0, T, ... ) o_O( UNFOLD_F_33( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_33( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_35( F, T0, T, ... ) o_O( UNFOLD_F_34( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_34( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_36( F, T0, T, ... ) o_O( UNFOLD_F_35( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_35( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_37( F, T0, T, ... ) o_O( UNFOLD_F_36( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_36( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_38( F, T0, T, ... ) o_O( UNFOLD_F_37( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_37( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_39( F, T0, T, ... ) o_O( UNFOLD_F_38( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_38( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_40( F, T0, T, ... ) o_O( UNFOLD_F_39( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_39( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_41( F, T0, T, ... ) o_O( UNFOLD_F_40( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_40( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_42( F, T0, T, ... ) o_O( UNFOLD_F_41( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_41( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_43( F, T0, T, ... ) o_O( UNFOLD_F_42( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_42( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_44( F, T0, T, ... ) o_O( UNFOLD_F_43( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_43( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_45( F, T0, T, ... ) o_O( UNFOLD_F_44( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_44( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_46( F, T0, T, ... ) o_O( UNFOLD_F_45( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_45( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_47( F, T0, T, ... ) o_O( UNFOLD_F_46( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_46( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_48( F, T0, T, ... ) o_O( UNFOLD_F_47( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_47( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_49( F, T0, T, ... ) o_O( UNFOLD_F_48( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_48( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_50( F, T0, T, ... ) o_O( UNFOLD_F_49( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_49( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_51( F, T0, T, ... ) o_O( UNFOLD_F_50( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_50( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_52( F, T0, T, ... ) o_O( UNFOLD_F_51( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_51( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_53( F, T0, T, ... ) o_O( UNFOLD_F_52( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_52( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_54( F, T0, T, ... ) o_O( UNFOLD_F_53( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_53( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_55( F, T0, T, ... ) o_O( UNFOLD_F_54( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_54( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_56( F, T0, T, ... ) o_O( UNFOLD_F_55( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_55( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_57( F, T0, T, ... ) o_O( UNFOLD_F_56( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_56( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_58( F, T0, T, ... ) o_O( UNFOLD_F_57( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_57( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_59( F, T0, T, ... ) o_O( UNFOLD_F_58( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_58( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_60( F, T0, T, ... ) o_O( UNFOLD_F_59( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_59( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_61( F, T0, T, ... ) o_O( UNFOLD_F_60( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_60( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_62( F, T0, T, ... ) o_O( UNFOLD_F_61( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_61( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_63( F, T0, T, ... ) o_O( UNFOLD_F_62( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_62( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_64( F, T0, T, ... ) o_O( UNFOLD_F_63( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_63( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_65( F, T0, T, ... ) o_O( UNFOLD_F_64( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_64( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_66( F, T0, T, ... ) o_O( UNFOLD_F_65( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_65( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_67( F, T0, T, ... ) o_O( UNFOLD_F_66( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_66( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_68( F, T0, T, ... ) o_O( UNFOLD_F_67( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_67( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_69( F, T0, T, ... ) o_O( UNFOLD_F_68( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_68( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_70( F, T0, T, ... ) o_O( UNFOLD_F_69( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_69( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_71( F, T0, T, ... ) o_O( UNFOLD_F_70( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_70( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_72( F, T0, T, ... ) o_O( UNFOLD_F_71( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_71( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_73( F, T0, T, ... ) o_O( UNFOLD_F_72( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_72( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_74( F, T0, T, ... ) o_O( UNFOLD_F_73( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_73( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_75( F, T0, T, ... ) o_O( UNFOLD_F_74( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_74( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_76( F, T0, T, ... ) o_O( UNFOLD_F_75( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_75( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_77( F, T0, T, ... ) o_O( UNFOLD_F_76( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_76( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_78( F, T0, T, ... ) o_O( UNFOLD_F_77( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_77( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_79( F, T0, T, ... ) o_O( UNFOLD_F_78( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_78( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_80( F, T0, T, ... ) o_O( UNFOLD_F_79( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_79( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_81( F, T0, T, ... ) o_O( UNFOLD_F_80( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_80( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_82( F, T0, T, ... ) o_O( UNFOLD_F_81( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_81( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_83( F, T0, T, ... ) o_O( UNFOLD_F_82( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_82( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_84( F, T0, T, ... ) o_O( UNFOLD_F_83( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_83( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_85( F, T0, T, ... ) o_O( UNFOLD_F_84( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_84( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_86( F, T0, T, ... ) o_O( UNFOLD_F_85( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_85( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_87( F, T0, T, ... ) o_O( UNFOLD_F_86( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_86( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_88( F, T0, T, ... ) o_O( UNFOLD_F_87( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_87( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_89( F, T0, T, ... ) o_O( UNFOLD_F_88( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_88( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_90( F, T0, T, ... ) o_O( UNFOLD_F_89( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_89( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_91( F, T0, T, ... ) o_O( UNFOLD_F_90( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_90( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_92( F, T0, T, ... ) o_O( UNFOLD_F_91( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_91( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_93( F, T0, T, ... ) o_O( UNFOLD_F_92( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_92( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_94( F, T0, T, ... ) o_O( UNFOLD_F_93( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_93( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_95( F, T0, T, ... ) o_O( UNFOLD_F_94( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_94( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_96( F, T0, T, ... ) o_O( UNFOLD_F_95( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_95( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_97( F, T0, T, ... ) o_O( UNFOLD_F_96( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_96( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_98( F, T0, T, ... ) o_O( UNFOLD_F_97( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_97( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_99( F, T0, T, ... ) o_O( UNFOLD_F_98( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_98( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_100( F, T0, T, ... ) o_O( UNFOLD_F_99( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_99( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_101( F, T0, T, ... ) o_O( UNFOLD_F_100( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_100( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_102( F, T0, T, ... ) o_O( UNFOLD_F_101( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_101( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_103( F, T0, T, ... ) o_O( UNFOLD_F_102( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_102( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_104( F, T0, T, ... ) o_O( UNFOLD_F_103( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_103( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_105( F, T0, T, ... ) o_O( UNFOLD_F_104( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_104( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_106( F, T0, T, ... ) o_O( UNFOLD_F_105( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_105( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_107( F, T0, T, ... ) o_O( UNFOLD_F_106( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_106( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_108( F, T0, T, ... ) o_O( UNFOLD_F_107( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_107( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_109( F, T0, T, ... ) o_O( UNFOLD_F_108( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_108( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_110( F, T0, T, ... ) o_O( UNFOLD_F_109( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_109( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_111( F, T0, T, ... ) o_O( UNFOLD_F_110( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_110( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_112( F, T0, T, ... ) o_O( UNFOLD_F_111( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_111( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_113( F, T0, T, ... ) o_O( UNFOLD_F_112( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_112( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_114( F, T0, T, ... ) o_O( UNFOLD_F_113( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_113( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_115( F, T0, T, ... ) o_O( UNFOLD_F_114( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_114( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_116( F, T0, T, ... ) o_O( UNFOLD_F_115( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_115( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_117( F, T0, T, ... ) o_O( UNFOLD_F_116( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_116( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_118( F, T0, T, ... ) o_O( UNFOLD_F_117( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_117( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_119( F, T0, T, ... ) o_O( UNFOLD_F_118( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_118( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_120( F, T0, T, ... ) o_O( UNFOLD_F_119( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_119( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_121( F, T0, T, ... ) o_O( UNFOLD_F_120( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_120( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_122( F, T0, T, ... ) o_O( UNFOLD_F_121( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_121( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_123( F, T0, T, ... ) o_O( UNFOLD_F_122( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_122( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_124( F, T0, T, ... ) o_O( UNFOLD_F_123( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_123( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_125( F, T0, T, ... ) o_O( UNFOLD_F_124( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_124( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_126( F, T0, T, ... ) o_O( UNFOLD_F_125( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_125( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_127( F, T0, T, ... ) o_O( UNFOLD_F_126( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_126( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_128( F, T0, T, ... ) o_O( UNFOLD_F_127( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_127( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_129( F, T0, T, ... ) o_O( UNFOLD_F_128( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_128( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_130( F, T0, T, ... ) o_O( UNFOLD_F_129( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_129( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_131( F, T0, T, ... ) o_O( UNFOLD_F_130( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_130( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_132( F, T0, T, ... ) o_O( UNFOLD_F_131( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_131( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_133( F, T0, T, ... ) o_O( UNFOLD_F_132( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_132( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_134( F, T0, T, ... ) o_O( UNFOLD_F_133( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_133( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_135( F, T0, T, ... ) o_O( UNFOLD_F_134( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_134( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_136( F, T0, T, ... ) o_O( UNFOLD_F_135( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_135( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_137( F, T0, T, ... ) o_O( UNFOLD_F_136( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_136( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_138( F, T0, T, ... ) o_O( UNFOLD_F_137( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_137( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_139( F, T0, T, ... ) o_O( UNFOLD_F_138( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_138( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_140( F, T0, T, ... ) o_O( UNFOLD_F_139( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_139( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_141( F, T0, T, ... ) o_O( UNFOLD_F_140( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_140( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_142( F, T0, T, ... ) o_O( UNFOLD_F_141( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_141( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_143( F, T0, T, ... ) o_O( UNFOLD_F_142( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_142( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_144( F, T0, T, ... ) o_O( UNFOLD_F_143( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_143( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_145( F, T0, T, ... ) o_O( UNFOLD_F_144( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_144( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_146( F, T0, T, ... ) o_O( UNFOLD_F_145( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_145( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_147( F, T0, T, ... ) o_O( UNFOLD_F_146( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_146( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_148( F, T0, T, ... ) o_O( UNFOLD_F_147( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_147( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_149( F, T0, T, ... ) o_O( UNFOLD_F_148( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_148( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_150( F, T0, T, ... ) o_O( UNFOLD_F_149( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_149( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_151( F, T0, T, ... ) o_O( UNFOLD_F_150( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_150( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_152( F, T0, T, ... ) o_O( UNFOLD_F_151( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_151( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_153( F, T0, T, ... ) o_O( UNFOLD_F_152( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_152( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_154( F, T0, T, ... ) o_O( UNFOLD_F_153( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_153( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_155( F, T0, T, ... ) o_O( UNFOLD_F_154( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_154( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_156( F, T0, T, ... ) o_O( UNFOLD_F_155( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_155( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_157( F, T0, T, ... ) o_O( UNFOLD_F_156( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_156( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_158( F, T0, T, ... ) o_O( UNFOLD_F_157( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_157( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_159( F, T0, T, ... ) o_O( UNFOLD_F_158( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_158( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_160( F, T0, T, ... ) o_O( UNFOLD_F_159( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_159( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_161( F, T0, T, ... ) o_O( UNFOLD_F_160( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_160( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_162( F, T0, T, ... ) o_O( UNFOLD_F_161( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_161( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_163( F, T0, T, ... ) o_O( UNFOLD_F_162( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_162( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_164( F, T0, T, ... ) o_O( UNFOLD_F_163( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_163( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_165( F, T0, T, ... ) o_O( UNFOLD_F_164( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_164( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_166( F, T0, T, ... ) o_O( UNFOLD_F_165( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_165( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_167( F, T0, T, ... ) o_O( UNFOLD_F_166( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_166( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_168( F, T0, T, ... ) o_O( UNFOLD_F_167( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_167( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_169( F, T0, T, ... ) o_O( UNFOLD_F_168( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_168( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_170( F, T0, T, ... ) o_O( UNFOLD_F_169( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_169( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_171( F, T0, T, ... ) o_O( UNFOLD_F_170( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_170( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_172( F, T0, T, ... ) o_O( UNFOLD_F_171( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_171( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_173( F, T0, T, ... ) o_O( UNFOLD_F_172( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_172( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_174( F, T0, T, ... ) o_O( UNFOLD_F_173( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_173( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_175( F, T0, T, ... ) o_O( UNFOLD_F_174( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_174( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_176( F, T0, T, ... ) o_O( UNFOLD_F_175( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_175( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_177( F, T0, T, ... ) o_O( UNFOLD_F_176( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_176( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_178( F, T0, T, ... ) o_O( UNFOLD_F_177( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_177( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_179( F, T0, T, ... ) o_O( UNFOLD_F_178( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_178( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_180( F, T0, T, ... ) o_O( UNFOLD_F_179( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_179( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_181( F, T0, T, ... ) o_O( UNFOLD_F_180( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_180( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_182( F, T0, T, ... ) o_O( UNFOLD_F_181( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_181( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_183( F, T0, T, ... ) o_O( UNFOLD_F_182( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_182( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_184( F, T0, T, ... ) o_O( UNFOLD_F_183( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_183( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_185( F, T0, T, ... ) o_O( UNFOLD_F_184( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_184( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_186( F, T0, T, ... ) o_O( UNFOLD_F_185( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_185( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_187( F, T0, T, ... ) o_O( UNFOLD_F_186( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_186( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_188( F, T0, T, ... ) o_O( UNFOLD_F_187( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_187( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_189( F, T0, T, ... ) o_O( UNFOLD_F_188( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_188( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_190( F, T0, T, ... ) o_O( UNFOLD_F_189( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_189( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_191( F, T0, T, ... ) o_O( UNFOLD_F_190( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_190( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_192( F, T0, T, ... ) o_O( UNFOLD_F_191( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_191( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_193( F, T0, T, ... ) o_O( UNFOLD_F_192( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_192( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_194( F, T0, T, ... ) o_O( UNFOLD_F_193( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_193( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_195( F, T0, T, ... ) o_O( UNFOLD_F_194( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_194( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_196( F, T0, T, ... ) o_O( UNFOLD_F_195( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_195( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_197( F, T0, T, ... ) o_O( UNFOLD_F_196( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_196( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_198( F, T0, T, ... ) o_O( UNFOLD_F_197( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_197( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_199( F, T0, T, ... ) o_O( UNFOLD_F_198( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_198( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_200( F, T0, T, ... ) o_O( UNFOLD_F_199( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_199( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_201( F, T0, T, ... ) o_O( UNFOLD_F_200( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_200( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_202( F, T0, T, ... ) o_O( UNFOLD_F_201( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_201( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_203( F, T0, T, ... ) o_O( UNFOLD_F_202( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_202( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_204( F, T0, T, ... ) o_O( UNFOLD_F_203( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_203( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_205( F, T0, T, ... ) o_O( UNFOLD_F_204( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_204( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_206( F, T0, T, ... ) o_O( UNFOLD_F_205( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_205( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_207( F, T0, T, ... ) o_O( UNFOLD_F_206( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_206( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_208( F, T0, T, ... ) o_O( UNFOLD_F_207( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_207( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_209( F, T0, T, ... ) o_O( UNFOLD_F_208( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_208( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_210( F, T0, T, ... ) o_O( UNFOLD_F_209( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_209( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_211( F, T0, T, ... ) o_O( UNFOLD_F_210( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_210( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_212( F, T0, T, ... ) o_O( UNFOLD_F_211( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_211( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_213( F, T0, T, ... ) o_O( UNFOLD_F_212( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_212( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_214( F, T0, T, ... ) o_O( UNFOLD_F_213( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_213( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_215( F, T0, T, ... ) o_O( UNFOLD_F_214( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_214( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_216( F, T0, T, ... ) o_O( UNFOLD_F_215( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_215( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_217( F, T0, T, ... ) o_O( UNFOLD_F_216( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_216( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_218( F, T0, T, ... ) o_O( UNFOLD_F_217( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_217( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_219( F, T0, T, ... ) o_O( UNFOLD_F_218( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_218( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_220( F, T0, T, ... ) o_O( UNFOLD_F_219( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_219( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_221( F, T0, T, ... ) o_O( UNFOLD_F_220( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_220( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_222( F, T0, T, ... ) o_O( UNFOLD_F_221( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_221( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_223( F, T0, T, ... ) o_O( UNFOLD_F_222( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_222( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_224( F, T0, T, ... ) o_O( UNFOLD_F_223( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_223( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_225( F, T0, T, ... ) o_O( UNFOLD_F_224( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_224( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_226( F, T0, T, ... ) o_O( UNFOLD_F_225( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_225( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_227( F, T0, T, ... ) o_O( UNFOLD_F_226( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_226( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_228( F, T0, T, ... ) o_O( UNFOLD_F_227( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_227( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_229( F, T0, T, ... ) o_O( UNFOLD_F_228( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_228( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_230( F, T0, T, ... ) o_O( UNFOLD_F_229( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_229( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_231( F, T0, T, ... ) o_O( UNFOLD_F_230( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_230( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_232( F, T0, T, ... ) o_O( UNFOLD_F_231( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_231( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_233( F, T0, T, ... ) o_O( UNFOLD_F_232( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_232( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_234( F, T0, T, ... ) o_O( UNFOLD_F_233( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_233( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_235( F, T0, T, ... ) o_O( UNFOLD_F_234( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_234( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_236( F, T0, T, ... ) o_O( UNFOLD_F_235( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_235( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_237( F, T0, T, ... ) o_O( UNFOLD_F_236( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_236( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_238( F, T0, T, ... ) o_O( UNFOLD_F_237( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_237( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_239( F, T0, T, ... ) o_O( UNFOLD_F_238( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_238( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_240( F, T0, T, ... ) o_O( UNFOLD_F_239( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_239( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_241( F, T0, T, ... ) o_O( UNFOLD_F_240( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_240( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_242( F, T0, T, ... ) o_O( UNFOLD_F_241( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_241( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_243( F, T0, T, ... ) o_O( UNFOLD_F_242( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_242( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_244( F, T0, T, ... ) o_O( UNFOLD_F_243( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_243( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_245( F, T0, T, ... ) o_O( UNFOLD_F_244( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_244( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_246( F, T0, T, ... ) o_O( UNFOLD_F_245( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_245( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_247( F, T0, T, ... ) o_O( UNFOLD_F_246( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_246( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_248( F, T0, T, ... ) o_O( UNFOLD_F_247( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_247( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_249( F, T0, T, ... ) o_O( UNFOLD_F_248( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_248( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_250( F, T0, T, ... ) o_O( UNFOLD_F_249( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_249( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_251( F, T0, T, ... ) o_O( UNFOLD_F_250( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_250( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_252( F, T0, T, ... ) o_O( UNFOLD_F_251( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_251( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_253( F, T0, T, ... ) o_O( UNFOLD_F_252( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_252( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_254( F, T0, T, ... ) o_O( UNFOLD_F_253( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_253( F ), ## __VA_ARGS__ ))
#define UNFOLD_F_255( F, T0, T, ... ) o_O( UNFOLD_F_254( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_254( F ), ## __VA_ARGS__ ))
/** \endcond */
#endif /* UNFOLD_H */
"""
Generate unfold.h
"""
MAX = 255
T = r"""/**
* \file unfold.h (generated by unfold_h.py)
* \brief Unfolding of C macros (up to %(max)d).
* \code
* UNFOLD( 3, T0, T, arg1, arg2 ) --> T0( 0, arg1, arg2 ) T( 1, arg1, arg2 ) T( 2, arg1, arg2 )
* UNFOLD_FROM( 10, 3, T0, T, arg1, arg2 ) --> T0( 10, arg1, arg2 ) T( 11, arg1, arg2 ) T( 12, arg1, arg2 )
* \endcode
* In case of `UNFOLD_FROM`, you must use `__concat_X` in macros (`T`) to concatenate index (`N`), for example:
* \code
* #define T0( N ) BIT_##N
* #define T( N ) | __concat_2( BIT_, N )
* pool = UNFOLD_FROM( 2, 4, T0, T );
* pool = BIT_2 | BIT_3 | BIT_4 | BIT_5;
* \endcode
*/
#ifndef UNFOLD_H
#define UNFOLD_H
#ifndef __concat
#define __concat_2( h, t ) h##t
#define __concat( h, t ) __concat_2( h, t )
#define __concat_3( h, b, t ) h##b##t
#endif
#define o_O( x ) x /* MSVC __VA_ARGS__ bug workaround */
#define UNFOLD( L, T0, T, ... ) o_O( _UNFOLD( L, T0, T, ## __VA_ARGS__ ))
#define _UNFOLD( L, T0, T, ... ) o_O( UNFOLD_##L( T0, T, ## __VA_ARGS__ ))
#define UNFOLD_0( T0, T, ... )
#define UNFOLD_1( T0, T, ... ) o_O( T0( 0, ## __VA_ARGS__ ))
/** \cond */
%(_unfold)s
/** \endcond */
#define _INC( N ) INC_##N
/** \cond */
%(_inc)s
/** \endcond */
#define ADD_1( N ) _INC( N )
/** \cond */
%(_add)s
/** \endcond */
#define UNFOLD_FROM( F, L, T0, T, ... ) o_O( _UNFOLD_F( F, L, T0, T, ## __VA_ARGS__ ))
#define _UNFOLD_F( F, L, T0, T, ... ) o_O( UNFOLD_F_##L( F, T0, T, ## __VA_ARGS__ ))
#define UNFOLD_F_0( F, T0, T, ... )
#define UNFOLD_F_1( F, T0, T, ... ) o_O( T0( F, ## __VA_ARGS__ ))
/** \cond */
%(_from)s
/** \endcond */
#endif /* UNFOLD_H */
"""
_UNFOLD = "#define UNFOLD_%d( T0, T, ... )\to_O( UNFOLD_%d( T0, T, ## __VA_ARGS__ )) o_O( T( %d, ## __VA_ARGS__ ))"
_INC = "#define INC_%d\t%d"
_ADD = "#define ADD_%d( N )\tADD_%d( _INC( N ))"
_FROM = "#define UNFOLD_F_%d( F, T0, T, ... )\to_O( UNFOLD_F_%d( F, T0, T, ## __VA_ARGS__ )) o_O( T( ADD_%d( F ), ## __VA_ARGS__ ))"
if __name__ == '__main__':
with open( './unfold.h', 'w' ) as f:
f.write( T % {
'max': MAX,
'_unfold': '\n'.join([ _UNFOLD % ( i + 1, i, i ) for i in range( 1, MAX )]),
'_inc' : '\n'.join([ _INC % ( i, i + 1 ) for i in range( 0, ( MAX + 1 ) * 2 )]),
'_add' : '\n'.join([ _ADD % ( i + 1, i ) for i in range( 1, ( MAX - 1 ))]),
'_from' : '\n'.join([ _FROM % ( i + 1, i, i ) for i in range( 1, MAX )]),
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment