diff --git a/src/Enum.hpp b/src/Enum.hpp index 500ccae..cd58b8c 100644 --- a/src/Enum.hpp +++ b/src/Enum.hpp @@ -5,6 +5,8 @@ #include #include "MacroUtils.hpp" +#define ENUM_VALUE(x, value) x = value, +# #define ENUM_CASE(x, name) \ case name::x: \ return #x; @@ -45,8 +47,8 @@ static methods for use with the enum. */ -#define ENUM(name, type, values...) \ - enum class name : type { values }; \ +#define ENUM_WITH_START_VALUE(name, type, startValue, values...) \ + enum class name : type { MACRO_UTILS_FOR_EACH_WITH_VALUE(ENUM_VALUE, ___MACRO_UTILS_NARGS(values) - 1, values) }; \ class name##Helper { \ inline static uint32_t constexpr ConstHash(char const* input) { \ return *input ? static_cast(*input) + 33 * ConstHash(input + 1) : 5381; \ @@ -104,3 +106,5 @@ return false; \ } \ }; + +#define ENUM(name, type, values...) ENUM_WITH_START_VALUE(name, type, 0, values); diff --git a/src/MacroUtils.hpp b/src/MacroUtils.hpp index 056fb3a..24de5e6 100644 --- a/src/MacroUtils.hpp +++ b/src/MacroUtils.hpp @@ -262,8 +262,268 @@ #define ___MACRO_UTILS_FE_255(FUNC, arg, X, ...) FUNC(X, arg) ___MACRO_UTILS_FE_254(FUNC, arg, __VA_ARGS__) #define ___MACRO_UTILS_FE_256(FUNC, arg, X, ...) FUNC(X, arg) ___MACRO_UTILS_FE_255(FUNC, arg, __VA_ARGS__) #define ___MACRO_UTILS_FE_257(FUNC, arg, X, ...) THE_FOREACH_MACRO_CURRENTLY_ONLY_SUPPORTS_UP_TO_256_VALUES ___MACRO_UTILS_FE_256(FUNC, arg, __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_0(FUNC, arg) +#define ___MACRO_UTILS_FE_VAL_1(FUNC, arg, X) FUNC(X, arg) +#define ___MACRO_UTILS_FE_VAL_2(FUNC, arg, X, ...) FUNC(X, arg -1) ___MACRO_UTILS_FE_VAL_1(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_3(FUNC, arg, X, ...) FUNC(X, arg -2) ___MACRO_UTILS_FE_VAL_2(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_4(FUNC, arg, X, ...) FUNC(X, arg -3) ___MACRO_UTILS_FE_VAL_3(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_5(FUNC, arg, X, ...) FUNC(X, arg -4) ___MACRO_UTILS_FE_VAL_4(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_6(FUNC, arg, X, ...) FUNC(X, arg -5) ___MACRO_UTILS_FE_VAL_5(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_7(FUNC, arg, X, ...) FUNC(X, arg -6) ___MACRO_UTILS_FE_VAL_6(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_8(FUNC, arg, X, ...) FUNC(X, arg -7) ___MACRO_UTILS_FE_VAL_7(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_9(FUNC, arg, X, ...) FUNC(X, arg -8) ___MACRO_UTILS_FE_VAL_8(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_10(FUNC, arg, X, ...) FUNC(X, arg -9) ___MACRO_UTILS_FE_VAL_9(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_11(FUNC, arg, X, ...) FUNC(X, arg -10) ___MACRO_UTILS_FE_VAL_10(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_12(FUNC, arg, X, ...) FUNC(X, arg -11) ___MACRO_UTILS_FE_VAL_11(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_13(FUNC, arg, X, ...) FUNC(X, arg -12) ___MACRO_UTILS_FE_VAL_12(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_14(FUNC, arg, X, ...) FUNC(X, arg -13) ___MACRO_UTILS_FE_VAL_13(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_15(FUNC, arg, X, ...) FUNC(X, arg -14) ___MACRO_UTILS_FE_VAL_14(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_16(FUNC, arg, X, ...) FUNC(X, arg -15) ___MACRO_UTILS_FE_VAL_15(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_17(FUNC, arg, X, ...) FUNC(X, arg -16) ___MACRO_UTILS_FE_VAL_16(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_18(FUNC, arg, X, ...) FUNC(X, arg -17) ___MACRO_UTILS_FE_VAL_17(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_19(FUNC, arg, X, ...) FUNC(X, arg -18) ___MACRO_UTILS_FE_VAL_18(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_20(FUNC, arg, X, ...) FUNC(X, arg -19) ___MACRO_UTILS_FE_VAL_19(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_21(FUNC, arg, X, ...) FUNC(X, arg -20) ___MACRO_UTILS_FE_VAL_20(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_22(FUNC, arg, X, ...) FUNC(X, arg -21) ___MACRO_UTILS_FE_VAL_21(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_23(FUNC, arg, X, ...) FUNC(X, arg -22) ___MACRO_UTILS_FE_VAL_22(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_24(FUNC, arg, X, ...) FUNC(X, arg -23) ___MACRO_UTILS_FE_VAL_23(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_25(FUNC, arg, X, ...) FUNC(X, arg -24) ___MACRO_UTILS_FE_VAL_24(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_26(FUNC, arg, X, ...) FUNC(X, arg -25) ___MACRO_UTILS_FE_VAL_25(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_27(FUNC, arg, X, ...) FUNC(X, arg -26) ___MACRO_UTILS_FE_VAL_26(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_28(FUNC, arg, X, ...) FUNC(X, arg -27) ___MACRO_UTILS_FE_VAL_27(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_29(FUNC, arg, X, ...) FUNC(X, arg -28) ___MACRO_UTILS_FE_VAL_28(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_30(FUNC, arg, X, ...) FUNC(X, arg -29) ___MACRO_UTILS_FE_VAL_29(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_31(FUNC, arg, X, ...) FUNC(X, arg -30) ___MACRO_UTILS_FE_VAL_30(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_32(FUNC, arg, X, ...) FUNC(X, arg -31) ___MACRO_UTILS_FE_VAL_31(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_33(FUNC, arg, X, ...) FUNC(X, arg -32) ___MACRO_UTILS_FE_VAL_32(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_34(FUNC, arg, X, ...) FUNC(X, arg -33) ___MACRO_UTILS_FE_VAL_33(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_35(FUNC, arg, X, ...) FUNC(X, arg -34) ___MACRO_UTILS_FE_VAL_34(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_36(FUNC, arg, X, ...) FUNC(X, arg -35) ___MACRO_UTILS_FE_VAL_35(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_37(FUNC, arg, X, ...) FUNC(X, arg -36) ___MACRO_UTILS_FE_VAL_36(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_38(FUNC, arg, X, ...) FUNC(X, arg -37) ___MACRO_UTILS_FE_VAL_37(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_39(FUNC, arg, X, ...) FUNC(X, arg -38) ___MACRO_UTILS_FE_VAL_38(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_40(FUNC, arg, X, ...) FUNC(X, arg -39) ___MACRO_UTILS_FE_VAL_39(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_41(FUNC, arg, X, ...) FUNC(X, arg -40) ___MACRO_UTILS_FE_VAL_40(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_42(FUNC, arg, X, ...) FUNC(X, arg -41) ___MACRO_UTILS_FE_VAL_41(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_43(FUNC, arg, X, ...) FUNC(X, arg -42) ___MACRO_UTILS_FE_VAL_42(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_44(FUNC, arg, X, ...) FUNC(X, arg -43) ___MACRO_UTILS_FE_VAL_43(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_45(FUNC, arg, X, ...) FUNC(X, arg -44) ___MACRO_UTILS_FE_VAL_44(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_46(FUNC, arg, X, ...) FUNC(X, arg -45) ___MACRO_UTILS_FE_VAL_45(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_47(FUNC, arg, X, ...) FUNC(X, arg -46) ___MACRO_UTILS_FE_VAL_46(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_48(FUNC, arg, X, ...) FUNC(X, arg -47) ___MACRO_UTILS_FE_VAL_47(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_49(FUNC, arg, X, ...) FUNC(X, arg -48) ___MACRO_UTILS_FE_VAL_48(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_50(FUNC, arg, X, ...) FUNC(X, arg -49) ___MACRO_UTILS_FE_VAL_49(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_51(FUNC, arg, X, ...) FUNC(X, arg -50) ___MACRO_UTILS_FE_VAL_50(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_52(FUNC, arg, X, ...) FUNC(X, arg -51) ___MACRO_UTILS_FE_VAL_51(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_53(FUNC, arg, X, ...) FUNC(X, arg -52) ___MACRO_UTILS_FE_VAL_52(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_54(FUNC, arg, X, ...) FUNC(X, arg -53) ___MACRO_UTILS_FE_VAL_53(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_55(FUNC, arg, X, ...) FUNC(X, arg -54) ___MACRO_UTILS_FE_VAL_54(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_56(FUNC, arg, X, ...) FUNC(X, arg -55) ___MACRO_UTILS_FE_VAL_55(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_57(FUNC, arg, X, ...) FUNC(X, arg -56) ___MACRO_UTILS_FE_VAL_56(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_58(FUNC, arg, X, ...) FUNC(X, arg -57) ___MACRO_UTILS_FE_VAL_57(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_59(FUNC, arg, X, ...) FUNC(X, arg -58) ___MACRO_UTILS_FE_VAL_58(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_60(FUNC, arg, X, ...) FUNC(X, arg -59) ___MACRO_UTILS_FE_VAL_59(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_61(FUNC, arg, X, ...) FUNC(X, arg -60) ___MACRO_UTILS_FE_VAL_60(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_62(FUNC, arg, X, ...) FUNC(X, arg -61) ___MACRO_UTILS_FE_VAL_61(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_63(FUNC, arg, X, ...) FUNC(X, arg -62) ___MACRO_UTILS_FE_VAL_62(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_64(FUNC, arg, X, ...) FUNC(X, arg -63) ___MACRO_UTILS_FE_VAL_63(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_65(FUNC, arg, X, ...) FUNC(X, arg -64) ___MACRO_UTILS_FE_VAL_64(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_66(FUNC, arg, X, ...) FUNC(X, arg -65) ___MACRO_UTILS_FE_VAL_65(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_67(FUNC, arg, X, ...) FUNC(X, arg -66) ___MACRO_UTILS_FE_VAL_66(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_68(FUNC, arg, X, ...) FUNC(X, arg -67) ___MACRO_UTILS_FE_VAL_67(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_69(FUNC, arg, X, ...) FUNC(X, arg -68) ___MACRO_UTILS_FE_VAL_68(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_70(FUNC, arg, X, ...) FUNC(X, arg -69) ___MACRO_UTILS_FE_VAL_69(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_71(FUNC, arg, X, ...) FUNC(X, arg -70) ___MACRO_UTILS_FE_VAL_70(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_72(FUNC, arg, X, ...) FUNC(X, arg -71) ___MACRO_UTILS_FE_VAL_71(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_73(FUNC, arg, X, ...) FUNC(X, arg -72) ___MACRO_UTILS_FE_VAL_72(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_74(FUNC, arg, X, ...) FUNC(X, arg -73) ___MACRO_UTILS_FE_VAL_73(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_75(FUNC, arg, X, ...) FUNC(X, arg -74) ___MACRO_UTILS_FE_VAL_74(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_76(FUNC, arg, X, ...) FUNC(X, arg -75) ___MACRO_UTILS_FE_VAL_75(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_77(FUNC, arg, X, ...) FUNC(X, arg -76) ___MACRO_UTILS_FE_VAL_76(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_78(FUNC, arg, X, ...) FUNC(X, arg -77) ___MACRO_UTILS_FE_VAL_77(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_79(FUNC, arg, X, ...) FUNC(X, arg -78) ___MACRO_UTILS_FE_VAL_78(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_80(FUNC, arg, X, ...) FUNC(X, arg -79) ___MACRO_UTILS_FE_VAL_79(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_81(FUNC, arg, X, ...) FUNC(X, arg -80) ___MACRO_UTILS_FE_VAL_80(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_82(FUNC, arg, X, ...) FUNC(X, arg -81) ___MACRO_UTILS_FE_VAL_81(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_83(FUNC, arg, X, ...) FUNC(X, arg -82) ___MACRO_UTILS_FE_VAL_82(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_84(FUNC, arg, X, ...) FUNC(X, arg -83) ___MACRO_UTILS_FE_VAL_83(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_85(FUNC, arg, X, ...) FUNC(X, arg -84) ___MACRO_UTILS_FE_VAL_84(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_86(FUNC, arg, X, ...) FUNC(X, arg -85) ___MACRO_UTILS_FE_VAL_85(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_87(FUNC, arg, X, ...) FUNC(X, arg -86) ___MACRO_UTILS_FE_VAL_86(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_88(FUNC, arg, X, ...) FUNC(X, arg -87) ___MACRO_UTILS_FE_VAL_87(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_89(FUNC, arg, X, ...) FUNC(X, arg -88) ___MACRO_UTILS_FE_VAL_88(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_90(FUNC, arg, X, ...) FUNC(X, arg -89) ___MACRO_UTILS_FE_VAL_89(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_91(FUNC, arg, X, ...) FUNC(X, arg -90) ___MACRO_UTILS_FE_VAL_90(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_92(FUNC, arg, X, ...) FUNC(X, arg -91) ___MACRO_UTILS_FE_VAL_91(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_93(FUNC, arg, X, ...) FUNC(X, arg -92) ___MACRO_UTILS_FE_VAL_92(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_94(FUNC, arg, X, ...) FUNC(X, arg -93) ___MACRO_UTILS_FE_VAL_93(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_95(FUNC, arg, X, ...) FUNC(X, arg -94) ___MACRO_UTILS_FE_VAL_94(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_96(FUNC, arg, X, ...) FUNC(X, arg -95) ___MACRO_UTILS_FE_VAL_95(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_97(FUNC, arg, X, ...) FUNC(X, arg -96) ___MACRO_UTILS_FE_VAL_96(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_98(FUNC, arg, X, ...) FUNC(X, arg -97) ___MACRO_UTILS_FE_VAL_97(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_99(FUNC, arg, X, ...) FUNC(X, arg -98) ___MACRO_UTILS_FE_VAL_98(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_100(FUNC, arg, X, ...) FUNC(X, arg -99) ___MACRO_UTILS_FE_VAL_99(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_101(FUNC, arg, X, ...) FUNC(X, arg -100) ___MACRO_UTILS_FE_VAL_100(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_102(FUNC, arg, X, ...) FUNC(X, arg -101) ___MACRO_UTILS_FE_VAL_101(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_103(FUNC, arg, X, ...) FUNC(X, arg -102) ___MACRO_UTILS_FE_VAL_102(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_104(FUNC, arg, X, ...) FUNC(X, arg -103) ___MACRO_UTILS_FE_VAL_103(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_105(FUNC, arg, X, ...) FUNC(X, arg -104) ___MACRO_UTILS_FE_VAL_104(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_106(FUNC, arg, X, ...) FUNC(X, arg -105) ___MACRO_UTILS_FE_VAL_105(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_107(FUNC, arg, X, ...) FUNC(X, arg -106) ___MACRO_UTILS_FE_VAL_106(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_108(FUNC, arg, X, ...) FUNC(X, arg -107) ___MACRO_UTILS_FE_VAL_107(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_109(FUNC, arg, X, ...) FUNC(X, arg -108) ___MACRO_UTILS_FE_VAL_108(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_110(FUNC, arg, X, ...) FUNC(X, arg -109) ___MACRO_UTILS_FE_VAL_109(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_111(FUNC, arg, X, ...) FUNC(X, arg -110) ___MACRO_UTILS_FE_VAL_110(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_112(FUNC, arg, X, ...) FUNC(X, arg -111) ___MACRO_UTILS_FE_VAL_111(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_113(FUNC, arg, X, ...) FUNC(X, arg -112) ___MACRO_UTILS_FE_VAL_112(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_114(FUNC, arg, X, ...) FUNC(X, arg -113) ___MACRO_UTILS_FE_VAL_113(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_115(FUNC, arg, X, ...) FUNC(X, arg -114) ___MACRO_UTILS_FE_VAL_114(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_116(FUNC, arg, X, ...) FUNC(X, arg -115) ___MACRO_UTILS_FE_VAL_115(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_117(FUNC, arg, X, ...) FUNC(X, arg -116) ___MACRO_UTILS_FE_VAL_116(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_118(FUNC, arg, X, ...) FUNC(X, arg -117) ___MACRO_UTILS_FE_VAL_117(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_119(FUNC, arg, X, ...) FUNC(X, arg -118) ___MACRO_UTILS_FE_VAL_118(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_120(FUNC, arg, X, ...) FUNC(X, arg -119) ___MACRO_UTILS_FE_VAL_119(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_121(FUNC, arg, X, ...) FUNC(X, arg -120) ___MACRO_UTILS_FE_VAL_120(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_122(FUNC, arg, X, ...) FUNC(X, arg -121) ___MACRO_UTILS_FE_VAL_121(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_123(FUNC, arg, X, ...) FUNC(X, arg -122) ___MACRO_UTILS_FE_VAL_122(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_124(FUNC, arg, X, ...) FUNC(X, arg -123) ___MACRO_UTILS_FE_VAL_123(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_125(FUNC, arg, X, ...) FUNC(X, arg -124) ___MACRO_UTILS_FE_VAL_124(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_126(FUNC, arg, X, ...) FUNC(X, arg -125) ___MACRO_UTILS_FE_VAL_125(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_127(FUNC, arg, X, ...) FUNC(X, arg -126) ___MACRO_UTILS_FE_VAL_126(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_128(FUNC, arg, X, ...) FUNC(X, arg -127) ___MACRO_UTILS_FE_VAL_127(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_129(FUNC, arg, X, ...) FUNC(X, arg -128) ___MACRO_UTILS_FE_VAL_128(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_130(FUNC, arg, X, ...) FUNC(X, arg -129) ___MACRO_UTILS_FE_VAL_129(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_131(FUNC, arg, X, ...) FUNC(X, arg -130) ___MACRO_UTILS_FE_VAL_130(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_132(FUNC, arg, X, ...) FUNC(X, arg -131) ___MACRO_UTILS_FE_VAL_131(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_133(FUNC, arg, X, ...) FUNC(X, arg -132) ___MACRO_UTILS_FE_VAL_132(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_134(FUNC, arg, X, ...) FUNC(X, arg -133) ___MACRO_UTILS_FE_VAL_133(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_135(FUNC, arg, X, ...) FUNC(X, arg -134) ___MACRO_UTILS_FE_VAL_134(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_136(FUNC, arg, X, ...) FUNC(X, arg -135) ___MACRO_UTILS_FE_VAL_135(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_137(FUNC, arg, X, ...) FUNC(X, arg -136) ___MACRO_UTILS_FE_VAL_136(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_138(FUNC, arg, X, ...) FUNC(X, arg -137) ___MACRO_UTILS_FE_VAL_137(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_139(FUNC, arg, X, ...) FUNC(X, arg -138) ___MACRO_UTILS_FE_VAL_138(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_140(FUNC, arg, X, ...) FUNC(X, arg -139) ___MACRO_UTILS_FE_VAL_139(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_141(FUNC, arg, X, ...) FUNC(X, arg -140) ___MACRO_UTILS_FE_VAL_140(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_142(FUNC, arg, X, ...) FUNC(X, arg -141) ___MACRO_UTILS_FE_VAL_141(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_143(FUNC, arg, X, ...) FUNC(X, arg -142) ___MACRO_UTILS_FE_VAL_142(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_144(FUNC, arg, X, ...) FUNC(X, arg -143) ___MACRO_UTILS_FE_VAL_143(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_145(FUNC, arg, X, ...) FUNC(X, arg -144) ___MACRO_UTILS_FE_VAL_144(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_146(FUNC, arg, X, ...) FUNC(X, arg -145) ___MACRO_UTILS_FE_VAL_145(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_147(FUNC, arg, X, ...) FUNC(X, arg -146) ___MACRO_UTILS_FE_VAL_146(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_148(FUNC, arg, X, ...) FUNC(X, arg -147) ___MACRO_UTILS_FE_VAL_147(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_149(FUNC, arg, X, ...) FUNC(X, arg -148) ___MACRO_UTILS_FE_VAL_148(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_150(FUNC, arg, X, ...) FUNC(X, arg -149) ___MACRO_UTILS_FE_VAL_149(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_151(FUNC, arg, X, ...) FUNC(X, arg -150) ___MACRO_UTILS_FE_VAL_150(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_152(FUNC, arg, X, ...) FUNC(X, arg -151) ___MACRO_UTILS_FE_VAL_151(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_153(FUNC, arg, X, ...) FUNC(X, arg -152) ___MACRO_UTILS_FE_VAL_152(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_154(FUNC, arg, X, ...) FUNC(X, arg -153) ___MACRO_UTILS_FE_VAL_153(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_155(FUNC, arg, X, ...) FUNC(X, arg -154) ___MACRO_UTILS_FE_VAL_154(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_156(FUNC, arg, X, ...) FUNC(X, arg -155) ___MACRO_UTILS_FE_VAL_155(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_157(FUNC, arg, X, ...) FUNC(X, arg -156) ___MACRO_UTILS_FE_VAL_156(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_158(FUNC, arg, X, ...) FUNC(X, arg -157) ___MACRO_UTILS_FE_VAL_157(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_159(FUNC, arg, X, ...) FUNC(X, arg -158) ___MACRO_UTILS_FE_VAL_158(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_160(FUNC, arg, X, ...) FUNC(X, arg -159) ___MACRO_UTILS_FE_VAL_159(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_161(FUNC, arg, X, ...) FUNC(X, arg -160) ___MACRO_UTILS_FE_VAL_160(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_162(FUNC, arg, X, ...) FUNC(X, arg -161) ___MACRO_UTILS_FE_VAL_161(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_163(FUNC, arg, X, ...) FUNC(X, arg -162) ___MACRO_UTILS_FE_VAL_162(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_164(FUNC, arg, X, ...) FUNC(X, arg -163) ___MACRO_UTILS_FE_VAL_163(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_165(FUNC, arg, X, ...) FUNC(X, arg -164) ___MACRO_UTILS_FE_VAL_164(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_166(FUNC, arg, X, ...) FUNC(X, arg -165) ___MACRO_UTILS_FE_VAL_165(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_167(FUNC, arg, X, ...) FUNC(X, arg -166) ___MACRO_UTILS_FE_VAL_166(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_168(FUNC, arg, X, ...) FUNC(X, arg -167) ___MACRO_UTILS_FE_VAL_167(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_169(FUNC, arg, X, ...) FUNC(X, arg -168) ___MACRO_UTILS_FE_VAL_168(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_170(FUNC, arg, X, ...) FUNC(X, arg -169) ___MACRO_UTILS_FE_VAL_169(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_171(FUNC, arg, X, ...) FUNC(X, arg -170) ___MACRO_UTILS_FE_VAL_170(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_172(FUNC, arg, X, ...) FUNC(X, arg -171) ___MACRO_UTILS_FE_VAL_171(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_173(FUNC, arg, X, ...) FUNC(X, arg -172) ___MACRO_UTILS_FE_VAL_172(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_174(FUNC, arg, X, ...) FUNC(X, arg -173) ___MACRO_UTILS_FE_VAL_173(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_175(FUNC, arg, X, ...) FUNC(X, arg -174) ___MACRO_UTILS_FE_VAL_174(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_176(FUNC, arg, X, ...) FUNC(X, arg -175) ___MACRO_UTILS_FE_VAL_175(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_177(FUNC, arg, X, ...) FUNC(X, arg -176) ___MACRO_UTILS_FE_VAL_176(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_178(FUNC, arg, X, ...) FUNC(X, arg -177) ___MACRO_UTILS_FE_VAL_177(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_179(FUNC, arg, X, ...) FUNC(X, arg -178) ___MACRO_UTILS_FE_VAL_178(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_180(FUNC, arg, X, ...) FUNC(X, arg -179) ___MACRO_UTILS_FE_VAL_179(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_181(FUNC, arg, X, ...) FUNC(X, arg -180) ___MACRO_UTILS_FE_VAL_180(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_182(FUNC, arg, X, ...) FUNC(X, arg -181) ___MACRO_UTILS_FE_VAL_181(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_183(FUNC, arg, X, ...) FUNC(X, arg -182) ___MACRO_UTILS_FE_VAL_182(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_184(FUNC, arg, X, ...) FUNC(X, arg -183) ___MACRO_UTILS_FE_VAL_183(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_185(FUNC, arg, X, ...) FUNC(X, arg -184) ___MACRO_UTILS_FE_VAL_184(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_186(FUNC, arg, X, ...) FUNC(X, arg -185) ___MACRO_UTILS_FE_VAL_185(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_187(FUNC, arg, X, ...) FUNC(X, arg -186) ___MACRO_UTILS_FE_VAL_186(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_188(FUNC, arg, X, ...) FUNC(X, arg -187) ___MACRO_UTILS_FE_VAL_187(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_189(FUNC, arg, X, ...) FUNC(X, arg -188) ___MACRO_UTILS_FE_VAL_188(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_190(FUNC, arg, X, ...) FUNC(X, arg -189) ___MACRO_UTILS_FE_VAL_189(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_191(FUNC, arg, X, ...) FUNC(X, arg -190) ___MACRO_UTILS_FE_VAL_190(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_192(FUNC, arg, X, ...) FUNC(X, arg -191) ___MACRO_UTILS_FE_VAL_191(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_193(FUNC, arg, X, ...) FUNC(X, arg -192) ___MACRO_UTILS_FE_VAL_192(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_194(FUNC, arg, X, ...) FUNC(X, arg -193) ___MACRO_UTILS_FE_VAL_193(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_195(FUNC, arg, X, ...) FUNC(X, arg -194) ___MACRO_UTILS_FE_VAL_194(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_196(FUNC, arg, X, ...) FUNC(X, arg -195) ___MACRO_UTILS_FE_VAL_195(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_197(FUNC, arg, X, ...) FUNC(X, arg -196) ___MACRO_UTILS_FE_VAL_196(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_198(FUNC, arg, X, ...) FUNC(X, arg -197) ___MACRO_UTILS_FE_VAL_197(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_199(FUNC, arg, X, ...) FUNC(X, arg -198) ___MACRO_UTILS_FE_VAL_198(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_200(FUNC, arg, X, ...) FUNC(X, arg -199) ___MACRO_UTILS_FE_VAL_199(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_201(FUNC, arg, X, ...) FUNC(X, arg -200) ___MACRO_UTILS_FE_VAL_200(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_202(FUNC, arg, X, ...) FUNC(X, arg -201) ___MACRO_UTILS_FE_VAL_201(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_203(FUNC, arg, X, ...) FUNC(X, arg -202) ___MACRO_UTILS_FE_VAL_202(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_204(FUNC, arg, X, ...) FUNC(X, arg -203) ___MACRO_UTILS_FE_VAL_203(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_205(FUNC, arg, X, ...) FUNC(X, arg -204) ___MACRO_UTILS_FE_VAL_204(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_206(FUNC, arg, X, ...) FUNC(X, arg -205) ___MACRO_UTILS_FE_VAL_205(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_207(FUNC, arg, X, ...) FUNC(X, arg -206) ___MACRO_UTILS_FE_VAL_206(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_208(FUNC, arg, X, ...) FUNC(X, arg -207) ___MACRO_UTILS_FE_VAL_207(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_209(FUNC, arg, X, ...) FUNC(X, arg -208) ___MACRO_UTILS_FE_VAL_208(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_210(FUNC, arg, X, ...) FUNC(X, arg -209) ___MACRO_UTILS_FE_VAL_209(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_211(FUNC, arg, X, ...) FUNC(X, arg -210) ___MACRO_UTILS_FE_VAL_210(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_212(FUNC, arg, X, ...) FUNC(X, arg -211) ___MACRO_UTILS_FE_VAL_211(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_213(FUNC, arg, X, ...) FUNC(X, arg -212) ___MACRO_UTILS_FE_VAL_212(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_214(FUNC, arg, X, ...) FUNC(X, arg -213) ___MACRO_UTILS_FE_VAL_213(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_215(FUNC, arg, X, ...) FUNC(X, arg -214) ___MACRO_UTILS_FE_VAL_214(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_216(FUNC, arg, X, ...) FUNC(X, arg -215) ___MACRO_UTILS_FE_VAL_215(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_217(FUNC, arg, X, ...) FUNC(X, arg -216) ___MACRO_UTILS_FE_VAL_216(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_218(FUNC, arg, X, ...) FUNC(X, arg -217) ___MACRO_UTILS_FE_VAL_217(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_219(FUNC, arg, X, ...) FUNC(X, arg -218) ___MACRO_UTILS_FE_VAL_218(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_220(FUNC, arg, X, ...) FUNC(X, arg -219) ___MACRO_UTILS_FE_VAL_219(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_221(FUNC, arg, X, ...) FUNC(X, arg -220) ___MACRO_UTILS_FE_VAL_220(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_222(FUNC, arg, X, ...) FUNC(X, arg -221) ___MACRO_UTILS_FE_VAL_221(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_223(FUNC, arg, X, ...) FUNC(X, arg -222) ___MACRO_UTILS_FE_VAL_222(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_224(FUNC, arg, X, ...) FUNC(X, arg -223) ___MACRO_UTILS_FE_VAL_223(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_225(FUNC, arg, X, ...) FUNC(X, arg -224) ___MACRO_UTILS_FE_VAL_224(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_226(FUNC, arg, X, ...) FUNC(X, arg -225) ___MACRO_UTILS_FE_VAL_225(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_227(FUNC, arg, X, ...) FUNC(X, arg -226) ___MACRO_UTILS_FE_VAL_226(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_228(FUNC, arg, X, ...) FUNC(X, arg -227) ___MACRO_UTILS_FE_VAL_227(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_229(FUNC, arg, X, ...) FUNC(X, arg -228) ___MACRO_UTILS_FE_VAL_228(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_230(FUNC, arg, X, ...) FUNC(X, arg -229) ___MACRO_UTILS_FE_VAL_229(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_231(FUNC, arg, X, ...) FUNC(X, arg -230) ___MACRO_UTILS_FE_VAL_230(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_232(FUNC, arg, X, ...) FUNC(X, arg -231) ___MACRO_UTILS_FE_VAL_231(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_233(FUNC, arg, X, ...) FUNC(X, arg -232) ___MACRO_UTILS_FE_VAL_232(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_234(FUNC, arg, X, ...) FUNC(X, arg -233) ___MACRO_UTILS_FE_VAL_233(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_235(FUNC, arg, X, ...) FUNC(X, arg -234) ___MACRO_UTILS_FE_VAL_234(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_236(FUNC, arg, X, ...) FUNC(X, arg -235) ___MACRO_UTILS_FE_VAL_235(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_237(FUNC, arg, X, ...) FUNC(X, arg -236) ___MACRO_UTILS_FE_VAL_236(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_238(FUNC, arg, X, ...) FUNC(X, arg -237) ___MACRO_UTILS_FE_VAL_237(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_239(FUNC, arg, X, ...) FUNC(X, arg -238) ___MACRO_UTILS_FE_VAL_238(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_240(FUNC, arg, X, ...) FUNC(X, arg -239) ___MACRO_UTILS_FE_VAL_239(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_241(FUNC, arg, X, ...) FUNC(X, arg -240) ___MACRO_UTILS_FE_VAL_240(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_242(FUNC, arg, X, ...) FUNC(X, arg -241) ___MACRO_UTILS_FE_VAL_241(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_243(FUNC, arg, X, ...) FUNC(X, arg -242) ___MACRO_UTILS_FE_VAL_242(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_244(FUNC, arg, X, ...) FUNC(X, arg -243) ___MACRO_UTILS_FE_VAL_243(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_245(FUNC, arg, X, ...) FUNC(X, arg -244) ___MACRO_UTILS_FE_VAL_244(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_246(FUNC, arg, X, ...) FUNC(X, arg -245) ___MACRO_UTILS_FE_VAL_245(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_247(FUNC, arg, X, ...) FUNC(X, arg -246) ___MACRO_UTILS_FE_VAL_246(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_248(FUNC, arg, X, ...) FUNC(X, arg -247) ___MACRO_UTILS_FE_VAL_247(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_249(FUNC, arg, X, ...) FUNC(X, arg -248) ___MACRO_UTILS_FE_VAL_248(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_250(FUNC, arg, X, ...) FUNC(X, arg -249) ___MACRO_UTILS_FE_VAL_249(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_251(FUNC, arg, X, ...) FUNC(X, arg -250) ___MACRO_UTILS_FE_VAL_250(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_252(FUNC, arg, X, ...) FUNC(X, arg -251) ___MACRO_UTILS_FE_VAL_251(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_253(FUNC, arg, X, ...) FUNC(X, arg -252) ___MACRO_UTILS_FE_VAL_252(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_254(FUNC, arg, X, ...) FUNC(X, arg -253) ___MACRO_UTILS_FE_VAL_253(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_255(FUNC, arg, X, ...) FUNC(X, arg -254) ___MACRO_UTILS_FE_VAL_254(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_256(FUNC, arg, X, ...) FUNC(X, arg -255) ___MACRO_UTILS_FE_VAL_255(FUNC, arg , __VA_ARGS__) +#define ___MACRO_UTILS_FE_VAL_257(FUNC, arg, X, ...) THE_FOREACH_MACRO_CURRENTLY_ONLY_SUPPORTS_UP_TO_256_VALUES ___MACRO_UTILS_FE_VAL_256(FUNC, arg, __VA_ARGS__) #define ___MACRO_UTILS_GET_MACRO(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _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, NAME, ...) NAME #define MACRO_UTILS_FOR_EACH(action, arg, ...) ___MACRO_UTILS_GET_MACRO(_0, __VA_ARGS__, ___MACRO_UTILS_FE_257, ___MACRO_UTILS_FE_256, ___MACRO_UTILS_FE_255, ___MACRO_UTILS_FE_254, ___MACRO_UTILS_FE_253, ___MACRO_UTILS_FE_252, ___MACRO_UTILS_FE_251, ___MACRO_UTILS_FE_250, ___MACRO_UTILS_FE_249, ___MACRO_UTILS_FE_248, ___MACRO_UTILS_FE_247, ___MACRO_UTILS_FE_246, ___MACRO_UTILS_FE_245, ___MACRO_UTILS_FE_244, ___MACRO_UTILS_FE_243, ___MACRO_UTILS_FE_242, ___MACRO_UTILS_FE_241, ___MACRO_UTILS_FE_240, ___MACRO_UTILS_FE_239, ___MACRO_UTILS_FE_238, ___MACRO_UTILS_FE_237, ___MACRO_UTILS_FE_236, ___MACRO_UTILS_FE_235, ___MACRO_UTILS_FE_234, ___MACRO_UTILS_FE_233, ___MACRO_UTILS_FE_232, ___MACRO_UTILS_FE_231, ___MACRO_UTILS_FE_230, ___MACRO_UTILS_FE_229, ___MACRO_UTILS_FE_228, ___MACRO_UTILS_FE_227, ___MACRO_UTILS_FE_226, ___MACRO_UTILS_FE_225, ___MACRO_UTILS_FE_224, ___MACRO_UTILS_FE_223, ___MACRO_UTILS_FE_222, ___MACRO_UTILS_FE_221, ___MACRO_UTILS_FE_220, ___MACRO_UTILS_FE_219, ___MACRO_UTILS_FE_218, ___MACRO_UTILS_FE_217, ___MACRO_UTILS_FE_216, ___MACRO_UTILS_FE_215, ___MACRO_UTILS_FE_214, ___MACRO_UTILS_FE_213, ___MACRO_UTILS_FE_212, ___MACRO_UTILS_FE_211, ___MACRO_UTILS_FE_210, ___MACRO_UTILS_FE_209, ___MACRO_UTILS_FE_208, ___MACRO_UTILS_FE_207, ___MACRO_UTILS_FE_206, ___MACRO_UTILS_FE_205, ___MACRO_UTILS_FE_204, ___MACRO_UTILS_FE_203, ___MACRO_UTILS_FE_202, ___MACRO_UTILS_FE_201, ___MACRO_UTILS_FE_200, ___MACRO_UTILS_FE_199, ___MACRO_UTILS_FE_198, ___MACRO_UTILS_FE_197, ___MACRO_UTILS_FE_196, ___MACRO_UTILS_FE_195, ___MACRO_UTILS_FE_194, ___MACRO_UTILS_FE_193, ___MACRO_UTILS_FE_192, ___MACRO_UTILS_FE_191, ___MACRO_UTILS_FE_190, ___MACRO_UTILS_FE_189, ___MACRO_UTILS_FE_188, ___MACRO_UTILS_FE_187, ___MACRO_UTILS_FE_186, ___MACRO_UTILS_FE_185, ___MACRO_UTILS_FE_184, ___MACRO_UTILS_FE_183, ___MACRO_UTILS_FE_182, ___MACRO_UTILS_FE_181, ___MACRO_UTILS_FE_180, ___MACRO_UTILS_FE_179, ___MACRO_UTILS_FE_178, ___MACRO_UTILS_FE_177, ___MACRO_UTILS_FE_176, ___MACRO_UTILS_FE_175, ___MACRO_UTILS_FE_174, ___MACRO_UTILS_FE_173, ___MACRO_UTILS_FE_172, ___MACRO_UTILS_FE_171, ___MACRO_UTILS_FE_170, ___MACRO_UTILS_FE_169, ___MACRO_UTILS_FE_168, ___MACRO_UTILS_FE_167, ___MACRO_UTILS_FE_166, ___MACRO_UTILS_FE_165, ___MACRO_UTILS_FE_164, ___MACRO_UTILS_FE_163, ___MACRO_UTILS_FE_162, ___MACRO_UTILS_FE_161, ___MACRO_UTILS_FE_160, ___MACRO_UTILS_FE_159, ___MACRO_UTILS_FE_158, ___MACRO_UTILS_FE_157, ___MACRO_UTILS_FE_156, ___MACRO_UTILS_FE_155, ___MACRO_UTILS_FE_154, ___MACRO_UTILS_FE_153, ___MACRO_UTILS_FE_152, ___MACRO_UTILS_FE_151, ___MACRO_UTILS_FE_150, ___MACRO_UTILS_FE_149, ___MACRO_UTILS_FE_148, ___MACRO_UTILS_FE_147, ___MACRO_UTILS_FE_146, ___MACRO_UTILS_FE_145, ___MACRO_UTILS_FE_144, ___MACRO_UTILS_FE_143, ___MACRO_UTILS_FE_142, ___MACRO_UTILS_FE_141, ___MACRO_UTILS_FE_140, ___MACRO_UTILS_FE_139, ___MACRO_UTILS_FE_138, ___MACRO_UTILS_FE_137, ___MACRO_UTILS_FE_136, ___MACRO_UTILS_FE_135, ___MACRO_UTILS_FE_134, ___MACRO_UTILS_FE_133, ___MACRO_UTILS_FE_132, ___MACRO_UTILS_FE_131, ___MACRO_UTILS_FE_130, ___MACRO_UTILS_FE_129, ___MACRO_UTILS_FE_128, ___MACRO_UTILS_FE_127, ___MACRO_UTILS_FE_126, ___MACRO_UTILS_FE_125, ___MACRO_UTILS_FE_124, ___MACRO_UTILS_FE_123, ___MACRO_UTILS_FE_122, ___MACRO_UTILS_FE_121, ___MACRO_UTILS_FE_120, ___MACRO_UTILS_FE_119, ___MACRO_UTILS_FE_118, ___MACRO_UTILS_FE_117, ___MACRO_UTILS_FE_116, ___MACRO_UTILS_FE_115, ___MACRO_UTILS_FE_114, ___MACRO_UTILS_FE_113, ___MACRO_UTILS_FE_112, ___MACRO_UTILS_FE_111, ___MACRO_UTILS_FE_110, ___MACRO_UTILS_FE_109, ___MACRO_UTILS_FE_108, ___MACRO_UTILS_FE_107, ___MACRO_UTILS_FE_106, ___MACRO_UTILS_FE_105, ___MACRO_UTILS_FE_104, ___MACRO_UTILS_FE_103, ___MACRO_UTILS_FE_102, ___MACRO_UTILS_FE_101, ___MACRO_UTILS_FE_100, ___MACRO_UTILS_FE_99, ___MACRO_UTILS_FE_98, ___MACRO_UTILS_FE_97, ___MACRO_UTILS_FE_96, ___MACRO_UTILS_FE_95, ___MACRO_UTILS_FE_94, ___MACRO_UTILS_FE_93, ___MACRO_UTILS_FE_92, ___MACRO_UTILS_FE_91, ___MACRO_UTILS_FE_90, ___MACRO_UTILS_FE_89, ___MACRO_UTILS_FE_88, ___MACRO_UTILS_FE_87, ___MACRO_UTILS_FE_86, ___MACRO_UTILS_FE_85, ___MACRO_UTILS_FE_84, ___MACRO_UTILS_FE_83, ___MACRO_UTILS_FE_82, ___MACRO_UTILS_FE_81, ___MACRO_UTILS_FE_80, ___MACRO_UTILS_FE_79, ___MACRO_UTILS_FE_78, ___MACRO_UTILS_FE_77, ___MACRO_UTILS_FE_76, ___MACRO_UTILS_FE_75, ___MACRO_UTILS_FE_74, ___MACRO_UTILS_FE_73, ___MACRO_UTILS_FE_72, ___MACRO_UTILS_FE_71, ___MACRO_UTILS_FE_70, ___MACRO_UTILS_FE_69, ___MACRO_UTILS_FE_68, ___MACRO_UTILS_FE_67, ___MACRO_UTILS_FE_66, ___MACRO_UTILS_FE_65, ___MACRO_UTILS_FE_64, ___MACRO_UTILS_FE_63, ___MACRO_UTILS_FE_62, ___MACRO_UTILS_FE_61, ___MACRO_UTILS_FE_60, ___MACRO_UTILS_FE_59, ___MACRO_UTILS_FE_58, ___MACRO_UTILS_FE_57, ___MACRO_UTILS_FE_56, ___MACRO_UTILS_FE_55, ___MACRO_UTILS_FE_54, ___MACRO_UTILS_FE_53, ___MACRO_UTILS_FE_52, ___MACRO_UTILS_FE_51, ___MACRO_UTILS_FE_50, ___MACRO_UTILS_FE_49, ___MACRO_UTILS_FE_48, ___MACRO_UTILS_FE_47, ___MACRO_UTILS_FE_46, ___MACRO_UTILS_FE_45, ___MACRO_UTILS_FE_44, ___MACRO_UTILS_FE_43, ___MACRO_UTILS_FE_42, ___MACRO_UTILS_FE_41, ___MACRO_UTILS_FE_40, ___MACRO_UTILS_FE_39, ___MACRO_UTILS_FE_38, ___MACRO_UTILS_FE_37, ___MACRO_UTILS_FE_36, ___MACRO_UTILS_FE_35, ___MACRO_UTILS_FE_34, ___MACRO_UTILS_FE_33, ___MACRO_UTILS_FE_32, ___MACRO_UTILS_FE_31, ___MACRO_UTILS_FE_30, ___MACRO_UTILS_FE_29, ___MACRO_UTILS_FE_28, ___MACRO_UTILS_FE_27, ___MACRO_UTILS_FE_26, ___MACRO_UTILS_FE_25, ___MACRO_UTILS_FE_24, ___MACRO_UTILS_FE_23, ___MACRO_UTILS_FE_22, ___MACRO_UTILS_FE_21, ___MACRO_UTILS_FE_20, ___MACRO_UTILS_FE_19, ___MACRO_UTILS_FE_18, ___MACRO_UTILS_FE_17, ___MACRO_UTILS_FE_16, ___MACRO_UTILS_FE_15, ___MACRO_UTILS_FE_14, ___MACRO_UTILS_FE_13, ___MACRO_UTILS_FE_12, ___MACRO_UTILS_FE_11, ___MACRO_UTILS_FE_10, ___MACRO_UTILS_FE_9, ___MACRO_UTILS_FE_8, ___MACRO_UTILS_FE_7, ___MACRO_UTILS_FE_6, ___MACRO_UTILS_FE_5, ___MACRO_UTILS_FE_4, ___MACRO_UTILS_FE_3, ___MACRO_UTILS_FE_2, ___MACRO_UTILS_FE_1) (action, arg, __VA_ARGS__) +#define ___MACRO_UTILS_GET_MACRO_WITH_VALUE(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _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, NAME, ...) NAME +#define MACRO_UTILS_FOR_EACH_WITH_VALUE(action, arg, ...) ___MACRO_UTILS_GET_MACRO_WITH_VALUE(_0, __VA_ARGS__, ___MACRO_UTILS_FE_VAL_257, ___MACRO_UTILS_FE_VAL_256, ___MACRO_UTILS_FE_VAL_255, ___MACRO_UTILS_FE_VAL_254, ___MACRO_UTILS_FE_VAL_253, ___MACRO_UTILS_FE_VAL_252, ___MACRO_UTILS_FE_VAL_251, ___MACRO_UTILS_FE_VAL_250, ___MACRO_UTILS_FE_VAL_249, ___MACRO_UTILS_FE_VAL_248, ___MACRO_UTILS_FE_VAL_247, ___MACRO_UTILS_FE_VAL_246, ___MACRO_UTILS_FE_VAL_245, ___MACRO_UTILS_FE_VAL_244, ___MACRO_UTILS_FE_VAL_243, ___MACRO_UTILS_FE_VAL_242, ___MACRO_UTILS_FE_VAL_241, ___MACRO_UTILS_FE_VAL_240, ___MACRO_UTILS_FE_VAL_239, ___MACRO_UTILS_FE_VAL_238, ___MACRO_UTILS_FE_VAL_237, ___MACRO_UTILS_FE_VAL_236, ___MACRO_UTILS_FE_VAL_235, ___MACRO_UTILS_FE_VAL_234, ___MACRO_UTILS_FE_VAL_233, ___MACRO_UTILS_FE_VAL_232, ___MACRO_UTILS_FE_VAL_231, ___MACRO_UTILS_FE_VAL_230, ___MACRO_UTILS_FE_VAL_229, ___MACRO_UTILS_FE_VAL_228, ___MACRO_UTILS_FE_VAL_227, ___MACRO_UTILS_FE_VAL_226, ___MACRO_UTILS_FE_VAL_225, ___MACRO_UTILS_FE_VAL_224, ___MACRO_UTILS_FE_VAL_223, ___MACRO_UTILS_FE_VAL_222, ___MACRO_UTILS_FE_VAL_221, ___MACRO_UTILS_FE_VAL_220, ___MACRO_UTILS_FE_VAL_219, ___MACRO_UTILS_FE_VAL_218, ___MACRO_UTILS_FE_VAL_217, ___MACRO_UTILS_FE_VAL_216, ___MACRO_UTILS_FE_VAL_215, ___MACRO_UTILS_FE_VAL_214, ___MACRO_UTILS_FE_VAL_213, ___MACRO_UTILS_FE_VAL_212, ___MACRO_UTILS_FE_VAL_211, ___MACRO_UTILS_FE_VAL_210, ___MACRO_UTILS_FE_VAL_209, ___MACRO_UTILS_FE_VAL_208, ___MACRO_UTILS_FE_VAL_207, ___MACRO_UTILS_FE_VAL_206, ___MACRO_UTILS_FE_VAL_205, ___MACRO_UTILS_FE_VAL_204, ___MACRO_UTILS_FE_VAL_203, ___MACRO_UTILS_FE_VAL_202, ___MACRO_UTILS_FE_VAL_201, ___MACRO_UTILS_FE_VAL_200, ___MACRO_UTILS_FE_VAL_199, ___MACRO_UTILS_FE_VAL_198, ___MACRO_UTILS_FE_VAL_197, ___MACRO_UTILS_FE_VAL_196, ___MACRO_UTILS_FE_VAL_195, ___MACRO_UTILS_FE_VAL_194, ___MACRO_UTILS_FE_VAL_193, ___MACRO_UTILS_FE_VAL_192, ___MACRO_UTILS_FE_VAL_191, ___MACRO_UTILS_FE_VAL_190, ___MACRO_UTILS_FE_VAL_189, ___MACRO_UTILS_FE_VAL_188, ___MACRO_UTILS_FE_VAL_187, ___MACRO_UTILS_FE_VAL_186, ___MACRO_UTILS_FE_VAL_185, ___MACRO_UTILS_FE_VAL_184, ___MACRO_UTILS_FE_VAL_183, ___MACRO_UTILS_FE_VAL_182, ___MACRO_UTILS_FE_VAL_181, ___MACRO_UTILS_FE_VAL_180, ___MACRO_UTILS_FE_VAL_179, ___MACRO_UTILS_FE_VAL_178, ___MACRO_UTILS_FE_VAL_177, ___MACRO_UTILS_FE_VAL_176, ___MACRO_UTILS_FE_VAL_175, ___MACRO_UTILS_FE_VAL_174, ___MACRO_UTILS_FE_VAL_173, ___MACRO_UTILS_FE_VAL_172, ___MACRO_UTILS_FE_VAL_171, ___MACRO_UTILS_FE_VAL_170, ___MACRO_UTILS_FE_VAL_169, ___MACRO_UTILS_FE_VAL_168, ___MACRO_UTILS_FE_VAL_167, ___MACRO_UTILS_FE_VAL_166, ___MACRO_UTILS_FE_VAL_165, ___MACRO_UTILS_FE_VAL_164, ___MACRO_UTILS_FE_VAL_163, ___MACRO_UTILS_FE_VAL_162, ___MACRO_UTILS_FE_VAL_161, ___MACRO_UTILS_FE_VAL_160, ___MACRO_UTILS_FE_VAL_159, ___MACRO_UTILS_FE_VAL_158, ___MACRO_UTILS_FE_VAL_157, ___MACRO_UTILS_FE_VAL_156, ___MACRO_UTILS_FE_VAL_155, ___MACRO_UTILS_FE_VAL_154, ___MACRO_UTILS_FE_VAL_153, ___MACRO_UTILS_FE_VAL_152, ___MACRO_UTILS_FE_VAL_151, ___MACRO_UTILS_FE_VAL_150, ___MACRO_UTILS_FE_VAL_149, ___MACRO_UTILS_FE_VAL_148, ___MACRO_UTILS_FE_VAL_147, ___MACRO_UTILS_FE_VAL_146, ___MACRO_UTILS_FE_VAL_145, ___MACRO_UTILS_FE_VAL_144, ___MACRO_UTILS_FE_VAL_143, ___MACRO_UTILS_FE_VAL_142, ___MACRO_UTILS_FE_VAL_141, ___MACRO_UTILS_FE_VAL_140, ___MACRO_UTILS_FE_VAL_139, ___MACRO_UTILS_FE_VAL_138, ___MACRO_UTILS_FE_VAL_137, ___MACRO_UTILS_FE_VAL_136, ___MACRO_UTILS_FE_VAL_135, ___MACRO_UTILS_FE_VAL_134, ___MACRO_UTILS_FE_VAL_133, ___MACRO_UTILS_FE_VAL_132, ___MACRO_UTILS_FE_VAL_131, ___MACRO_UTILS_FE_VAL_130, ___MACRO_UTILS_FE_VAL_129, ___MACRO_UTILS_FE_VAL_128, ___MACRO_UTILS_FE_VAL_127, ___MACRO_UTILS_FE_VAL_126, ___MACRO_UTILS_FE_VAL_125, ___MACRO_UTILS_FE_VAL_124, ___MACRO_UTILS_FE_VAL_123, ___MACRO_UTILS_FE_VAL_122, ___MACRO_UTILS_FE_VAL_121, ___MACRO_UTILS_FE_VAL_120, ___MACRO_UTILS_FE_VAL_119, ___MACRO_UTILS_FE_VAL_118, ___MACRO_UTILS_FE_VAL_117, ___MACRO_UTILS_FE_VAL_116, ___MACRO_UTILS_FE_VAL_115, ___MACRO_UTILS_FE_VAL_114, ___MACRO_UTILS_FE_VAL_113, ___MACRO_UTILS_FE_VAL_112, ___MACRO_UTILS_FE_VAL_111, ___MACRO_UTILS_FE_VAL_110, ___MACRO_UTILS_FE_VAL_109, ___MACRO_UTILS_FE_VAL_108, ___MACRO_UTILS_FE_VAL_107, ___MACRO_UTILS_FE_VAL_106, ___MACRO_UTILS_FE_VAL_105, ___MACRO_UTILS_FE_VAL_104, ___MACRO_UTILS_FE_VAL_103, ___MACRO_UTILS_FE_VAL_102, ___MACRO_UTILS_FE_VAL_101, ___MACRO_UTILS_FE_VAL_100, ___MACRO_UTILS_FE_VAL_99, ___MACRO_UTILS_FE_VAL_98, ___MACRO_UTILS_FE_VAL_97, ___MACRO_UTILS_FE_VAL_96, ___MACRO_UTILS_FE_VAL_95, ___MACRO_UTILS_FE_VAL_94, ___MACRO_UTILS_FE_VAL_93, ___MACRO_UTILS_FE_VAL_92, ___MACRO_UTILS_FE_VAL_91, ___MACRO_UTILS_FE_VAL_90, ___MACRO_UTILS_FE_VAL_89, ___MACRO_UTILS_FE_VAL_88, ___MACRO_UTILS_FE_VAL_87, ___MACRO_UTILS_FE_VAL_86, ___MACRO_UTILS_FE_VAL_85, ___MACRO_UTILS_FE_VAL_84, ___MACRO_UTILS_FE_VAL_83, ___MACRO_UTILS_FE_VAL_82, ___MACRO_UTILS_FE_VAL_81, ___MACRO_UTILS_FE_VAL_80, ___MACRO_UTILS_FE_VAL_79, ___MACRO_UTILS_FE_VAL_78, ___MACRO_UTILS_FE_VAL_77, ___MACRO_UTILS_FE_VAL_76, ___MACRO_UTILS_FE_VAL_75, ___MACRO_UTILS_FE_VAL_74, ___MACRO_UTILS_FE_VAL_73, ___MACRO_UTILS_FE_VAL_72, ___MACRO_UTILS_FE_VAL_71, ___MACRO_UTILS_FE_VAL_70, ___MACRO_UTILS_FE_VAL_69, ___MACRO_UTILS_FE_VAL_68, ___MACRO_UTILS_FE_VAL_67, ___MACRO_UTILS_FE_VAL_66, ___MACRO_UTILS_FE_VAL_65, ___MACRO_UTILS_FE_VAL_64, ___MACRO_UTILS_FE_VAL_63, ___MACRO_UTILS_FE_VAL_62, ___MACRO_UTILS_FE_VAL_61, ___MACRO_UTILS_FE_VAL_60, ___MACRO_UTILS_FE_VAL_59, ___MACRO_UTILS_FE_VAL_58, ___MACRO_UTILS_FE_VAL_57, ___MACRO_UTILS_FE_VAL_56, ___MACRO_UTILS_FE_VAL_55, ___MACRO_UTILS_FE_VAL_54, ___MACRO_UTILS_FE_VAL_53, ___MACRO_UTILS_FE_VAL_52, ___MACRO_UTILS_FE_VAL_51, ___MACRO_UTILS_FE_VAL_50, ___MACRO_UTILS_FE_VAL_49, ___MACRO_UTILS_FE_VAL_48, ___MACRO_UTILS_FE_VAL_47, ___MACRO_UTILS_FE_VAL_46, ___MACRO_UTILS_FE_VAL_45, ___MACRO_UTILS_FE_VAL_44, ___MACRO_UTILS_FE_VAL_43, ___MACRO_UTILS_FE_VAL_42, ___MACRO_UTILS_FE_VAL_41, ___MACRO_UTILS_FE_VAL_40, ___MACRO_UTILS_FE_VAL_39, ___MACRO_UTILS_FE_VAL_38, ___MACRO_UTILS_FE_VAL_37, ___MACRO_UTILS_FE_VAL_36, ___MACRO_UTILS_FE_VAL_35, ___MACRO_UTILS_FE_VAL_34, ___MACRO_UTILS_FE_VAL_33, ___MACRO_UTILS_FE_VAL_32, ___MACRO_UTILS_FE_VAL_31, ___MACRO_UTILS_FE_VAL_30, ___MACRO_UTILS_FE_VAL_29, ___MACRO_UTILS_FE_VAL_28, ___MACRO_UTILS_FE_VAL_27, ___MACRO_UTILS_FE_VAL_26, ___MACRO_UTILS_FE_VAL_25, ___MACRO_UTILS_FE_VAL_24, ___MACRO_UTILS_FE_VAL_23, ___MACRO_UTILS_FE_VAL_22, ___MACRO_UTILS_FE_VAL_21, ___MACRO_UTILS_FE_VAL_20, ___MACRO_UTILS_FE_VAL_19, ___MACRO_UTILS_FE_VAL_18, ___MACRO_UTILS_FE_VAL_17, ___MACRO_UTILS_FE_VAL_16, ___MACRO_UTILS_FE_VAL_15, ___MACRO_UTILS_FE_VAL_14, ___MACRO_UTILS_FE_VAL_13, ___MACRO_UTILS_FE_VAL_12, ___MACRO_UTILS_FE_VAL_11, ___MACRO_UTILS_FE_VAL_10, ___MACRO_UTILS_FE_VAL_9, ___MACRO_UTILS_FE_VAL_8, ___MACRO_UTILS_FE_VAL_7, ___MACRO_UTILS_FE_VAL_6, ___MACRO_UTILS_FE_VAL_5, ___MACRO_UTILS_FE_VAL_4, ___MACRO_UTILS_FE_VAL_3, ___MACRO_UTILS_FE_VAL_2, ___MACRO_UTILS_FE_VAL_1) (action, arg, __VA_ARGS__) // count arguments #define ___MACRO_UTILS_NARGS(...) ___MACRO_UTILS_NARGS_(__VA_ARGS__, 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 ___MACRO_UTILS_NARGS_(_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, N, ...) N diff --git a/src/MacroUtilsGenerator.py b/src/MacroUtilsGenerator.py index d32136e..1eb76dc 100644 --- a/src/MacroUtilsGenerator.py +++ b/src/MacroUtilsGenerator.py @@ -3,22 +3,42 @@ def generator(num): file.write("//\n//\n// THIS FILE IS AUTOGENERATED, DO NOT EDIT!\n//\n//\n") - file.write("// Defines a for each macro utility, with up to " + str(num) + " elements.\n") + file.write("// Defines a for each macro utility, with up to " + str(num) + " elements.\n") file.write("#define ___MACRO_UTILS_FE_0(FUNC, arg)\n") file.write("#define ___MACRO_UTILS_FE_1(FUNC, arg, X) FUNC(X, arg)\n") for i in range(2, num + 1): - file.write("#define ___MACRO_UTILS_FE_" + str(i) + "(FUNC, arg, X, ...) FUNC(X, arg) ___MACRO_UTILS_FE_" + str(i -1) + "(FUNC, arg, __VA_ARGS__)\n") + file.write("#define ___MACRO_UTILS_FE_" + str(i) + "(FUNC, arg, X, ...) FUNC(X, arg) ___MACRO_UTILS_FE_" + + str(i - 1) + "(FUNC, arg, __VA_ARGS__)\n") file.write("#define ___MACRO_UTILS_FE_" + str(num + 1) +"(FUNC, arg, X, ...) THE_FOREACH_MACRO_CURRENTLY_ONLY_SUPPORTS_UP_TO_" + str(num) + "_VALUES ___MACRO_UTILS_FE_" + str(num) + "(FUNC, arg, __VA_ARGS__)\n") + file.write("#define ___MACRO_UTILS_FE_VAL_0(FUNC, arg)\n") + file.write("#define ___MACRO_UTILS_FE_VAL_1(FUNC, arg, X) FUNC(X, arg)\n") + for i in range(2, num + 1): + file.write("#define ___MACRO_UTILS_FE_VAL_" + str(i) + "(FUNC, arg, X, ...) FUNC(X, arg -" + str(i - 1) + ") ___MACRO_UTILS_FE_VAL_" + + str(i - 1) + "(FUNC, arg , __VA_ARGS__)\n") + file.write("#define ___MACRO_UTILS_FE_VAL_" + str(num + 1) +"(FUNC, arg, X, ...) THE_FOREACH_MACRO_CURRENTLY_ONLY_SUPPORTS_UP_TO_" + + str(num) + "_VALUES ___MACRO_UTILS_FE_VAL_" + str(num) + "(FUNC, arg, __VA_ARGS__)\n") + file.write("#define ___MACRO_UTILS_GET_MACRO(") for i in range(0, num + 2): file.write("_" + str(i) + ", ") file.write("NAME, ...) NAME\n") + file.write("#define MACRO_UTILS_FOR_EACH(action, arg, ...) ___MACRO_UTILS_GET_MACRO(_0, __VA_ARGS__") for i in range(num + 1, 0, -1): file.write(", ___MACRO_UTILS_FE_" + str(i)) file.write(") (action, arg, __VA_ARGS__)\n") + file.write("#define ___MACRO_UTILS_GET_MACRO_WITH_VALUE(") + for i in range(0, num + 2): + file.write("_" + str(i) + ", ") + file.write("NAME, ...) NAME\n") + + file.write("#define MACRO_UTILS_FOR_EACH_WITH_VALUE(action, arg, ...) ___MACRO_UTILS_GET_MACRO_WITH_VALUE(_0, __VA_ARGS__") + for i in range(num + 1, 0, -1): + file.write(", ___MACRO_UTILS_FE_VAL_" + str(i)) + file.write(") (action, arg, __VA_ARGS__)\n") + file.write("// count arguments\n") file.write("#define ___MACRO_UTILS_NARGS(...) ___MACRO_UTILS_NARGS_(__VA_ARGS__") for i in range(num, -1, -1):