From 07ccd904bb28607f7375e8968baa1a7e7e834c22 Mon Sep 17 00:00:00 2001 From: qicosmos Date: Thu, 18 Jul 2024 15:09:33 +0800 Subject: [PATCH 1/6] user reflection --- .../ylt/reflection/internal/args_count.hpp | 26 + .../ylt/reflection/internal/common_macro.hpp | 7 + .../internal/foreach_user_macro.hpp | 11 + .../generate/foreach_user_macro_gen.hpp | 260 ++ .../generate/visit_user_macro_gen.hpp | 3374 +++++++++++++++++ .../reflection/internal/visit_user_macro.hpp | 8 + include/ylt/reflection/user_reflect_macro.hpp | 25 + src/reflection/tests/test_reflection.cpp | 56 +- 8 files changed, 3756 insertions(+), 11 deletions(-) create mode 100644 include/ylt/reflection/internal/args_count.hpp create mode 100644 include/ylt/reflection/internal/common_macro.hpp create mode 100644 include/ylt/reflection/internal/foreach_user_macro.hpp create mode 100644 include/ylt/reflection/internal/generate/foreach_user_macro_gen.hpp create mode 100644 include/ylt/reflection/internal/generate/visit_user_macro_gen.hpp create mode 100644 include/ylt/reflection/internal/visit_user_macro.hpp create mode 100644 include/ylt/reflection/user_reflect_macro.hpp diff --git a/include/ylt/reflection/internal/args_count.hpp b/include/ylt/reflection/internal/args_count.hpp new file mode 100644 index 000000000..a1d0bb601 --- /dev/null +++ b/include/ylt/reflection/internal/args_count.hpp @@ -0,0 +1,26 @@ +#pragma once + +#define YLT_MARCO_EXPAND(...) __VA_ARGS__ + +#define YLT_ARG_COUNT(...) \ + YLT_MARCO_EXPAND(YLT_ARG_COUNT_IMPL( \ + 0, ##__VA_ARGS__, 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 YLT_ARG_COUNT_IMPL( \ + _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ + _17, _18, _19, _20, _21, _22, _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, N, ...) \ + N diff --git a/include/ylt/reflection/internal/common_macro.hpp b/include/ylt/reflection/internal/common_macro.hpp new file mode 100644 index 000000000..7213fc1d4 --- /dev/null +++ b/include/ylt/reflection/internal/common_macro.hpp @@ -0,0 +1,7 @@ +#pragma once +#include "args_count.hpp" +#define YLT_CONCAT_(l, r) l##r + +#define YLT_CONCAT(l, r) YLT_CONCAT_(l, r) + +#define CONCAT_MEMBER(t, x) t.x diff --git a/include/ylt/reflection/internal/foreach_user_macro.hpp b/include/ylt/reflection/internal/foreach_user_macro.hpp new file mode 100644 index 000000000..af8563988 --- /dev/null +++ b/include/ylt/reflection/internal/foreach_user_macro.hpp @@ -0,0 +1,11 @@ +#pragma once +#include "common_macro.hpp" + +#define YLT_CALL0(f, o) +#define YLT_CALL1(f, o, _1) f(CONCAT_MEMBER(o, _1)); + +#include "generate/foreach_user_macro_gen.hpp" + +#define YLT_FOREACH_(fun, funarg, ...) \ + YLT_CONCAT(YLT_CALL, YLT_ARG_COUNT(__VA_ARGS__))(fun, funarg, __VA_ARGS__) +#define YLT_FOREACH(fun, funarg, ...) YLT_FOREACH_(fun, funarg, __VA_ARGS__) diff --git a/include/ylt/reflection/internal/generate/foreach_user_macro_gen.hpp b/include/ylt/reflection/internal/generate/foreach_user_macro_gen.hpp new file mode 100644 index 000000000..052854f86 --- /dev/null +++ b/include/ylt/reflection/internal/generate/foreach_user_macro_gen.hpp @@ -0,0 +1,260 @@ +/* +macro = "#define YLT_CALL" +with open("generated_foreach.txt", "w", encoding="utf-8") as codefile: + codefile.write( + "\n".join( + [ + f"{macro}{i}(f,o,_1, ...) YLT_CALL1(f,o,_1) +YLT_CALL{i-1}(f,o,__VA_ARGS__)" for i in range(2, 126) + ] + ) + ) +*/ +#define YLT_CALL2(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL1(f, o, __VA_ARGS__) +#define YLT_CALL3(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL2(f, o, __VA_ARGS__) +#define YLT_CALL4(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL3(f, o, __VA_ARGS__) +#define YLT_CALL5(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL4(f, o, __VA_ARGS__) +#define YLT_CALL6(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL5(f, o, __VA_ARGS__) +#define YLT_CALL7(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL6(f, o, __VA_ARGS__) +#define YLT_CALL8(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL7(f, o, __VA_ARGS__) +#define YLT_CALL9(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL8(f, o, __VA_ARGS__) +#define YLT_CALL10(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL9(f, o, __VA_ARGS__) +#define YLT_CALL11(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL10(f, o, __VA_ARGS__) +#define YLT_CALL12(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL11(f, o, __VA_ARGS__) +#define YLT_CALL13(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL12(f, o, __VA_ARGS__) +#define YLT_CALL14(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL13(f, o, __VA_ARGS__) +#define YLT_CALL15(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL14(f, o, __VA_ARGS__) +#define YLT_CALL16(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL15(f, o, __VA_ARGS__) +#define YLT_CALL17(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL16(f, o, __VA_ARGS__) +#define YLT_CALL18(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL17(f, o, __VA_ARGS__) +#define YLT_CALL19(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL18(f, o, __VA_ARGS__) +#define YLT_CALL20(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL19(f, o, __VA_ARGS__) +#define YLT_CALL21(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL20(f, o, __VA_ARGS__) +#define YLT_CALL22(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL21(f, o, __VA_ARGS__) +#define YLT_CALL23(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL22(f, o, __VA_ARGS__) +#define YLT_CALL24(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL23(f, o, __VA_ARGS__) +#define YLT_CALL25(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL24(f, o, __VA_ARGS__) +#define YLT_CALL26(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL25(f, o, __VA_ARGS__) +#define YLT_CALL27(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL26(f, o, __VA_ARGS__) +#define YLT_CALL28(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL27(f, o, __VA_ARGS__) +#define YLT_CALL29(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL28(f, o, __VA_ARGS__) +#define YLT_CALL30(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL29(f, o, __VA_ARGS__) +#define YLT_CALL31(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL30(f, o, __VA_ARGS__) +#define YLT_CALL32(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL31(f, o, __VA_ARGS__) +#define YLT_CALL33(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL32(f, o, __VA_ARGS__) +#define YLT_CALL34(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL33(f, o, __VA_ARGS__) +#define YLT_CALL35(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL34(f, o, __VA_ARGS__) +#define YLT_CALL36(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL35(f, o, __VA_ARGS__) +#define YLT_CALL37(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL36(f, o, __VA_ARGS__) +#define YLT_CALL38(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL37(f, o, __VA_ARGS__) +#define YLT_CALL39(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL38(f, o, __VA_ARGS__) +#define YLT_CALL40(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL39(f, o, __VA_ARGS__) +#define YLT_CALL41(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL40(f, o, __VA_ARGS__) +#define YLT_CALL42(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL41(f, o, __VA_ARGS__) +#define YLT_CALL43(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL42(f, o, __VA_ARGS__) +#define YLT_CALL44(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL43(f, o, __VA_ARGS__) +#define YLT_CALL45(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL44(f, o, __VA_ARGS__) +#define YLT_CALL46(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL45(f, o, __VA_ARGS__) +#define YLT_CALL47(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL46(f, o, __VA_ARGS__) +#define YLT_CALL48(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL47(f, o, __VA_ARGS__) +#define YLT_CALL49(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL48(f, o, __VA_ARGS__) +#define YLT_CALL50(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL49(f, o, __VA_ARGS__) +#define YLT_CALL51(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL50(f, o, __VA_ARGS__) +#define YLT_CALL52(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL51(f, o, __VA_ARGS__) +#define YLT_CALL53(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL52(f, o, __VA_ARGS__) +#define YLT_CALL54(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL53(f, o, __VA_ARGS__) +#define YLT_CALL55(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL54(f, o, __VA_ARGS__) +#define YLT_CALL56(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL55(f, o, __VA_ARGS__) +#define YLT_CALL57(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL56(f, o, __VA_ARGS__) +#define YLT_CALL58(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL57(f, o, __VA_ARGS__) +#define YLT_CALL59(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL58(f, o, __VA_ARGS__) +#define YLT_CALL60(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL59(f, o, __VA_ARGS__) +#define YLT_CALL61(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL60(f, o, __VA_ARGS__) +#define YLT_CALL62(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL61(f, o, __VA_ARGS__) +#define YLT_CALL63(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL62(f, o, __VA_ARGS__) +#define YLT_CALL64(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL63(f, o, __VA_ARGS__) +#define YLT_CALL65(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL64(f, o, __VA_ARGS__) +#define YLT_CALL66(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL65(f, o, __VA_ARGS__) +#define YLT_CALL67(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL66(f, o, __VA_ARGS__) +#define YLT_CALL68(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL67(f, o, __VA_ARGS__) +#define YLT_CALL69(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL68(f, o, __VA_ARGS__) +#define YLT_CALL70(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL69(f, o, __VA_ARGS__) +#define YLT_CALL71(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL70(f, o, __VA_ARGS__) +#define YLT_CALL72(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL71(f, o, __VA_ARGS__) +#define YLT_CALL73(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL72(f, o, __VA_ARGS__) +#define YLT_CALL74(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL73(f, o, __VA_ARGS__) +#define YLT_CALL75(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL74(f, o, __VA_ARGS__) +#define YLT_CALL76(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL75(f, o, __VA_ARGS__) +#define YLT_CALL77(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL76(f, o, __VA_ARGS__) +#define YLT_CALL78(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL77(f, o, __VA_ARGS__) +#define YLT_CALL79(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL78(f, o, __VA_ARGS__) +#define YLT_CALL80(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL79(f, o, __VA_ARGS__) +#define YLT_CALL81(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL80(f, o, __VA_ARGS__) +#define YLT_CALL82(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL81(f, o, __VA_ARGS__) +#define YLT_CALL83(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL82(f, o, __VA_ARGS__) +#define YLT_CALL84(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL83(f, o, __VA_ARGS__) +#define YLT_CALL85(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL84(f, o, __VA_ARGS__) +#define YLT_CALL86(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL85(f, o, __VA_ARGS__) +#define YLT_CALL87(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL86(f, o, __VA_ARGS__) +#define YLT_CALL88(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL87(f, o, __VA_ARGS__) +#define YLT_CALL89(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL88(f, o, __VA_ARGS__) +#define YLT_CALL90(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL89(f, o, __VA_ARGS__) +#define YLT_CALL91(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL90(f, o, __VA_ARGS__) +#define YLT_CALL92(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL91(f, o, __VA_ARGS__) +#define YLT_CALL93(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL92(f, o, __VA_ARGS__) +#define YLT_CALL94(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL93(f, o, __VA_ARGS__) +#define YLT_CALL95(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL94(f, o, __VA_ARGS__) +#define YLT_CALL96(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL95(f, o, __VA_ARGS__) +#define YLT_CALL97(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL96(f, o, __VA_ARGS__) +#define YLT_CALL98(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL97(f, o, __VA_ARGS__) +#define YLT_CALL99(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL98(f, o, __VA_ARGS__) +#define YLT_CALL100(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL99(f, o, __VA_ARGS__) +#define YLT_CALL101(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL100(f, o, __VA_ARGS__) +#define YLT_CALL102(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL101(f, o, __VA_ARGS__) +#define YLT_CALL103(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL102(f, o, __VA_ARGS__) +#define YLT_CALL104(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL103(f, o, __VA_ARGS__) +#define YLT_CALL105(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL104(f, o, __VA_ARGS__) +#define YLT_CALL106(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL105(f, o, __VA_ARGS__) +#define YLT_CALL107(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL106(f, o, __VA_ARGS__) +#define YLT_CALL108(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL107(f, o, __VA_ARGS__) +#define YLT_CALL109(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL108(f, o, __VA_ARGS__) +#define YLT_CALL110(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL109(f, o, __VA_ARGS__) +#define YLT_CALL111(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL110(f, o, __VA_ARGS__) +#define YLT_CALL112(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL111(f, o, __VA_ARGS__) +#define YLT_CALL113(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL112(f, o, __VA_ARGS__) +#define YLT_CALL114(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL113(f, o, __VA_ARGS__) +#define YLT_CALL115(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL114(f, o, __VA_ARGS__) +#define YLT_CALL116(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL115(f, o, __VA_ARGS__) +#define YLT_CALL117(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL116(f, o, __VA_ARGS__) +#define YLT_CALL118(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL117(f, o, __VA_ARGS__) +#define YLT_CALL119(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL118(f, o, __VA_ARGS__) +#define YLT_CALL120(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL119(f, o, __VA_ARGS__) +#define YLT_CALL121(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL120(f, o, __VA_ARGS__) +#define YLT_CALL122(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL121(f, o, __VA_ARGS__) +#define YLT_CALL123(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL122(f, o, __VA_ARGS__) +#define YLT_CALL124(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL123(f, o, __VA_ARGS__) +#define YLT_CALL125(f, o, _1, ...) \ + YLT_CALL1(f, o, _1) YLT_CALL124(f, o, __VA_ARGS__) diff --git a/include/ylt/reflection/internal/generate/visit_user_macro_gen.hpp b/include/ylt/reflection/internal/generate/visit_user_macro_gen.hpp new file mode 100644 index 000000000..b0380e91e --- /dev/null +++ b/include/ylt/reflection/internal/generate/visit_user_macro_gen.hpp @@ -0,0 +1,3374 @@ +/*The following boilerplate code was generated using a Python script: +macro = "#define YLT_CALL_ARGS" +with open("generated_visit_code.txt", "w", encoding="utf-8") as codefile: + codefile.write( + "\n".join( + [ + f"{macro}{i-1}(f,o{''.join([f',_{j}' for j in range(1,i)])}) +f({', '.join([f'CONCAT_MEMBER(o,_{j})' for j in range(1,i)])})" for i in +range(1, 127) + ] + ) + ) +*/ +#define YLT_CALL_ARGS0(f, o) f() +#define YLT_CALL_ARGS1(f, o, _1) f(CONCAT_MEMBER(o, _1)) +#define YLT_CALL_ARGS2(f, o, _1, _2) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2)) +#define YLT_CALL_ARGS3(f, o, _1, _2, _3) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3)) +#define YLT_CALL_ARGS4(f, o, _1, _2, _3, _4) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4)) +#define YLT_CALL_ARGS5(f, o, _1, _2, _3, _4, _5) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5)) +#define YLT_CALL_ARGS6(f, o, _1, _2, _3, _4, _5, _6) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6)) +#define YLT_CALL_ARGS7(f, o, _1, _2, _3, _4, _5, _6, _7) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7)) +#define YLT_CALL_ARGS8(f, o, _1, _2, _3, _4, _5, _6, _7, _8) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8)) +#define YLT_CALL_ARGS9(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9)) +#define YLT_CALL_ARGS10(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10)) +#define YLT_CALL_ARGS11(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11)) +#define YLT_CALL_ARGS12(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12)) +#define YLT_CALL_ARGS13(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13)) +#define YLT_CALL_ARGS14(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14)) +#define YLT_CALL_ARGS15(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15)) +#define YLT_CALL_ARGS16(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15, _16) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16)) +#define YLT_CALL_ARGS17(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15, _16, _17) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17)) +#define YLT_CALL_ARGS18(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15, _16, _17, _18) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18)) +#define YLT_CALL_ARGS19(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15, _16, _17, _18, _19) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19)) +#define YLT_CALL_ARGS20(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15, _16, _17, _18, _19, _20) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20)) +#define YLT_CALL_ARGS21(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15, _16, _17, _18, _19, _20, _21) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21)) +#define YLT_CALL_ARGS22(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22)) +#define YLT_CALL_ARGS23(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, \ + _23) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23)) +#define YLT_CALL_ARGS24(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, \ + _23, _24) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24)) +#define YLT_CALL_ARGS25(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, \ + _23, _24, _25) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25)) +#define YLT_CALL_ARGS26(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, \ + _23, _24, _25, _26) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26)) +#define YLT_CALL_ARGS27(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, \ + _23, _24, _25, _26, _27) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27)) +#define YLT_CALL_ARGS28(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, \ + _23, _24, _25, _26, _27, _28) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28)) +#define YLT_CALL_ARGS29(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, \ + _23, _24, _25, _26, _27, _28, _29) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29)) +#define YLT_CALL_ARGS30(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, \ + _23, _24, _25, _26, _27, _28, _29, _30) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30)) +#define YLT_CALL_ARGS31(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, \ + _23, _24, _25, _26, _27, _28, _29, _30, _31) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31)) +#define YLT_CALL_ARGS32(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, \ + _23, _24, _25, _26, _27, _28, _29, _30, _31, _32) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32)) +#define YLT_CALL_ARGS33(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, \ + _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33)) +#define YLT_CALL_ARGS34(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, \ + _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, \ + _34) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34)) +#define YLT_CALL_ARGS35(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, \ + _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, \ + _34, _35) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35)) +#define YLT_CALL_ARGS36(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, \ + _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, \ + _34, _35, _36) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36)) +#define YLT_CALL_ARGS37(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, \ + _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, \ + _34, _35, _36, _37) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37)) +#define YLT_CALL_ARGS38(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, \ + _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, \ + _34, _35, _36, _37, _38) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38)) +#define YLT_CALL_ARGS39(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, \ + _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, \ + _34, _35, _36, _37, _38, _39) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39)) +#define YLT_CALL_ARGS40(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, \ + _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, \ + _34, _35, _36, _37, _38, _39, _40) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40)) +#define YLT_CALL_ARGS41(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, \ + _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, \ + _34, _35, _36, _37, _38, _39, _40, _41) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41)) +#define YLT_CALL_ARGS42(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, \ + _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, \ + _34, _35, _36, _37, _38, _39, _40, _41, _42) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42)) +#define YLT_CALL_ARGS43(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, \ + _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, \ + _34, _35, _36, _37, _38, _39, _40, _41, _42, _43) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43)) +#define YLT_CALL_ARGS44(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, \ + _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, \ + _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44)) +#define YLT_CALL_ARGS45( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, \ + _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45)) +#define YLT_CALL_ARGS46(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, \ + _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, \ + _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, \ + _45, _46) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46)) +#define YLT_CALL_ARGS47(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, \ + _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47)) +#define YLT_CALL_ARGS48(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, \ + _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48)) +#define YLT_CALL_ARGS49(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, \ + _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49)) +#define YLT_CALL_ARGS50(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, \ + _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50)) +#define YLT_CALL_ARGS51(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, \ + _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51)) +#define YLT_CALL_ARGS52(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, \ + _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52)) +#define YLT_CALL_ARGS53(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, \ + _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53)) +#define YLT_CALL_ARGS54(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, \ + _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54)) +#define YLT_CALL_ARGS55(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, \ + _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55)) +#define YLT_CALL_ARGS56( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56)) +#define YLT_CALL_ARGS57( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57)) +#define YLT_CALL_ARGS58( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58)) +#define YLT_CALL_ARGS59( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59)) +#define YLT_CALL_ARGS60( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60)) +#define YLT_CALL_ARGS61(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, \ + _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61)) +#define YLT_CALL_ARGS62(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, \ + _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62)) +#define YLT_CALL_ARGS63(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, \ + _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63)) +#define YLT_CALL_ARGS64(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, \ + _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64)) +#define YLT_CALL_ARGS65(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, \ + _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65)) +#define YLT_CALL_ARGS66(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, \ + _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66)) +#define YLT_CALL_ARGS67( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67)) +#define YLT_CALL_ARGS68( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68)) +#define YLT_CALL_ARGS69( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69)) +#define YLT_CALL_ARGS70( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70)) +#define YLT_CALL_ARGS71( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71)) +#define YLT_CALL_ARGS72( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72)) +#define YLT_CALL_ARGS73( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73)) +#define YLT_CALL_ARGS74( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74)) +#define YLT_CALL_ARGS75( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75)) +#define YLT_CALL_ARGS76(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, \ + _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76)) +#define YLT_CALL_ARGS77(f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \ + _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, \ + _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77)) +#define YLT_CALL_ARGS78( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78)) +#define YLT_CALL_ARGS79( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78), \ + CONCAT_MEMBER(o, _79)) +#define YLT_CALL_ARGS80( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78), \ + CONCAT_MEMBER(o, _79), CONCAT_MEMBER(o, _80)) +#define YLT_CALL_ARGS81( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78), \ + CONCAT_MEMBER(o, _79), CONCAT_MEMBER(o, _80), CONCAT_MEMBER(o, _81)) +#define YLT_CALL_ARGS82( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78), \ + CONCAT_MEMBER(o, _79), CONCAT_MEMBER(o, _80), CONCAT_MEMBER(o, _81), \ + CONCAT_MEMBER(o, _82)) +#define YLT_CALL_ARGS83( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78), \ + CONCAT_MEMBER(o, _79), CONCAT_MEMBER(o, _80), CONCAT_MEMBER(o, _81), \ + CONCAT_MEMBER(o, _82), CONCAT_MEMBER(o, _83)) +#define YLT_CALL_ARGS84( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78), \ + CONCAT_MEMBER(o, _79), CONCAT_MEMBER(o, _80), CONCAT_MEMBER(o, _81), \ + CONCAT_MEMBER(o, _82), CONCAT_MEMBER(o, _83), CONCAT_MEMBER(o, _84)) +#define YLT_CALL_ARGS85( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78), \ + CONCAT_MEMBER(o, _79), CONCAT_MEMBER(o, _80), CONCAT_MEMBER(o, _81), \ + CONCAT_MEMBER(o, _82), CONCAT_MEMBER(o, _83), CONCAT_MEMBER(o, _84), \ + CONCAT_MEMBER(o, _85)) +#define YLT_CALL_ARGS86( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78), \ + CONCAT_MEMBER(o, _79), CONCAT_MEMBER(o, _80), CONCAT_MEMBER(o, _81), \ + CONCAT_MEMBER(o, _82), CONCAT_MEMBER(o, _83), CONCAT_MEMBER(o, _84), \ + CONCAT_MEMBER(o, _85), CONCAT_MEMBER(o, _86)) +#define YLT_CALL_ARGS87( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78), \ + CONCAT_MEMBER(o, _79), CONCAT_MEMBER(o, _80), CONCAT_MEMBER(o, _81), \ + CONCAT_MEMBER(o, _82), CONCAT_MEMBER(o, _83), CONCAT_MEMBER(o, _84), \ + CONCAT_MEMBER(o, _85), CONCAT_MEMBER(o, _86), CONCAT_MEMBER(o, _87)) +#define YLT_CALL_ARGS88( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78), \ + CONCAT_MEMBER(o, _79), CONCAT_MEMBER(o, _80), CONCAT_MEMBER(o, _81), \ + CONCAT_MEMBER(o, _82), CONCAT_MEMBER(o, _83), CONCAT_MEMBER(o, _84), \ + CONCAT_MEMBER(o, _85), CONCAT_MEMBER(o, _86), CONCAT_MEMBER(o, _87), \ + CONCAT_MEMBER(o, _88)) +#define YLT_CALL_ARGS89( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78), \ + CONCAT_MEMBER(o, _79), CONCAT_MEMBER(o, _80), CONCAT_MEMBER(o, _81), \ + CONCAT_MEMBER(o, _82), CONCAT_MEMBER(o, _83), CONCAT_MEMBER(o, _84), \ + CONCAT_MEMBER(o, _85), CONCAT_MEMBER(o, _86), CONCAT_MEMBER(o, _87), \ + CONCAT_MEMBER(o, _88), CONCAT_MEMBER(o, _89)) +#define YLT_CALL_ARGS90( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78), \ + CONCAT_MEMBER(o, _79), CONCAT_MEMBER(o, _80), CONCAT_MEMBER(o, _81), \ + CONCAT_MEMBER(o, _82), CONCAT_MEMBER(o, _83), CONCAT_MEMBER(o, _84), \ + CONCAT_MEMBER(o, _85), CONCAT_MEMBER(o, _86), CONCAT_MEMBER(o, _87), \ + CONCAT_MEMBER(o, _88), CONCAT_MEMBER(o, _89), CONCAT_MEMBER(o, _90)) +#define YLT_CALL_ARGS91( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78), \ + CONCAT_MEMBER(o, _79), CONCAT_MEMBER(o, _80), CONCAT_MEMBER(o, _81), \ + CONCAT_MEMBER(o, _82), CONCAT_MEMBER(o, _83), CONCAT_MEMBER(o, _84), \ + CONCAT_MEMBER(o, _85), CONCAT_MEMBER(o, _86), CONCAT_MEMBER(o, _87), \ + CONCAT_MEMBER(o, _88), CONCAT_MEMBER(o, _89), CONCAT_MEMBER(o, _90), \ + CONCAT_MEMBER(o, _91)) +#define YLT_CALL_ARGS92( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78), \ + CONCAT_MEMBER(o, _79), CONCAT_MEMBER(o, _80), CONCAT_MEMBER(o, _81), \ + CONCAT_MEMBER(o, _82), CONCAT_MEMBER(o, _83), CONCAT_MEMBER(o, _84), \ + CONCAT_MEMBER(o, _85), CONCAT_MEMBER(o, _86), CONCAT_MEMBER(o, _87), \ + CONCAT_MEMBER(o, _88), CONCAT_MEMBER(o, _89), CONCAT_MEMBER(o, _90), \ + CONCAT_MEMBER(o, _91), CONCAT_MEMBER(o, _92)) +#define YLT_CALL_ARGS93( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78), \ + CONCAT_MEMBER(o, _79), CONCAT_MEMBER(o, _80), CONCAT_MEMBER(o, _81), \ + CONCAT_MEMBER(o, _82), CONCAT_MEMBER(o, _83), CONCAT_MEMBER(o, _84), \ + CONCAT_MEMBER(o, _85), CONCAT_MEMBER(o, _86), CONCAT_MEMBER(o, _87), \ + CONCAT_MEMBER(o, _88), CONCAT_MEMBER(o, _89), CONCAT_MEMBER(o, _90), \ + CONCAT_MEMBER(o, _91), CONCAT_MEMBER(o, _92), CONCAT_MEMBER(o, _93)) +#define YLT_CALL_ARGS94( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78), \ + CONCAT_MEMBER(o, _79), CONCAT_MEMBER(o, _80), CONCAT_MEMBER(o, _81), \ + CONCAT_MEMBER(o, _82), CONCAT_MEMBER(o, _83), CONCAT_MEMBER(o, _84), \ + CONCAT_MEMBER(o, _85), CONCAT_MEMBER(o, _86), CONCAT_MEMBER(o, _87), \ + CONCAT_MEMBER(o, _88), CONCAT_MEMBER(o, _89), CONCAT_MEMBER(o, _90), \ + CONCAT_MEMBER(o, _91), CONCAT_MEMBER(o, _92), CONCAT_MEMBER(o, _93), \ + CONCAT_MEMBER(o, _94)) +#define YLT_CALL_ARGS95( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78), \ + CONCAT_MEMBER(o, _79), CONCAT_MEMBER(o, _80), CONCAT_MEMBER(o, _81), \ + CONCAT_MEMBER(o, _82), CONCAT_MEMBER(o, _83), CONCAT_MEMBER(o, _84), \ + CONCAT_MEMBER(o, _85), CONCAT_MEMBER(o, _86), CONCAT_MEMBER(o, _87), \ + CONCAT_MEMBER(o, _88), CONCAT_MEMBER(o, _89), CONCAT_MEMBER(o, _90), \ + CONCAT_MEMBER(o, _91), CONCAT_MEMBER(o, _92), CONCAT_MEMBER(o, _93), \ + CONCAT_MEMBER(o, _94), CONCAT_MEMBER(o, _95)) +#define YLT_CALL_ARGS96( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78), \ + CONCAT_MEMBER(o, _79), CONCAT_MEMBER(o, _80), CONCAT_MEMBER(o, _81), \ + CONCAT_MEMBER(o, _82), CONCAT_MEMBER(o, _83), CONCAT_MEMBER(o, _84), \ + CONCAT_MEMBER(o, _85), CONCAT_MEMBER(o, _86), CONCAT_MEMBER(o, _87), \ + CONCAT_MEMBER(o, _88), CONCAT_MEMBER(o, _89), CONCAT_MEMBER(o, _90), \ + CONCAT_MEMBER(o, _91), CONCAT_MEMBER(o, _92), CONCAT_MEMBER(o, _93), \ + CONCAT_MEMBER(o, _94), CONCAT_MEMBER(o, _95), CONCAT_MEMBER(o, _96)) +#define YLT_CALL_ARGS97( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78), \ + CONCAT_MEMBER(o, _79), CONCAT_MEMBER(o, _80), CONCAT_MEMBER(o, _81), \ + CONCAT_MEMBER(o, _82), CONCAT_MEMBER(o, _83), CONCAT_MEMBER(o, _84), \ + CONCAT_MEMBER(o, _85), CONCAT_MEMBER(o, _86), CONCAT_MEMBER(o, _87), \ + CONCAT_MEMBER(o, _88), CONCAT_MEMBER(o, _89), CONCAT_MEMBER(o, _90), \ + CONCAT_MEMBER(o, _91), CONCAT_MEMBER(o, _92), CONCAT_MEMBER(o, _93), \ + CONCAT_MEMBER(o, _94), CONCAT_MEMBER(o, _95), CONCAT_MEMBER(o, _96), \ + CONCAT_MEMBER(o, _97)) +#define YLT_CALL_ARGS98( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78), \ + CONCAT_MEMBER(o, _79), CONCAT_MEMBER(o, _80), CONCAT_MEMBER(o, _81), \ + CONCAT_MEMBER(o, _82), CONCAT_MEMBER(o, _83), CONCAT_MEMBER(o, _84), \ + CONCAT_MEMBER(o, _85), CONCAT_MEMBER(o, _86), CONCAT_MEMBER(o, _87), \ + CONCAT_MEMBER(o, _88), CONCAT_MEMBER(o, _89), CONCAT_MEMBER(o, _90), \ + CONCAT_MEMBER(o, _91), CONCAT_MEMBER(o, _92), CONCAT_MEMBER(o, _93), \ + CONCAT_MEMBER(o, _94), CONCAT_MEMBER(o, _95), CONCAT_MEMBER(o, _96), \ + CONCAT_MEMBER(o, _97), CONCAT_MEMBER(o, _98)) +#define YLT_CALL_ARGS99( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78), \ + CONCAT_MEMBER(o, _79), CONCAT_MEMBER(o, _80), CONCAT_MEMBER(o, _81), \ + CONCAT_MEMBER(o, _82), CONCAT_MEMBER(o, _83), CONCAT_MEMBER(o, _84), \ + CONCAT_MEMBER(o, _85), CONCAT_MEMBER(o, _86), CONCAT_MEMBER(o, _87), \ + CONCAT_MEMBER(o, _88), CONCAT_MEMBER(o, _89), CONCAT_MEMBER(o, _90), \ + CONCAT_MEMBER(o, _91), CONCAT_MEMBER(o, _92), CONCAT_MEMBER(o, _93), \ + CONCAT_MEMBER(o, _94), CONCAT_MEMBER(o, _95), CONCAT_MEMBER(o, _96), \ + CONCAT_MEMBER(o, _97), CONCAT_MEMBER(o, _98), CONCAT_MEMBER(o, _99)) +#define YLT_CALL_ARGS100( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78), \ + CONCAT_MEMBER(o, _79), CONCAT_MEMBER(o, _80), CONCAT_MEMBER(o, _81), \ + CONCAT_MEMBER(o, _82), CONCAT_MEMBER(o, _83), CONCAT_MEMBER(o, _84), \ + CONCAT_MEMBER(o, _85), CONCAT_MEMBER(o, _86), CONCAT_MEMBER(o, _87), \ + CONCAT_MEMBER(o, _88), CONCAT_MEMBER(o, _89), CONCAT_MEMBER(o, _90), \ + CONCAT_MEMBER(o, _91), CONCAT_MEMBER(o, _92), CONCAT_MEMBER(o, _93), \ + CONCAT_MEMBER(o, _94), CONCAT_MEMBER(o, _95), CONCAT_MEMBER(o, _96), \ + CONCAT_MEMBER(o, _97), CONCAT_MEMBER(o, _98), CONCAT_MEMBER(o, _99), \ + CONCAT_MEMBER(o, _100)) +#define YLT_CALL_ARGS101( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78), \ + CONCAT_MEMBER(o, _79), CONCAT_MEMBER(o, _80), CONCAT_MEMBER(o, _81), \ + CONCAT_MEMBER(o, _82), CONCAT_MEMBER(o, _83), CONCAT_MEMBER(o, _84), \ + CONCAT_MEMBER(o, _85), CONCAT_MEMBER(o, _86), CONCAT_MEMBER(o, _87), \ + CONCAT_MEMBER(o, _88), CONCAT_MEMBER(o, _89), CONCAT_MEMBER(o, _90), \ + CONCAT_MEMBER(o, _91), CONCAT_MEMBER(o, _92), CONCAT_MEMBER(o, _93), \ + CONCAT_MEMBER(o, _94), CONCAT_MEMBER(o, _95), CONCAT_MEMBER(o, _96), \ + CONCAT_MEMBER(o, _97), CONCAT_MEMBER(o, _98), CONCAT_MEMBER(o, _99), \ + CONCAT_MEMBER(o, _100), CONCAT_MEMBER(o, _101)) +#define YLT_CALL_ARGS102( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78), \ + CONCAT_MEMBER(o, _79), CONCAT_MEMBER(o, _80), CONCAT_MEMBER(o, _81), \ + CONCAT_MEMBER(o, _82), CONCAT_MEMBER(o, _83), CONCAT_MEMBER(o, _84), \ + CONCAT_MEMBER(o, _85), CONCAT_MEMBER(o, _86), CONCAT_MEMBER(o, _87), \ + CONCAT_MEMBER(o, _88), CONCAT_MEMBER(o, _89), CONCAT_MEMBER(o, _90), \ + CONCAT_MEMBER(o, _91), CONCAT_MEMBER(o, _92), CONCAT_MEMBER(o, _93), \ + CONCAT_MEMBER(o, _94), CONCAT_MEMBER(o, _95), CONCAT_MEMBER(o, _96), \ + CONCAT_MEMBER(o, _97), CONCAT_MEMBER(o, _98), CONCAT_MEMBER(o, _99), \ + CONCAT_MEMBER(o, _100), CONCAT_MEMBER(o, _101), CONCAT_MEMBER(o, _102)) +#define YLT_CALL_ARGS103( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78), \ + CONCAT_MEMBER(o, _79), CONCAT_MEMBER(o, _80), CONCAT_MEMBER(o, _81), \ + CONCAT_MEMBER(o, _82), CONCAT_MEMBER(o, _83), CONCAT_MEMBER(o, _84), \ + CONCAT_MEMBER(o, _85), CONCAT_MEMBER(o, _86), CONCAT_MEMBER(o, _87), \ + CONCAT_MEMBER(o, _88), CONCAT_MEMBER(o, _89), CONCAT_MEMBER(o, _90), \ + CONCAT_MEMBER(o, _91), CONCAT_MEMBER(o, _92), CONCAT_MEMBER(o, _93), \ + CONCAT_MEMBER(o, _94), CONCAT_MEMBER(o, _95), CONCAT_MEMBER(o, _96), \ + CONCAT_MEMBER(o, _97), CONCAT_MEMBER(o, _98), CONCAT_MEMBER(o, _99), \ + CONCAT_MEMBER(o, _100), CONCAT_MEMBER(o, _101), CONCAT_MEMBER(o, _102), \ + CONCAT_MEMBER(o, _103)) +#define YLT_CALL_ARGS104( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78), \ + CONCAT_MEMBER(o, _79), CONCAT_MEMBER(o, _80), CONCAT_MEMBER(o, _81), \ + CONCAT_MEMBER(o, _82), CONCAT_MEMBER(o, _83), CONCAT_MEMBER(o, _84), \ + CONCAT_MEMBER(o, _85), CONCAT_MEMBER(o, _86), CONCAT_MEMBER(o, _87), \ + CONCAT_MEMBER(o, _88), CONCAT_MEMBER(o, _89), CONCAT_MEMBER(o, _90), \ + CONCAT_MEMBER(o, _91), CONCAT_MEMBER(o, _92), CONCAT_MEMBER(o, _93), \ + CONCAT_MEMBER(o, _94), CONCAT_MEMBER(o, _95), CONCAT_MEMBER(o, _96), \ + CONCAT_MEMBER(o, _97), CONCAT_MEMBER(o, _98), CONCAT_MEMBER(o, _99), \ + CONCAT_MEMBER(o, _100), CONCAT_MEMBER(o, _101), CONCAT_MEMBER(o, _102), \ + CONCAT_MEMBER(o, _103), CONCAT_MEMBER(o, _104)) +#define YLT_CALL_ARGS105( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78), \ + CONCAT_MEMBER(o, _79), CONCAT_MEMBER(o, _80), CONCAT_MEMBER(o, _81), \ + CONCAT_MEMBER(o, _82), CONCAT_MEMBER(o, _83), CONCAT_MEMBER(o, _84), \ + CONCAT_MEMBER(o, _85), CONCAT_MEMBER(o, _86), CONCAT_MEMBER(o, _87), \ + CONCAT_MEMBER(o, _88), CONCAT_MEMBER(o, _89), CONCAT_MEMBER(o, _90), \ + CONCAT_MEMBER(o, _91), CONCAT_MEMBER(o, _92), CONCAT_MEMBER(o, _93), \ + CONCAT_MEMBER(o, _94), CONCAT_MEMBER(o, _95), CONCAT_MEMBER(o, _96), \ + CONCAT_MEMBER(o, _97), CONCAT_MEMBER(o, _98), CONCAT_MEMBER(o, _99), \ + CONCAT_MEMBER(o, _100), CONCAT_MEMBER(o, _101), CONCAT_MEMBER(o, _102), \ + CONCAT_MEMBER(o, _103), CONCAT_MEMBER(o, _104), CONCAT_MEMBER(o, _105)) +#define YLT_CALL_ARGS106( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78), \ + CONCAT_MEMBER(o, _79), CONCAT_MEMBER(o, _80), CONCAT_MEMBER(o, _81), \ + CONCAT_MEMBER(o, _82), CONCAT_MEMBER(o, _83), CONCAT_MEMBER(o, _84), \ + CONCAT_MEMBER(o, _85), CONCAT_MEMBER(o, _86), CONCAT_MEMBER(o, _87), \ + CONCAT_MEMBER(o, _88), CONCAT_MEMBER(o, _89), CONCAT_MEMBER(o, _90), \ + CONCAT_MEMBER(o, _91), CONCAT_MEMBER(o, _92), CONCAT_MEMBER(o, _93), \ + CONCAT_MEMBER(o, _94), CONCAT_MEMBER(o, _95), CONCAT_MEMBER(o, _96), \ + CONCAT_MEMBER(o, _97), CONCAT_MEMBER(o, _98), CONCAT_MEMBER(o, _99), \ + CONCAT_MEMBER(o, _100), CONCAT_MEMBER(o, _101), CONCAT_MEMBER(o, _102), \ + CONCAT_MEMBER(o, _103), CONCAT_MEMBER(o, _104), CONCAT_MEMBER(o, _105), \ + CONCAT_MEMBER(o, _106)) +#define YLT_CALL_ARGS107( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78), \ + CONCAT_MEMBER(o, _79), CONCAT_MEMBER(o, _80), CONCAT_MEMBER(o, _81), \ + CONCAT_MEMBER(o, _82), CONCAT_MEMBER(o, _83), CONCAT_MEMBER(o, _84), \ + CONCAT_MEMBER(o, _85), CONCAT_MEMBER(o, _86), CONCAT_MEMBER(o, _87), \ + CONCAT_MEMBER(o, _88), CONCAT_MEMBER(o, _89), CONCAT_MEMBER(o, _90), \ + CONCAT_MEMBER(o, _91), CONCAT_MEMBER(o, _92), CONCAT_MEMBER(o, _93), \ + CONCAT_MEMBER(o, _94), CONCAT_MEMBER(o, _95), CONCAT_MEMBER(o, _96), \ + CONCAT_MEMBER(o, _97), CONCAT_MEMBER(o, _98), CONCAT_MEMBER(o, _99), \ + CONCAT_MEMBER(o, _100), CONCAT_MEMBER(o, _101), CONCAT_MEMBER(o, _102), \ + CONCAT_MEMBER(o, _103), CONCAT_MEMBER(o, _104), CONCAT_MEMBER(o, _105), \ + CONCAT_MEMBER(o, _106), CONCAT_MEMBER(o, _107)) +#define YLT_CALL_ARGS108( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78), \ + CONCAT_MEMBER(o, _79), CONCAT_MEMBER(o, _80), CONCAT_MEMBER(o, _81), \ + CONCAT_MEMBER(o, _82), CONCAT_MEMBER(o, _83), CONCAT_MEMBER(o, _84), \ + CONCAT_MEMBER(o, _85), CONCAT_MEMBER(o, _86), CONCAT_MEMBER(o, _87), \ + CONCAT_MEMBER(o, _88), CONCAT_MEMBER(o, _89), CONCAT_MEMBER(o, _90), \ + CONCAT_MEMBER(o, _91), CONCAT_MEMBER(o, _92), CONCAT_MEMBER(o, _93), \ + CONCAT_MEMBER(o, _94), CONCAT_MEMBER(o, _95), CONCAT_MEMBER(o, _96), \ + CONCAT_MEMBER(o, _97), CONCAT_MEMBER(o, _98), CONCAT_MEMBER(o, _99), \ + CONCAT_MEMBER(o, _100), CONCAT_MEMBER(o, _101), CONCAT_MEMBER(o, _102), \ + CONCAT_MEMBER(o, _103), CONCAT_MEMBER(o, _104), CONCAT_MEMBER(o, _105), \ + CONCAT_MEMBER(o, _106), CONCAT_MEMBER(o, _107), CONCAT_MEMBER(o, _108)) +#define YLT_CALL_ARGS109( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78), \ + CONCAT_MEMBER(o, _79), CONCAT_MEMBER(o, _80), CONCAT_MEMBER(o, _81), \ + CONCAT_MEMBER(o, _82), CONCAT_MEMBER(o, _83), CONCAT_MEMBER(o, _84), \ + CONCAT_MEMBER(o, _85), CONCAT_MEMBER(o, _86), CONCAT_MEMBER(o, _87), \ + CONCAT_MEMBER(o, _88), CONCAT_MEMBER(o, _89), CONCAT_MEMBER(o, _90), \ + CONCAT_MEMBER(o, _91), CONCAT_MEMBER(o, _92), CONCAT_MEMBER(o, _93), \ + CONCAT_MEMBER(o, _94), CONCAT_MEMBER(o, _95), CONCAT_MEMBER(o, _96), \ + CONCAT_MEMBER(o, _97), CONCAT_MEMBER(o, _98), CONCAT_MEMBER(o, _99), \ + CONCAT_MEMBER(o, _100), CONCAT_MEMBER(o, _101), CONCAT_MEMBER(o, _102), \ + CONCAT_MEMBER(o, _103), CONCAT_MEMBER(o, _104), CONCAT_MEMBER(o, _105), \ + CONCAT_MEMBER(o, _106), CONCAT_MEMBER(o, _107), CONCAT_MEMBER(o, _108), \ + CONCAT_MEMBER(o, _109)) +#define YLT_CALL_ARGS110( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78), \ + CONCAT_MEMBER(o, _79), CONCAT_MEMBER(o, _80), CONCAT_MEMBER(o, _81), \ + CONCAT_MEMBER(o, _82), CONCAT_MEMBER(o, _83), CONCAT_MEMBER(o, _84), \ + CONCAT_MEMBER(o, _85), CONCAT_MEMBER(o, _86), CONCAT_MEMBER(o, _87), \ + CONCAT_MEMBER(o, _88), CONCAT_MEMBER(o, _89), CONCAT_MEMBER(o, _90), \ + CONCAT_MEMBER(o, _91), CONCAT_MEMBER(o, _92), CONCAT_MEMBER(o, _93), \ + CONCAT_MEMBER(o, _94), CONCAT_MEMBER(o, _95), CONCAT_MEMBER(o, _96), \ + CONCAT_MEMBER(o, _97), CONCAT_MEMBER(o, _98), CONCAT_MEMBER(o, _99), \ + CONCAT_MEMBER(o, _100), CONCAT_MEMBER(o, _101), CONCAT_MEMBER(o, _102), \ + CONCAT_MEMBER(o, _103), CONCAT_MEMBER(o, _104), CONCAT_MEMBER(o, _105), \ + CONCAT_MEMBER(o, _106), CONCAT_MEMBER(o, _107), CONCAT_MEMBER(o, _108), \ + CONCAT_MEMBER(o, _109), CONCAT_MEMBER(o, _110)) +#define YLT_CALL_ARGS111( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78), \ + CONCAT_MEMBER(o, _79), CONCAT_MEMBER(o, _80), CONCAT_MEMBER(o, _81), \ + CONCAT_MEMBER(o, _82), CONCAT_MEMBER(o, _83), CONCAT_MEMBER(o, _84), \ + CONCAT_MEMBER(o, _85), CONCAT_MEMBER(o, _86), CONCAT_MEMBER(o, _87), \ + CONCAT_MEMBER(o, _88), CONCAT_MEMBER(o, _89), CONCAT_MEMBER(o, _90), \ + CONCAT_MEMBER(o, _91), CONCAT_MEMBER(o, _92), CONCAT_MEMBER(o, _93), \ + CONCAT_MEMBER(o, _94), CONCAT_MEMBER(o, _95), CONCAT_MEMBER(o, _96), \ + CONCAT_MEMBER(o, _97), CONCAT_MEMBER(o, _98), CONCAT_MEMBER(o, _99), \ + CONCAT_MEMBER(o, _100), CONCAT_MEMBER(o, _101), CONCAT_MEMBER(o, _102), \ + CONCAT_MEMBER(o, _103), CONCAT_MEMBER(o, _104), CONCAT_MEMBER(o, _105), \ + CONCAT_MEMBER(o, _106), CONCAT_MEMBER(o, _107), CONCAT_MEMBER(o, _108), \ + CONCAT_MEMBER(o, _109), CONCAT_MEMBER(o, _110), CONCAT_MEMBER(o, _111)) +#define YLT_CALL_ARGS112( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78), \ + CONCAT_MEMBER(o, _79), CONCAT_MEMBER(o, _80), CONCAT_MEMBER(o, _81), \ + CONCAT_MEMBER(o, _82), CONCAT_MEMBER(o, _83), CONCAT_MEMBER(o, _84), \ + CONCAT_MEMBER(o, _85), CONCAT_MEMBER(o, _86), CONCAT_MEMBER(o, _87), \ + CONCAT_MEMBER(o, _88), CONCAT_MEMBER(o, _89), CONCAT_MEMBER(o, _90), \ + CONCAT_MEMBER(o, _91), CONCAT_MEMBER(o, _92), CONCAT_MEMBER(o, _93), \ + CONCAT_MEMBER(o, _94), CONCAT_MEMBER(o, _95), CONCAT_MEMBER(o, _96), \ + CONCAT_MEMBER(o, _97), CONCAT_MEMBER(o, _98), CONCAT_MEMBER(o, _99), \ + CONCAT_MEMBER(o, _100), CONCAT_MEMBER(o, _101), CONCAT_MEMBER(o, _102), \ + CONCAT_MEMBER(o, _103), CONCAT_MEMBER(o, _104), CONCAT_MEMBER(o, _105), \ + CONCAT_MEMBER(o, _106), CONCAT_MEMBER(o, _107), CONCAT_MEMBER(o, _108), \ + CONCAT_MEMBER(o, _109), CONCAT_MEMBER(o, _110), CONCAT_MEMBER(o, _111), \ + CONCAT_MEMBER(o, _112)) +#define YLT_CALL_ARGS113( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78), \ + CONCAT_MEMBER(o, _79), CONCAT_MEMBER(o, _80), CONCAT_MEMBER(o, _81), \ + CONCAT_MEMBER(o, _82), CONCAT_MEMBER(o, _83), CONCAT_MEMBER(o, _84), \ + CONCAT_MEMBER(o, _85), CONCAT_MEMBER(o, _86), CONCAT_MEMBER(o, _87), \ + CONCAT_MEMBER(o, _88), CONCAT_MEMBER(o, _89), CONCAT_MEMBER(o, _90), \ + CONCAT_MEMBER(o, _91), CONCAT_MEMBER(o, _92), CONCAT_MEMBER(o, _93), \ + CONCAT_MEMBER(o, _94), CONCAT_MEMBER(o, _95), CONCAT_MEMBER(o, _96), \ + CONCAT_MEMBER(o, _97), CONCAT_MEMBER(o, _98), CONCAT_MEMBER(o, _99), \ + CONCAT_MEMBER(o, _100), CONCAT_MEMBER(o, _101), CONCAT_MEMBER(o, _102), \ + CONCAT_MEMBER(o, _103), CONCAT_MEMBER(o, _104), CONCAT_MEMBER(o, _105), \ + CONCAT_MEMBER(o, _106), CONCAT_MEMBER(o, _107), CONCAT_MEMBER(o, _108), \ + CONCAT_MEMBER(o, _109), CONCAT_MEMBER(o, _110), CONCAT_MEMBER(o, _111), \ + CONCAT_MEMBER(o, _112), CONCAT_MEMBER(o, _113)) +#define YLT_CALL_ARGS114( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78), \ + CONCAT_MEMBER(o, _79), CONCAT_MEMBER(o, _80), CONCAT_MEMBER(o, _81), \ + CONCAT_MEMBER(o, _82), CONCAT_MEMBER(o, _83), CONCAT_MEMBER(o, _84), \ + CONCAT_MEMBER(o, _85), CONCAT_MEMBER(o, _86), CONCAT_MEMBER(o, _87), \ + CONCAT_MEMBER(o, _88), CONCAT_MEMBER(o, _89), CONCAT_MEMBER(o, _90), \ + CONCAT_MEMBER(o, _91), CONCAT_MEMBER(o, _92), CONCAT_MEMBER(o, _93), \ + CONCAT_MEMBER(o, _94), CONCAT_MEMBER(o, _95), CONCAT_MEMBER(o, _96), \ + CONCAT_MEMBER(o, _97), CONCAT_MEMBER(o, _98), CONCAT_MEMBER(o, _99), \ + CONCAT_MEMBER(o, _100), CONCAT_MEMBER(o, _101), CONCAT_MEMBER(o, _102), \ + CONCAT_MEMBER(o, _103), CONCAT_MEMBER(o, _104), CONCAT_MEMBER(o, _105), \ + CONCAT_MEMBER(o, _106), CONCAT_MEMBER(o, _107), CONCAT_MEMBER(o, _108), \ + CONCAT_MEMBER(o, _109), CONCAT_MEMBER(o, _110), CONCAT_MEMBER(o, _111), \ + CONCAT_MEMBER(o, _112), CONCAT_MEMBER(o, _113), CONCAT_MEMBER(o, _114)) +#define YLT_CALL_ARGS115( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78), \ + CONCAT_MEMBER(o, _79), CONCAT_MEMBER(o, _80), CONCAT_MEMBER(o, _81), \ + CONCAT_MEMBER(o, _82), CONCAT_MEMBER(o, _83), CONCAT_MEMBER(o, _84), \ + CONCAT_MEMBER(o, _85), CONCAT_MEMBER(o, _86), CONCAT_MEMBER(o, _87), \ + CONCAT_MEMBER(o, _88), CONCAT_MEMBER(o, _89), CONCAT_MEMBER(o, _90), \ + CONCAT_MEMBER(o, _91), CONCAT_MEMBER(o, _92), CONCAT_MEMBER(o, _93), \ + CONCAT_MEMBER(o, _94), CONCAT_MEMBER(o, _95), CONCAT_MEMBER(o, _96), \ + CONCAT_MEMBER(o, _97), CONCAT_MEMBER(o, _98), CONCAT_MEMBER(o, _99), \ + CONCAT_MEMBER(o, _100), CONCAT_MEMBER(o, _101), CONCAT_MEMBER(o, _102), \ + CONCAT_MEMBER(o, _103), CONCAT_MEMBER(o, _104), CONCAT_MEMBER(o, _105), \ + CONCAT_MEMBER(o, _106), CONCAT_MEMBER(o, _107), CONCAT_MEMBER(o, _108), \ + CONCAT_MEMBER(o, _109), CONCAT_MEMBER(o, _110), CONCAT_MEMBER(o, _111), \ + CONCAT_MEMBER(o, _112), CONCAT_MEMBER(o, _113), CONCAT_MEMBER(o, _114), \ + CONCAT_MEMBER(o, _115)) +#define YLT_CALL_ARGS116( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78), \ + CONCAT_MEMBER(o, _79), CONCAT_MEMBER(o, _80), CONCAT_MEMBER(o, _81), \ + CONCAT_MEMBER(o, _82), CONCAT_MEMBER(o, _83), CONCAT_MEMBER(o, _84), \ + CONCAT_MEMBER(o, _85), CONCAT_MEMBER(o, _86), CONCAT_MEMBER(o, _87), \ + CONCAT_MEMBER(o, _88), CONCAT_MEMBER(o, _89), CONCAT_MEMBER(o, _90), \ + CONCAT_MEMBER(o, _91), CONCAT_MEMBER(o, _92), CONCAT_MEMBER(o, _93), \ + CONCAT_MEMBER(o, _94), CONCAT_MEMBER(o, _95), CONCAT_MEMBER(o, _96), \ + CONCAT_MEMBER(o, _97), CONCAT_MEMBER(o, _98), CONCAT_MEMBER(o, _99), \ + CONCAT_MEMBER(o, _100), CONCAT_MEMBER(o, _101), CONCAT_MEMBER(o, _102), \ + CONCAT_MEMBER(o, _103), CONCAT_MEMBER(o, _104), CONCAT_MEMBER(o, _105), \ + CONCAT_MEMBER(o, _106), CONCAT_MEMBER(o, _107), CONCAT_MEMBER(o, _108), \ + CONCAT_MEMBER(o, _109), CONCAT_MEMBER(o, _110), CONCAT_MEMBER(o, _111), \ + CONCAT_MEMBER(o, _112), CONCAT_MEMBER(o, _113), CONCAT_MEMBER(o, _114), \ + CONCAT_MEMBER(o, _115), CONCAT_MEMBER(o, _116)) +#define YLT_CALL_ARGS117( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78), \ + CONCAT_MEMBER(o, _79), CONCAT_MEMBER(o, _80), CONCAT_MEMBER(o, _81), \ + CONCAT_MEMBER(o, _82), CONCAT_MEMBER(o, _83), CONCAT_MEMBER(o, _84), \ + CONCAT_MEMBER(o, _85), CONCAT_MEMBER(o, _86), CONCAT_MEMBER(o, _87), \ + CONCAT_MEMBER(o, _88), CONCAT_MEMBER(o, _89), CONCAT_MEMBER(o, _90), \ + CONCAT_MEMBER(o, _91), CONCAT_MEMBER(o, _92), CONCAT_MEMBER(o, _93), \ + CONCAT_MEMBER(o, _94), CONCAT_MEMBER(o, _95), CONCAT_MEMBER(o, _96), \ + CONCAT_MEMBER(o, _97), CONCAT_MEMBER(o, _98), CONCAT_MEMBER(o, _99), \ + CONCAT_MEMBER(o, _100), CONCAT_MEMBER(o, _101), CONCAT_MEMBER(o, _102), \ + CONCAT_MEMBER(o, _103), CONCAT_MEMBER(o, _104), CONCAT_MEMBER(o, _105), \ + CONCAT_MEMBER(o, _106), CONCAT_MEMBER(o, _107), CONCAT_MEMBER(o, _108), \ + CONCAT_MEMBER(o, _109), CONCAT_MEMBER(o, _110), CONCAT_MEMBER(o, _111), \ + CONCAT_MEMBER(o, _112), CONCAT_MEMBER(o, _113), CONCAT_MEMBER(o, _114), \ + CONCAT_MEMBER(o, _115), CONCAT_MEMBER(o, _116), CONCAT_MEMBER(o, _117)) +#define YLT_CALL_ARGS118( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78), \ + CONCAT_MEMBER(o, _79), CONCAT_MEMBER(o, _80), CONCAT_MEMBER(o, _81), \ + CONCAT_MEMBER(o, _82), CONCAT_MEMBER(o, _83), CONCAT_MEMBER(o, _84), \ + CONCAT_MEMBER(o, _85), CONCAT_MEMBER(o, _86), CONCAT_MEMBER(o, _87), \ + CONCAT_MEMBER(o, _88), CONCAT_MEMBER(o, _89), CONCAT_MEMBER(o, _90), \ + CONCAT_MEMBER(o, _91), CONCAT_MEMBER(o, _92), CONCAT_MEMBER(o, _93), \ + CONCAT_MEMBER(o, _94), CONCAT_MEMBER(o, _95), CONCAT_MEMBER(o, _96), \ + CONCAT_MEMBER(o, _97), CONCAT_MEMBER(o, _98), CONCAT_MEMBER(o, _99), \ + CONCAT_MEMBER(o, _100), CONCAT_MEMBER(o, _101), CONCAT_MEMBER(o, _102), \ + CONCAT_MEMBER(o, _103), CONCAT_MEMBER(o, _104), CONCAT_MEMBER(o, _105), \ + CONCAT_MEMBER(o, _106), CONCAT_MEMBER(o, _107), CONCAT_MEMBER(o, _108), \ + CONCAT_MEMBER(o, _109), CONCAT_MEMBER(o, _110), CONCAT_MEMBER(o, _111), \ + CONCAT_MEMBER(o, _112), CONCAT_MEMBER(o, _113), CONCAT_MEMBER(o, _114), \ + CONCAT_MEMBER(o, _115), CONCAT_MEMBER(o, _116), CONCAT_MEMBER(o, _117), \ + CONCAT_MEMBER(o, _118)) +#define YLT_CALL_ARGS119( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78), \ + CONCAT_MEMBER(o, _79), CONCAT_MEMBER(o, _80), CONCAT_MEMBER(o, _81), \ + CONCAT_MEMBER(o, _82), CONCAT_MEMBER(o, _83), CONCAT_MEMBER(o, _84), \ + CONCAT_MEMBER(o, _85), CONCAT_MEMBER(o, _86), CONCAT_MEMBER(o, _87), \ + CONCAT_MEMBER(o, _88), CONCAT_MEMBER(o, _89), CONCAT_MEMBER(o, _90), \ + CONCAT_MEMBER(o, _91), CONCAT_MEMBER(o, _92), CONCAT_MEMBER(o, _93), \ + CONCAT_MEMBER(o, _94), CONCAT_MEMBER(o, _95), CONCAT_MEMBER(o, _96), \ + CONCAT_MEMBER(o, _97), CONCAT_MEMBER(o, _98), CONCAT_MEMBER(o, _99), \ + CONCAT_MEMBER(o, _100), CONCAT_MEMBER(o, _101), CONCAT_MEMBER(o, _102), \ + CONCAT_MEMBER(o, _103), CONCAT_MEMBER(o, _104), CONCAT_MEMBER(o, _105), \ + CONCAT_MEMBER(o, _106), CONCAT_MEMBER(o, _107), CONCAT_MEMBER(o, _108), \ + CONCAT_MEMBER(o, _109), CONCAT_MEMBER(o, _110), CONCAT_MEMBER(o, _111), \ + CONCAT_MEMBER(o, _112), CONCAT_MEMBER(o, _113), CONCAT_MEMBER(o, _114), \ + CONCAT_MEMBER(o, _115), CONCAT_MEMBER(o, _116), CONCAT_MEMBER(o, _117), \ + CONCAT_MEMBER(o, _118), CONCAT_MEMBER(o, _119)) +#define YLT_CALL_ARGS120( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78), \ + CONCAT_MEMBER(o, _79), CONCAT_MEMBER(o, _80), CONCAT_MEMBER(o, _81), \ + CONCAT_MEMBER(o, _82), CONCAT_MEMBER(o, _83), CONCAT_MEMBER(o, _84), \ + CONCAT_MEMBER(o, _85), CONCAT_MEMBER(o, _86), CONCAT_MEMBER(o, _87), \ + CONCAT_MEMBER(o, _88), CONCAT_MEMBER(o, _89), CONCAT_MEMBER(o, _90), \ + CONCAT_MEMBER(o, _91), CONCAT_MEMBER(o, _92), CONCAT_MEMBER(o, _93), \ + CONCAT_MEMBER(o, _94), CONCAT_MEMBER(o, _95), CONCAT_MEMBER(o, _96), \ + CONCAT_MEMBER(o, _97), CONCAT_MEMBER(o, _98), CONCAT_MEMBER(o, _99), \ + CONCAT_MEMBER(o, _100), CONCAT_MEMBER(o, _101), CONCAT_MEMBER(o, _102), \ + CONCAT_MEMBER(o, _103), CONCAT_MEMBER(o, _104), CONCAT_MEMBER(o, _105), \ + CONCAT_MEMBER(o, _106), CONCAT_MEMBER(o, _107), CONCAT_MEMBER(o, _108), \ + CONCAT_MEMBER(o, _109), CONCAT_MEMBER(o, _110), CONCAT_MEMBER(o, _111), \ + CONCAT_MEMBER(o, _112), CONCAT_MEMBER(o, _113), CONCAT_MEMBER(o, _114), \ + CONCAT_MEMBER(o, _115), CONCAT_MEMBER(o, _116), CONCAT_MEMBER(o, _117), \ + CONCAT_MEMBER(o, _118), CONCAT_MEMBER(o, _119), CONCAT_MEMBER(o, _120)) +#define YLT_CALL_ARGS121( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78), \ + CONCAT_MEMBER(o, _79), CONCAT_MEMBER(o, _80), CONCAT_MEMBER(o, _81), \ + CONCAT_MEMBER(o, _82), CONCAT_MEMBER(o, _83), CONCAT_MEMBER(o, _84), \ + CONCAT_MEMBER(o, _85), CONCAT_MEMBER(o, _86), CONCAT_MEMBER(o, _87), \ + CONCAT_MEMBER(o, _88), CONCAT_MEMBER(o, _89), CONCAT_MEMBER(o, _90), \ + CONCAT_MEMBER(o, _91), CONCAT_MEMBER(o, _92), CONCAT_MEMBER(o, _93), \ + CONCAT_MEMBER(o, _94), CONCAT_MEMBER(o, _95), CONCAT_MEMBER(o, _96), \ + CONCAT_MEMBER(o, _97), CONCAT_MEMBER(o, _98), CONCAT_MEMBER(o, _99), \ + CONCAT_MEMBER(o, _100), CONCAT_MEMBER(o, _101), CONCAT_MEMBER(o, _102), \ + CONCAT_MEMBER(o, _103), CONCAT_MEMBER(o, _104), CONCAT_MEMBER(o, _105), \ + CONCAT_MEMBER(o, _106), CONCAT_MEMBER(o, _107), CONCAT_MEMBER(o, _108), \ + CONCAT_MEMBER(o, _109), CONCAT_MEMBER(o, _110), CONCAT_MEMBER(o, _111), \ + CONCAT_MEMBER(o, _112), CONCAT_MEMBER(o, _113), CONCAT_MEMBER(o, _114), \ + CONCAT_MEMBER(o, _115), CONCAT_MEMBER(o, _116), CONCAT_MEMBER(o, _117), \ + CONCAT_MEMBER(o, _118), CONCAT_MEMBER(o, _119), CONCAT_MEMBER(o, _120), \ + CONCAT_MEMBER(o, _121)) +#define YLT_CALL_ARGS122( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78), \ + CONCAT_MEMBER(o, _79), CONCAT_MEMBER(o, _80), CONCAT_MEMBER(o, _81), \ + CONCAT_MEMBER(o, _82), CONCAT_MEMBER(o, _83), CONCAT_MEMBER(o, _84), \ + CONCAT_MEMBER(o, _85), CONCAT_MEMBER(o, _86), CONCAT_MEMBER(o, _87), \ + CONCAT_MEMBER(o, _88), CONCAT_MEMBER(o, _89), CONCAT_MEMBER(o, _90), \ + CONCAT_MEMBER(o, _91), CONCAT_MEMBER(o, _92), CONCAT_MEMBER(o, _93), \ + CONCAT_MEMBER(o, _94), CONCAT_MEMBER(o, _95), CONCAT_MEMBER(o, _96), \ + CONCAT_MEMBER(o, _97), CONCAT_MEMBER(o, _98), CONCAT_MEMBER(o, _99), \ + CONCAT_MEMBER(o, _100), CONCAT_MEMBER(o, _101), CONCAT_MEMBER(o, _102), \ + CONCAT_MEMBER(o, _103), CONCAT_MEMBER(o, _104), CONCAT_MEMBER(o, _105), \ + CONCAT_MEMBER(o, _106), CONCAT_MEMBER(o, _107), CONCAT_MEMBER(o, _108), \ + CONCAT_MEMBER(o, _109), CONCAT_MEMBER(o, _110), CONCAT_MEMBER(o, _111), \ + CONCAT_MEMBER(o, _112), CONCAT_MEMBER(o, _113), CONCAT_MEMBER(o, _114), \ + CONCAT_MEMBER(o, _115), CONCAT_MEMBER(o, _116), CONCAT_MEMBER(o, _117), \ + CONCAT_MEMBER(o, _118), CONCAT_MEMBER(o, _119), CONCAT_MEMBER(o, _120), \ + CONCAT_MEMBER(o, _121), CONCAT_MEMBER(o, _122)) +#define YLT_CALL_ARGS123( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78), \ + CONCAT_MEMBER(o, _79), CONCAT_MEMBER(o, _80), CONCAT_MEMBER(o, _81), \ + CONCAT_MEMBER(o, _82), CONCAT_MEMBER(o, _83), CONCAT_MEMBER(o, _84), \ + CONCAT_MEMBER(o, _85), CONCAT_MEMBER(o, _86), CONCAT_MEMBER(o, _87), \ + CONCAT_MEMBER(o, _88), CONCAT_MEMBER(o, _89), CONCAT_MEMBER(o, _90), \ + CONCAT_MEMBER(o, _91), CONCAT_MEMBER(o, _92), CONCAT_MEMBER(o, _93), \ + CONCAT_MEMBER(o, _94), CONCAT_MEMBER(o, _95), CONCAT_MEMBER(o, _96), \ + CONCAT_MEMBER(o, _97), CONCAT_MEMBER(o, _98), CONCAT_MEMBER(o, _99), \ + CONCAT_MEMBER(o, _100), CONCAT_MEMBER(o, _101), CONCAT_MEMBER(o, _102), \ + CONCAT_MEMBER(o, _103), CONCAT_MEMBER(o, _104), CONCAT_MEMBER(o, _105), \ + CONCAT_MEMBER(o, _106), CONCAT_MEMBER(o, _107), CONCAT_MEMBER(o, _108), \ + CONCAT_MEMBER(o, _109), CONCAT_MEMBER(o, _110), CONCAT_MEMBER(o, _111), \ + CONCAT_MEMBER(o, _112), CONCAT_MEMBER(o, _113), CONCAT_MEMBER(o, _114), \ + CONCAT_MEMBER(o, _115), CONCAT_MEMBER(o, _116), CONCAT_MEMBER(o, _117), \ + CONCAT_MEMBER(o, _118), CONCAT_MEMBER(o, _119), CONCAT_MEMBER(o, _120), \ + CONCAT_MEMBER(o, _121), CONCAT_MEMBER(o, _122), CONCAT_MEMBER(o, _123)) +#define YLT_CALL_ARGS124( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78), \ + CONCAT_MEMBER(o, _79), CONCAT_MEMBER(o, _80), CONCAT_MEMBER(o, _81), \ + CONCAT_MEMBER(o, _82), CONCAT_MEMBER(o, _83), CONCAT_MEMBER(o, _84), \ + CONCAT_MEMBER(o, _85), CONCAT_MEMBER(o, _86), CONCAT_MEMBER(o, _87), \ + CONCAT_MEMBER(o, _88), CONCAT_MEMBER(o, _89), CONCAT_MEMBER(o, _90), \ + CONCAT_MEMBER(o, _91), CONCAT_MEMBER(o, _92), CONCAT_MEMBER(o, _93), \ + CONCAT_MEMBER(o, _94), CONCAT_MEMBER(o, _95), CONCAT_MEMBER(o, _96), \ + CONCAT_MEMBER(o, _97), CONCAT_MEMBER(o, _98), CONCAT_MEMBER(o, _99), \ + CONCAT_MEMBER(o, _100), CONCAT_MEMBER(o, _101), CONCAT_MEMBER(o, _102), \ + CONCAT_MEMBER(o, _103), CONCAT_MEMBER(o, _104), CONCAT_MEMBER(o, _105), \ + CONCAT_MEMBER(o, _106), CONCAT_MEMBER(o, _107), CONCAT_MEMBER(o, _108), \ + CONCAT_MEMBER(o, _109), CONCAT_MEMBER(o, _110), CONCAT_MEMBER(o, _111), \ + CONCAT_MEMBER(o, _112), CONCAT_MEMBER(o, _113), CONCAT_MEMBER(o, _114), \ + CONCAT_MEMBER(o, _115), CONCAT_MEMBER(o, _116), CONCAT_MEMBER(o, _117), \ + CONCAT_MEMBER(o, _118), CONCAT_MEMBER(o, _119), CONCAT_MEMBER(o, _120), \ + CONCAT_MEMBER(o, _121), CONCAT_MEMBER(o, _122), CONCAT_MEMBER(o, _123), \ + CONCAT_MEMBER(o, _124)) +#define YLT_CALL_ARGS125( \ + f, o, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, \ + _16, _17, _18, _19, _20, _21, _22, _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) \ + f(CONCAT_MEMBER(o, _1), CONCAT_MEMBER(o, _2), CONCAT_MEMBER(o, _3), \ + CONCAT_MEMBER(o, _4), CONCAT_MEMBER(o, _5), CONCAT_MEMBER(o, _6), \ + CONCAT_MEMBER(o, _7), CONCAT_MEMBER(o, _8), CONCAT_MEMBER(o, _9), \ + CONCAT_MEMBER(o, _10), CONCAT_MEMBER(o, _11), CONCAT_MEMBER(o, _12), \ + CONCAT_MEMBER(o, _13), CONCAT_MEMBER(o, _14), CONCAT_MEMBER(o, _15), \ + CONCAT_MEMBER(o, _16), CONCAT_MEMBER(o, _17), CONCAT_MEMBER(o, _18), \ + CONCAT_MEMBER(o, _19), CONCAT_MEMBER(o, _20), CONCAT_MEMBER(o, _21), \ + CONCAT_MEMBER(o, _22), CONCAT_MEMBER(o, _23), CONCAT_MEMBER(o, _24), \ + CONCAT_MEMBER(o, _25), CONCAT_MEMBER(o, _26), CONCAT_MEMBER(o, _27), \ + CONCAT_MEMBER(o, _28), CONCAT_MEMBER(o, _29), CONCAT_MEMBER(o, _30), \ + CONCAT_MEMBER(o, _31), CONCAT_MEMBER(o, _32), CONCAT_MEMBER(o, _33), \ + CONCAT_MEMBER(o, _34), CONCAT_MEMBER(o, _35), CONCAT_MEMBER(o, _36), \ + CONCAT_MEMBER(o, _37), CONCAT_MEMBER(o, _38), CONCAT_MEMBER(o, _39), \ + CONCAT_MEMBER(o, _40), CONCAT_MEMBER(o, _41), CONCAT_MEMBER(o, _42), \ + CONCAT_MEMBER(o, _43), CONCAT_MEMBER(o, _44), CONCAT_MEMBER(o, _45), \ + CONCAT_MEMBER(o, _46), CONCAT_MEMBER(o, _47), CONCAT_MEMBER(o, _48), \ + CONCAT_MEMBER(o, _49), CONCAT_MEMBER(o, _50), CONCAT_MEMBER(o, _51), \ + CONCAT_MEMBER(o, _52), CONCAT_MEMBER(o, _53), CONCAT_MEMBER(o, _54), \ + CONCAT_MEMBER(o, _55), CONCAT_MEMBER(o, _56), CONCAT_MEMBER(o, _57), \ + CONCAT_MEMBER(o, _58), CONCAT_MEMBER(o, _59), CONCAT_MEMBER(o, _60), \ + CONCAT_MEMBER(o, _61), CONCAT_MEMBER(o, _62), CONCAT_MEMBER(o, _63), \ + CONCAT_MEMBER(o, _64), CONCAT_MEMBER(o, _65), CONCAT_MEMBER(o, _66), \ + CONCAT_MEMBER(o, _67), CONCAT_MEMBER(o, _68), CONCAT_MEMBER(o, _69), \ + CONCAT_MEMBER(o, _70), CONCAT_MEMBER(o, _71), CONCAT_MEMBER(o, _72), \ + CONCAT_MEMBER(o, _73), CONCAT_MEMBER(o, _74), CONCAT_MEMBER(o, _75), \ + CONCAT_MEMBER(o, _76), CONCAT_MEMBER(o, _77), CONCAT_MEMBER(o, _78), \ + CONCAT_MEMBER(o, _79), CONCAT_MEMBER(o, _80), CONCAT_MEMBER(o, _81), \ + CONCAT_MEMBER(o, _82), CONCAT_MEMBER(o, _83), CONCAT_MEMBER(o, _84), \ + CONCAT_MEMBER(o, _85), CONCAT_MEMBER(o, _86), CONCAT_MEMBER(o, _87), \ + CONCAT_MEMBER(o, _88), CONCAT_MEMBER(o, _89), CONCAT_MEMBER(o, _90), \ + CONCAT_MEMBER(o, _91), CONCAT_MEMBER(o, _92), CONCAT_MEMBER(o, _93), \ + CONCAT_MEMBER(o, _94), CONCAT_MEMBER(o, _95), CONCAT_MEMBER(o, _96), \ + CONCAT_MEMBER(o, _97), CONCAT_MEMBER(o, _98), CONCAT_MEMBER(o, _99), \ + CONCAT_MEMBER(o, _100), CONCAT_MEMBER(o, _101), CONCAT_MEMBER(o, _102), \ + CONCAT_MEMBER(o, _103), CONCAT_MEMBER(o, _104), CONCAT_MEMBER(o, _105), \ + CONCAT_MEMBER(o, _106), CONCAT_MEMBER(o, _107), CONCAT_MEMBER(o, _108), \ + CONCAT_MEMBER(o, _109), CONCAT_MEMBER(o, _110), CONCAT_MEMBER(o, _111), \ + CONCAT_MEMBER(o, _112), CONCAT_MEMBER(o, _113), CONCAT_MEMBER(o, _114), \ + CONCAT_MEMBER(o, _115), CONCAT_MEMBER(o, _116), CONCAT_MEMBER(o, _117), \ + CONCAT_MEMBER(o, _118), CONCAT_MEMBER(o, _119), CONCAT_MEMBER(o, _120), \ + CONCAT_MEMBER(o, _121), CONCAT_MEMBER(o, _122), CONCAT_MEMBER(o, _123), \ + CONCAT_MEMBER(o, _124), CONCAT_MEMBER(o, _125)) diff --git a/include/ylt/reflection/internal/visit_user_macro.hpp b/include/ylt/reflection/internal/visit_user_macro.hpp new file mode 100644 index 000000000..9b619bf2c --- /dev/null +++ b/include/ylt/reflection/internal/visit_user_macro.hpp @@ -0,0 +1,8 @@ +#pragma once +#include "common_macro.hpp" +#include "generate/visit_user_macro_gen.hpp" + +#define YLT_VISIT_(func, object, ...) \ + YLT_CONCAT(YLT_CALL_ARGS, YLT_ARG_COUNT(__VA_ARGS__)) \ + (func, object, __VA_ARGS__) +#define YLT_VISIT(func, object, ...) YLT_VISIT_(func, object, __VA_ARGS__) diff --git a/include/ylt/reflection/user_reflect_macro.hpp b/include/ylt/reflection/user_reflect_macro.hpp new file mode 100644 index 000000000..e055bc2a8 --- /dev/null +++ b/include/ylt/reflection/user_reflect_macro.hpp @@ -0,0 +1,25 @@ +#pragma once +#include "internal/foreach_user_macro.hpp" +#include "internal/visit_user_macro.hpp" + +namespace ylt::reflection { +#define YLT_REFL(STRUCT, ...) \ + template \ + inline static constexpr decltype(auto) visit_members(STRUCT &t, \ + Visitor &&visitor) { \ + return YLT_VISIT(visitor, t, __VA_ARGS__); \ + } \ + template \ + inline static constexpr void for_each(STRUCT &t, Visitor &&visitor) { \ + YLT_FOREACH(visitor, t, __VA_ARGS__); \ + } \ + template \ + inline static constexpr decltype(auto) visit_members(const STRUCT &t, \ + Visitor &&visitor) { \ + return YLT_VISIT(visitor, t, __VA_ARGS__); \ + } \ + template \ + inline static constexpr void for_each(const STRUCT &t, Visitor &&visitor) { \ + YLT_FOREACH(visitor, t, __VA_ARGS__); \ + } +} // namespace ylt::reflection diff --git a/src/reflection/tests/test_reflection.cpp b/src/reflection/tests/test_reflection.cpp index bf6b90bb6..9750b37e5 100644 --- a/src/reflection/tests/test_reflection.cpp +++ b/src/reflection/tests/test_reflection.cpp @@ -2,13 +2,20 @@ #include #include "ylt/reflection/template_switch.hpp" +#include "ylt/reflection/user_reflect_macro.hpp" #define DOCTEST_CONFIG_IMPLEMENT #include "doctest.h" -#if (__has_include() || defined(__clang__) || defined(_MSC_VER)) || \ - (defined(__GNUC__) && __GNUC__ > 10) +struct simple { + int color; + int id; + std::string str; + int age; +}; +#if (defined(__GNUC__) && __GNUC__ > 10) || defined(__clang__) || \ + defined(_MSC_VER) #include "ylt/reflection/member_names.hpp" #include "ylt/reflection/member_value.hpp" @@ -44,13 +51,6 @@ TEST_CASE("test member names") { std::array{"color", "id", "s", "str", "arr"}); } -struct simple { - int color; - int id; - std::string str; - int age; -}; - struct point_t { int x; int y; @@ -58,8 +58,8 @@ struct point_t { void test_pointer() { simple t{}; - auto&& [a, b, c, d] = t; - size_t offset1 = (const char*)(&a) - (const char*)(&t); + auto&& [o, b, c, d] = t; + size_t offset1 = (const char*)(&o) - (const char*)(&t); size_t offset2 = (const char*)(&b) - (const char*)(&t); size_t offset3 = (const char*)(&c) - (const char*)(&t); size_t offset4 = (const char*)(&d) - (const char*)(&t); @@ -233,6 +233,40 @@ TEST_CASE("test visitor") { #endif +YLT_REFL(simple, color, id, str, age); + +struct dummy_t { + int id; + std::string name; + int age; + YLT_REFL(dummy_t, id, name, age); +}; + +TEST_CASE("test macros") { + simple t{.color = 2, .id = 10, .str = "hello reflection", .age = 6}; + + visit_members(t, [](auto&... args) { + CHECK(sizeof...(args) == 4); + ((std::cout << args << ", "), ...); + std::cout << "\n"; + }); + + for_each(t, [](auto& arg) { + std::cout << arg << "\n"; + }); + + dummy_t d{.id = 42, .name = "tom", .age = 23}; + dummy_t::for_each(d, [](auto& arg) { + std::cout << arg << "\n"; + }); + + dummy_t::visit_members(d, [](auto&... args) { + CHECK(sizeof...(args) == 3); + ((std::cout << args << ", "), ...); + std::cout << "\n"; + }); +} + DOCTEST_MSVC_SUPPRESS_WARNING_WITH_PUSH(4007) int main(int argc, char** argv) { return doctest::Context(argc, argv).run(); } DOCTEST_MSVC_SUPPRESS_WARNING_POP From 97708b00326d0d64bd17f4fbf3e3b3d2fdd7c6c8 Mon Sep 17 00:00:00 2001 From: qicosmos Date: Fri, 19 Jul 2024 13:46:13 +0800 Subject: [PATCH 2/6] ylt_refl --- .../generate/member_names_macro_gen.hpp | 262 ++++++++++++++++++ .../internal/member_names_macro.hpp | 9 + include/ylt/reflection/member_count.hpp | 148 +++++----- include/ylt/reflection/member_names.hpp | 33 ++- include/ylt/reflection/member_ptr.hpp | 24 +- include/ylt/reflection/member_value.hpp | 9 +- include/ylt/reflection/user_reflect_macro.hpp | 106 +++++-- src/reflection/tests/test_reflection.cpp | 157 ++++++++++- 8 files changed, 620 insertions(+), 128 deletions(-) create mode 100644 include/ylt/reflection/internal/generate/member_names_macro_gen.hpp create mode 100644 include/ylt/reflection/internal/member_names_macro.hpp diff --git a/include/ylt/reflection/internal/generate/member_names_macro_gen.hpp b/include/ylt/reflection/internal/generate/member_names_macro_gen.hpp new file mode 100644 index 000000000..78ad9461e --- /dev/null +++ b/include/ylt/reflection/internal/generate/member_names_macro_gen.hpp @@ -0,0 +1,262 @@ +/* +macro = "#define CON_STR" +with open("member_names_gen.txt", "w", encoding="utf-8") as codefile: + codefile.write( + "\n".join( + [ + f"{macro}{i}(element, ...) ADD_VIEW(element) SEPERATOR +YLT_MARCO_EXPAND(CON_STR{i-1}(__VA_ARGS__))" for i in range(2, 127) + ] + ) + ) +*/ +#define CON_STR2(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR1(__VA_ARGS__)) +#define CON_STR3(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR2(__VA_ARGS__)) +#define CON_STR4(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR3(__VA_ARGS__)) +#define CON_STR5(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR4(__VA_ARGS__)) +#define CON_STR6(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR5(__VA_ARGS__)) +#define CON_STR7(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR6(__VA_ARGS__)) +#define CON_STR8(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR7(__VA_ARGS__)) +#define CON_STR9(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR8(__VA_ARGS__)) +#define CON_STR10(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR9(__VA_ARGS__)) +#define CON_STR11(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR10(__VA_ARGS__)) +#define CON_STR12(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR11(__VA_ARGS__)) +#define CON_STR13(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR12(__VA_ARGS__)) +#define CON_STR14(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR13(__VA_ARGS__)) +#define CON_STR15(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR14(__VA_ARGS__)) +#define CON_STR16(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR15(__VA_ARGS__)) +#define CON_STR17(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR16(__VA_ARGS__)) +#define CON_STR18(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR17(__VA_ARGS__)) +#define CON_STR19(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR18(__VA_ARGS__)) +#define CON_STR20(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR19(__VA_ARGS__)) +#define CON_STR21(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR20(__VA_ARGS__)) +#define CON_STR22(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR21(__VA_ARGS__)) +#define CON_STR23(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR22(__VA_ARGS__)) +#define CON_STR24(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR23(__VA_ARGS__)) +#define CON_STR25(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR24(__VA_ARGS__)) +#define CON_STR26(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR25(__VA_ARGS__)) +#define CON_STR27(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR26(__VA_ARGS__)) +#define CON_STR28(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR27(__VA_ARGS__)) +#define CON_STR29(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR28(__VA_ARGS__)) +#define CON_STR30(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR29(__VA_ARGS__)) +#define CON_STR31(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR30(__VA_ARGS__)) +#define CON_STR32(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR31(__VA_ARGS__)) +#define CON_STR33(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR32(__VA_ARGS__)) +#define CON_STR34(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR33(__VA_ARGS__)) +#define CON_STR35(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR34(__VA_ARGS__)) +#define CON_STR36(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR35(__VA_ARGS__)) +#define CON_STR37(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR36(__VA_ARGS__)) +#define CON_STR38(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR37(__VA_ARGS__)) +#define CON_STR39(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR38(__VA_ARGS__)) +#define CON_STR40(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR39(__VA_ARGS__)) +#define CON_STR41(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR40(__VA_ARGS__)) +#define CON_STR42(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR41(__VA_ARGS__)) +#define CON_STR43(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR42(__VA_ARGS__)) +#define CON_STR44(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR43(__VA_ARGS__)) +#define CON_STR45(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR44(__VA_ARGS__)) +#define CON_STR46(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR45(__VA_ARGS__)) +#define CON_STR47(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR46(__VA_ARGS__)) +#define CON_STR48(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR47(__VA_ARGS__)) +#define CON_STR49(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR48(__VA_ARGS__)) +#define CON_STR50(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR49(__VA_ARGS__)) +#define CON_STR51(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR50(__VA_ARGS__)) +#define CON_STR52(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR51(__VA_ARGS__)) +#define CON_STR53(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR52(__VA_ARGS__)) +#define CON_STR54(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR53(__VA_ARGS__)) +#define CON_STR55(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR54(__VA_ARGS__)) +#define CON_STR56(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR55(__VA_ARGS__)) +#define CON_STR57(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR56(__VA_ARGS__)) +#define CON_STR58(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR57(__VA_ARGS__)) +#define CON_STR59(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR58(__VA_ARGS__)) +#define CON_STR60(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR59(__VA_ARGS__)) +#define CON_STR61(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR60(__VA_ARGS__)) +#define CON_STR62(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR61(__VA_ARGS__)) +#define CON_STR63(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR62(__VA_ARGS__)) +#define CON_STR64(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR63(__VA_ARGS__)) +#define CON_STR65(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR64(__VA_ARGS__)) +#define CON_STR66(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR65(__VA_ARGS__)) +#define CON_STR67(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR66(__VA_ARGS__)) +#define CON_STR68(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR67(__VA_ARGS__)) +#define CON_STR69(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR68(__VA_ARGS__)) +#define CON_STR70(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR69(__VA_ARGS__)) +#define CON_STR71(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR70(__VA_ARGS__)) +#define CON_STR72(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR71(__VA_ARGS__)) +#define CON_STR73(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR72(__VA_ARGS__)) +#define CON_STR74(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR73(__VA_ARGS__)) +#define CON_STR75(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR74(__VA_ARGS__)) +#define CON_STR76(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR75(__VA_ARGS__)) +#define CON_STR77(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR76(__VA_ARGS__)) +#define CON_STR78(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR77(__VA_ARGS__)) +#define CON_STR79(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR78(__VA_ARGS__)) +#define CON_STR80(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR79(__VA_ARGS__)) +#define CON_STR81(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR80(__VA_ARGS__)) +#define CON_STR82(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR81(__VA_ARGS__)) +#define CON_STR83(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR82(__VA_ARGS__)) +#define CON_STR84(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR83(__VA_ARGS__)) +#define CON_STR85(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR84(__VA_ARGS__)) +#define CON_STR86(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR85(__VA_ARGS__)) +#define CON_STR87(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR86(__VA_ARGS__)) +#define CON_STR88(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR87(__VA_ARGS__)) +#define CON_STR89(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR88(__VA_ARGS__)) +#define CON_STR90(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR89(__VA_ARGS__)) +#define CON_STR91(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR90(__VA_ARGS__)) +#define CON_STR92(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR91(__VA_ARGS__)) +#define CON_STR93(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR92(__VA_ARGS__)) +#define CON_STR94(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR93(__VA_ARGS__)) +#define CON_STR95(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR94(__VA_ARGS__)) +#define CON_STR96(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR95(__VA_ARGS__)) +#define CON_STR97(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR96(__VA_ARGS__)) +#define CON_STR98(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR97(__VA_ARGS__)) +#define CON_STR99(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR98(__VA_ARGS__)) +#define CON_STR100(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR99(__VA_ARGS__)) +#define CON_STR101(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR100(__VA_ARGS__)) +#define CON_STR102(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR101(__VA_ARGS__)) +#define CON_STR103(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR102(__VA_ARGS__)) +#define CON_STR104(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR103(__VA_ARGS__)) +#define CON_STR105(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR104(__VA_ARGS__)) +#define CON_STR106(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR105(__VA_ARGS__)) +#define CON_STR107(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR106(__VA_ARGS__)) +#define CON_STR108(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR107(__VA_ARGS__)) +#define CON_STR109(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR108(__VA_ARGS__)) +#define CON_STR110(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR109(__VA_ARGS__)) +#define CON_STR111(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR110(__VA_ARGS__)) +#define CON_STR112(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR111(__VA_ARGS__)) +#define CON_STR113(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR112(__VA_ARGS__)) +#define CON_STR114(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR113(__VA_ARGS__)) +#define CON_STR115(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR114(__VA_ARGS__)) +#define CON_STR116(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR115(__VA_ARGS__)) +#define CON_STR117(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR116(__VA_ARGS__)) +#define CON_STR118(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR117(__VA_ARGS__)) +#define CON_STR119(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR118(__VA_ARGS__)) +#define CON_STR120(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR119(__VA_ARGS__)) +#define CON_STR121(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR120(__VA_ARGS__)) +#define CON_STR122(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR121(__VA_ARGS__)) +#define CON_STR123(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR122(__VA_ARGS__)) +#define CON_STR124(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR123(__VA_ARGS__)) +#define CON_STR125(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR124(__VA_ARGS__)) +#define CON_STR126(element, ...) \ + ADD_VIEW(element) SEPERATOR YLT_MARCO_EXPAND(CON_STR125(__VA_ARGS__)) diff --git a/include/ylt/reflection/internal/member_names_macro.hpp b/include/ylt/reflection/internal/member_names_macro.hpp new file mode 100644 index 000000000..053bbca7f --- /dev/null +++ b/include/ylt/reflection/internal/member_names_macro.hpp @@ -0,0 +1,9 @@ +#pragma once +#include "common_macro.hpp" + +#define ADD_VIEW(str) std::string_view(#str, sizeof(#str) - 1) + +#define SEPERATOR , +#define CON_STR0() +#define CON_STR1(element, ...) ADD_VIEW(element) +#include "generate/member_names_macro_gen.hpp" diff --git a/include/ylt/reflection/member_count.hpp b/include/ylt/reflection/member_count.hpp index 8c91ea6b4..c9e9b703b 100644 --- a/include/ylt/reflection/member_count.hpp +++ b/include/ylt/reflection/member_count.hpp @@ -6,6 +6,8 @@ #include #include +#include "user_reflect_macro.hpp" + namespace ylt::reflection { template using remove_cvref_t = std::remove_cv_t>; @@ -64,10 +66,10 @@ constexpr bool optional = !expected && optional_impl::value; namespace internal { #if __cpp_concepts >= 201907L -template -concept tuple_size = requires(Type tuple) { - std::tuple_size>::value; -}; + template + concept tuple_size = requires(Type tuple) { + std::tuple_size>::value; + }; #else template struct tuple_size_impl : std::false_type {}; @@ -81,87 +83,93 @@ template constexpr bool tuple_size = tuple_size_impl::value; #endif -template -struct compatible; + template + struct compatible; -template -constexpr inline bool is_compatible_v = false; - -template -constexpr inline bool is_compatible_v> = true; + template + constexpr inline bool is_compatible_v = false; -struct UniversalVectorType { - template - operator std::vector(); -}; + template + constexpr inline bool is_compatible_v> = true; -struct UniversalType { - template - operator T(); -}; - -struct UniversalIntegralType { - template >> - operator T(); -}; + struct UniversalVectorType { + template + operator std::vector(); + }; -struct UniversalNullptrType { - operator std::nullptr_t(); -}; + struct UniversalType { + template + operator T(); + }; -struct UniversalOptionalType { - template >> - operator U(); -}; + struct UniversalIntegralType { + template >> + operator T(); + }; -struct UniversalCompatibleType { - template >> - operator U(); -}; + struct UniversalNullptrType { + operator std::nullptr_t(); + }; -template -struct is_constructable_impl : std::false_type {}; -template -struct is_constructable_impl< - T, construct_param_t, - std::void_t, Args...> - : std::true_type {}; + struct UniversalOptionalType { + template >> + operator U(); + }; -template -constexpr bool is_constructable = - is_constructable_impl::value; + struct UniversalCompatibleType { + template >> + operator U(); + }; -template -inline constexpr std::size_t members_count_impl() { - if constexpr (is_constructable) { - return members_count_impl(); - } - else if constexpr (is_constructable) { - return members_count_impl(); - } - else if constexpr (is_constructable) { - return members_count_impl(); - } - else if constexpr (is_constructable) { - return members_count_impl(); + template + struct is_constructable_impl : std::false_type {}; + template + struct is_constructable_impl< + T, construct_param_t, + std::void_t, Args...> + : std::true_type {}; + + template + constexpr bool is_constructable = + is_constructable_impl::value; + + template + inline constexpr std::size_t members_count_impl() { + if constexpr (is_constructable) { + return members_count_impl(); + } + else if constexpr (is_constructable) { + return members_count_impl(); + } + else if constexpr (is_constructable) { + return members_count_impl(); + } + else if constexpr (is_constructable) { + return members_count_impl(); + } + else if constexpr (is_constructable) { + return members_count_impl(); + } + else if constexpr (is_constructable) { + return members_count_impl(); + } + else { + return sizeof...(Args); + } } - else if constexpr (is_constructable) { - return members_count_impl(); - } - else if constexpr (is_constructable) { - return members_count_impl(); - } - else { - return sizeof...(Args); - } -} } // namespace internal template inline constexpr std::size_t members_count() { using type = remove_cvref_t; - if constexpr (internal::tuple_size) { + if constexpr (is_out_ylt_refl_v) { + return refl_member_count(ylt::reflection::identity{}); + } + else if constexpr (is_inner_ylt_refl_v) { + return type::refl_member_count(ylt::reflection::identity{}); + } + else if constexpr (internal::tuple_size) { return std::tuple_size::value; } else { diff --git a/include/ylt/reflection/member_names.hpp b/include/ylt/reflection/member_names.hpp index 8f68d47df..b9b745fee 100644 --- a/include/ylt/reflection/member_names.hpp +++ b/include/ylt/reflection/member_names.hpp @@ -2,10 +2,8 @@ #include #include -#include "template_string.hpp" -#if (__has_include() || defined(__clang__) || defined(_MSC_VER)) || \ - (defined(__GNUC__) && __GNUC__ > 10) #include "member_ptr.hpp" +#include "template_string.hpp" namespace ylt::reflection { @@ -54,15 +52,25 @@ template inline constexpr std::array> get_member_names() { constexpr size_t Count = members_count_v; - constexpr auto tp = struct_to_tuple(); - - std::array arr; - [&](std::index_sequence) mutable { - ((arr[Is] = internal::get_member_name(tp))>()), - ...); + using type = remove_cvref_t; + if constexpr (is_out_ylt_refl_v) { + return refl_member_names(ylt::reflection::identity{}); + } + else if constexpr (is_inner_ylt_refl_v) { + return type::refl_member_names(ylt::reflection::identity{}); + } + else { + constexpr auto tp = struct_to_tuple(); + + std::array arr; + [&](std::index_sequence) mutable { + ((arr[Is] = + internal::get_member_name(tp))>()), + ...); + } + (std::make_index_sequence{}); + return arr; } - (std::make_index_sequence{}); - return arr; } template @@ -160,7 +168,7 @@ inline constexpr std::string_view name_of(size_t index) { } template -inline constexpr void for_each(Visit func) { +inline constexpr void for_each(Visit&& func) { constexpr auto& arr = member_names; [&](std::index_sequence) mutable { if constexpr (std::is_invocable_v) { @@ -180,4 +188,3 @@ inline constexpr void for_each(Visit func) { } } // namespace ylt::reflection -#endif diff --git a/include/ylt/reflection/member_ptr.hpp b/include/ylt/reflection/member_ptr.hpp index 00808667e..2499958ce 100644 --- a/include/ylt/reflection/member_ptr.hpp +++ b/include/ylt/reflection/member_ptr.hpp @@ -104,12 +104,30 @@ inline constexpr auto struct_to_tuple() { template inline constexpr auto object_to_tuple(T& t) { - return internal::tuple_view(t); + using type = remove_cvref_t; + if constexpr (is_out_ylt_refl_v) { + return refl_object_to_tuple(t); + } + else if constexpr (is_inner_ylt_refl_v) { + return type::refl_object_to_tuple(t); + } + else { + return internal::tuple_view(t); + } } template > inline constexpr decltype(auto) visit_members(T&& t, Visitor&& visitor) { - return internal::tuple_view(std::forward(t), - std::forward(visitor)); + using type = remove_cvref_t; + if constexpr (is_out_ylt_refl_v) { + return refl_visit_members(t, visitor); + } + else if constexpr (is_inner_ylt_refl_v) { + return type::refl_object_to_tuple(t, visitor); + } + else { + return internal::tuple_view(std::forward(t), + std::forward(visitor)); + } } } // namespace ylt::reflection diff --git a/include/ylt/reflection/member_value.hpp b/include/ylt/reflection/member_value.hpp index 05dba3368..047e97b8f 100644 --- a/include/ylt/reflection/member_value.hpp +++ b/include/ylt/reflection/member_value.hpp @@ -4,13 +4,10 @@ #include #include +#include "member_names.hpp" #include "template_string.hpp" #include "template_switch.hpp" -#if (__has_include() || defined(__clang__) || defined(_MSC_VER)) || \ - (defined(__GNUC__) && __GNUC__ > 10) -#include "member_names.hpp" - namespace ylt::reflection { namespace internal { @@ -146,7 +143,6 @@ inline constexpr std::string_view name_of(T& t, Field& value) { return arr[index]; } -#endif template inline constexpr void for_each(T&& t, Visit&& func) { @@ -158,8 +154,6 @@ inline constexpr void for_each(T&& t, Visit&& func) { }); } else { -#if __has_include() || defined(__clang__) || defined(_MSC_VER) || \ - (defined(__GNUC__) && __GNUC__ > 10) constexpr auto arr = member_names; if constexpr (std::is_invocable_v) { visit_members(t, [&](auto&... args) { @@ -184,7 +178,6 @@ inline constexpr void for_each(T&& t, Visit&& func) { "std::string_view, size_t], at least has field_value and " "make sure keep the order of arguments"); } -#endif } } diff --git a/include/ylt/reflection/user_reflect_macro.hpp b/include/ylt/reflection/user_reflect_macro.hpp index e055bc2a8..5d37103e8 100644 --- a/include/ylt/reflection/user_reflect_macro.hpp +++ b/include/ylt/reflection/user_reflect_macro.hpp @@ -1,25 +1,93 @@ #pragma once -#include "internal/foreach_user_macro.hpp" +#include +#include +#include + +#include "internal/member_names_macro.hpp" #include "internal/visit_user_macro.hpp" namespace ylt::reflection { -#define YLT_REFL(STRUCT, ...) \ - template \ - inline static constexpr decltype(auto) visit_members(STRUCT &t, \ - Visitor &&visitor) { \ - return YLT_VISIT(visitor, t, __VA_ARGS__); \ - } \ - template \ - inline static constexpr void for_each(STRUCT &t, Visitor &&visitor) { \ - YLT_FOREACH(visitor, t, __VA_ARGS__); \ - } \ - template \ - inline static constexpr decltype(auto) visit_members(const STRUCT &t, \ - Visitor &&visitor) { \ - return YLT_VISIT(visitor, t, __VA_ARGS__); \ - } \ - template \ - inline static constexpr void for_each(const STRUCT &t, Visitor &&visitor) { \ - YLT_FOREACH(visitor, t, __VA_ARGS__); \ +template +struct identity {}; + +template +struct member_traits { + using value_type = T; +}; + +template +struct member_traits { + using owner_type = Owner; + using value_type = T; +}; + +template +using member_value_type_t = typename member_traits::value_type; + +#define YLT_REFL(STRUCT, ...) \ + template \ + inline static constexpr decltype(auto) refl_visit_members( \ + STRUCT &t, Visitor &&visitor) { \ + return YLT_VISIT(visitor, t, __VA_ARGS__); \ + } \ + template \ + inline static constexpr decltype(auto) refl_visit_members( \ + const STRUCT &t, Visitor &&visitor) { \ + return YLT_VISIT(visitor, t, __VA_ARGS__); \ + } \ + inline static decltype(auto) refl_object_to_tuple(STRUCT &t) { \ + return YLT_VISIT(std::tie, t, __VA_ARGS__); \ + } \ + inline static constexpr decltype(auto) refl_member_names( \ + const ylt::reflection::identity &t) { \ + MAKE_LIST(STRUCT, __VA_ARGS__) \ + return arr_##STRUCT_NAME; \ + } \ + inline static constexpr std::size_t refl_member_count( \ + const ylt::reflection::identity &t) { \ + return (std::size_t)YLT_ARG_COUNT(__VA_ARGS__); \ } + +#define MAKE_LIST(STRUCT, ...) \ + MAKE_LIST_IMPL(STRUCT, YLT_ARG_COUNT(__VA_ARGS__), __VA_ARGS__) + +#define MAKE_LIST_IMPL(STRUCT, N, ...) \ + constexpr std::array arr_##STRUCT_NAME = { \ + YLT_MARCO_EXPAND(YLT_CONCAT(CON_STR, N)(__VA_ARGS__))}; + +template +struct is_out_ylt_refl : std::false_type {}; + +template +struct is_out_ylt_refl>()))>> + : std::true_type {}; + +template +constexpr bool is_out_ylt_refl_v = is_out_ylt_refl::value; + +template +struct is_inner_ylt_refl : std::false_type {}; + +template +struct is_inner_ylt_refl< + T, std::void_t().refl_member_count( + std::declval>()))>> : std::true_type {}; + +template +constexpr bool is_inner_ylt_refl_v = is_inner_ylt_refl::value; + +template +struct is_ylt_refl : std::false_type {}; + +template +inline constexpr bool is_ylt_refl_v = is_ylt_refl::value; + +template +struct is_ylt_refl>> + : std::true_type {}; + +template +struct is_ylt_refl>> : std::true_type { +}; } // namespace ylt::reflection diff --git a/src/reflection/tests/test_reflection.cpp b/src/reflection/tests/test_reflection.cpp index 9750b37e5..5a334d4a9 100644 --- a/src/reflection/tests/test_reflection.cpp +++ b/src/reflection/tests/test_reflection.cpp @@ -1,9 +1,12 @@ #include #include +#include "ylt/reflection/member_value.hpp" #include "ylt/reflection/template_switch.hpp" #include "ylt/reflection/user_reflect_macro.hpp" +using namespace ylt::reflection; + #define DOCTEST_CONFIG_IMPLEMENT #include "doctest.h" @@ -19,8 +22,6 @@ struct simple { #include "ylt/reflection/member_names.hpp" #include "ylt/reflection/member_value.hpp" -using namespace ylt::reflection; - struct sub { int id; }; @@ -233,8 +234,6 @@ TEST_CASE("test visitor") { #endif -YLT_REFL(simple, color, id, str, age); - struct dummy_t { int id; std::string name; @@ -242,29 +241,157 @@ struct dummy_t { YLT_REFL(dummy_t, id, name, age); }; +struct dummy_t2 { + int id; + std::string name; + int age; +}; +YLT_REFL(dummy_t2, id, name, age); + +struct dummy_t3 { + int id; + std::string name; + int age; +}; + +struct dummy_t4 { + int id; + std::string name; + int age; + + public: + dummy_t4() {} +}; +constexpr std::size_t refl_member_count( + const ylt::reflection::identity& t) { + return 3; +} + +struct dummy_t5 { + private: + int id = 42; + std::string name = "tom"; + int age = 20; + + public: + int& get_id() { return id; } + std::string& get_name() { return name; } + int& get_age() { return age; } + + const int& get_id() const { return id; } + const std::string& get_name() const { return name; } + const int& get_age() const { return age; } +}; +YLT_REFL(dummy_t5, get_id(), get_name(), get_age()); + +struct simple2 { + int color; + int id; + std::string str; + int age; + simple2() = default; + simple2(int a, int b, std::string c, int d) + : color(a), id(b), str(c), age(d) {} +}; +YLT_REFL(simple2, color, id, str, age); + TEST_CASE("test macros") { - simple t{.color = 2, .id = 10, .str = "hello reflection", .age = 6}; + simple2 t{2, 10, "hello reflection", 6}; + constexpr auto arr = member_names; + static_assert(arr.size() == 4); + constexpr auto map = member_names_map; + constexpr size_t index = map.at("age"); + CHECK(index == 3); + constexpr size_t size = members_count_v; + static_assert(size == 3); + + auto ref_tp = object_to_tuple(t); + auto& c = std::get<0>(ref_tp); + c = 10; + + using Tuple = decltype(struct_to_tuple()); + std::cout << type_string() << "\n"; + + constexpr size_t size2 = members_count_v; + static_assert(size2 == 3); + + constexpr size_t size3 = members_count_v; + static_assert(size3 == 3); + + constexpr size_t size4 = members_count(); + static_assert(size4 == 3); + + constexpr size_t size5 = members_count_v; + static_assert(size5 == 3); - visit_members(t, [](auto&... args) { - CHECK(sizeof...(args) == 4); + dummy_t5 d5{}; + refl_visit_members(d5, [](auto&... args) { + CHECK(sizeof...(args) == 3); ((std::cout << args << ", "), ...); std::cout << "\n"; }); - for_each(t, [](auto& arg) { - std::cout << arg << "\n"; + visit_members(d5, [](auto&... args) { + CHECK(sizeof...(args) == 3); + ((std::cout << args << ", "), ...); + std::cout << "\n"; }); - dummy_t d{.id = 42, .name = "tom", .age = 23}; - dummy_t::for_each(d, [](auto& arg) { + for_each(d5, [](auto& arg) { std::cout << arg << "\n"; }); - dummy_t::visit_members(d, [](auto&... args) { - CHECK(sizeof...(args) == 3); - ((std::cout << args << ", "), ...); - std::cout << "\n"; + auto& age1 = get(t, "age"); + CHECK(age1 == 6); + + auto str2 = get<2>(t); + CHECK(str2 == "hello reflection"); + + auto var = get(t, 3); + CHECK(*std::get<3>(var) == 6); + + auto& age2 = get<"age"_ylts>(t); + CHECK(age2 == 6); + + auto& var1 = get<"str"_ylts>(t); + CHECK(var1 == "hello reflection"); + + constexpr std::string_view name1 = name_of(); + CHECK(name1 == "str"); + + constexpr std::string_view name2 = name_of(2); + CHECK(name2 == "str"); + + constexpr size_t idx = index_of(); + CHECK(idx == 2); + + constexpr size_t idx1 = index_of("str"); + CHECK(idx1 == 2); + + constexpr size_t idx2 = index_of(); + CHECK(idx2 == 4); + + size_t idx3 = index_of("no_such"); + CHECK(idx3 == 4); + + size_t idx4 = index_of(t, age1); + CHECK(idx4 == 3); + + auto name3 = name_of(t, age1); + CHECK(name3 == "age"); + + int no_such = 100; + size_t idx5 = index_of(t, no_such); + CHECK(idx5 == 4); + + for_each(t, [](auto& arg) { + if constexpr (std::is_same_v>) { + arg = "test"; + } + std::cout << arg << "\n"; }); + CHECK(t.str == "test"); } DOCTEST_MSVC_SUPPRESS_WARNING_WITH_PUSH(4007) From e0f1efae903d6017acaa8539569efba070a94e63 Mon Sep 17 00:00:00 2001 From: qicosmos Date: Fri, 19 Jul 2024 13:58:28 +0800 Subject: [PATCH 3/6] for cpp17 --- include/ylt/reflection/member_names.hpp | 4 +++- include/ylt/reflection/member_value.hpp | 6 ++++-- src/reflection/tests/test_reflection.cpp | 17 +++++++++-------- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/include/ylt/reflection/member_names.hpp b/include/ylt/reflection/member_names.hpp index b9b745fee..53b564e40 100644 --- a/include/ylt/reflection/member_names.hpp +++ b/include/ylt/reflection/member_names.hpp @@ -109,7 +109,7 @@ inline constexpr auto tuple_to_variant(std::tuple) { template using struct_variant_t = decltype(tuple_to_variant( - std::declval>())>)); + std::declval>())>)); template constexpr auto member_names_map = internal::get_member_names_map(); @@ -145,10 +145,12 @@ inline constexpr size_t index_of(std::string_view name) { return arr.size(); } +#if __has_include() template inline constexpr size_t index_of() { return index_of(name.str()); } +#endif template inline constexpr std::string_view name_of() { diff --git a/include/ylt/reflection/member_value.hpp b/include/ylt/reflection/member_value.hpp index 047e97b8f..85d9dd9c4 100644 --- a/include/ylt/reflection/member_value.hpp +++ b/include/ylt/reflection/member_value.hpp @@ -115,11 +115,13 @@ inline constexpr auto& get(T& t) { return std::get(ref_tp); } +#if __has_include() template inline constexpr auto& get(T& t) { constexpr size_t index = index_of(); return get(t); } +#endif template inline size_t index_of(T& t, Field& value) { @@ -183,8 +185,8 @@ inline constexpr void for_each(T&& t, Visit&& func) { } // namespace ylt::reflection -#if __has_include() || defined(__clang__) || defined(_MSC_VER) || \ - (defined(__GNUC__) && __GNUC__ > 10) +#if (defined(__GNUC__) && __GNUC__ > 10) || \ + ((defined(__clang__) || defined(_MSC_VER)) && __has_include()) template inline constexpr auto operator""_ylts() { return s; diff --git a/src/reflection/tests/test_reflection.cpp b/src/reflection/tests/test_reflection.cpp index 5a334d4a9..55a6cf674 100644 --- a/src/reflection/tests/test_reflection.cpp +++ b/src/reflection/tests/test_reflection.cpp @@ -350,27 +350,29 @@ TEST_CASE("test macros") { auto var = get(t, 3); CHECK(*std::get<3>(var) == 6); +#if __has_include() auto& age2 = get<"age"_ylts>(t); CHECK(age2 == 6); auto& var1 = get<"str"_ylts>(t); CHECK(var1 == "hello reflection"); + constexpr size_t idx = index_of(); + CHECK(idx == 2); + + constexpr size_t idx2 = index_of(); + CHECK(idx2 == 4); +#endif + constexpr std::string_view name1 = name_of(); CHECK(name1 == "str"); constexpr std::string_view name2 = name_of(2); CHECK(name2 == "str"); - constexpr size_t idx = index_of(); - CHECK(idx == 2); - constexpr size_t idx1 = index_of("str"); CHECK(idx1 == 2); - constexpr size_t idx2 = index_of(); - CHECK(idx2 == 4); - size_t idx3 = index_of("no_such"); CHECK(idx3 == 4); @@ -385,8 +387,7 @@ TEST_CASE("test macros") { CHECK(idx5 == 4); for_each(t, [](auto& arg) { - if constexpr (std::is_same_v>) { + if constexpr (std::is_same_v>) { arg = "test"; } std::cout << arg << "\n"; From c097f75bb54670c1ae0f80ad56da440499bdf1b3 Mon Sep 17 00:00:00 2001 From: qicosmos Date: Fri, 19 Jul 2024 14:02:16 +0800 Subject: [PATCH 4/6] ylt_refl --- src/reflection/tests/test_reflection.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/reflection/tests/test_reflection.cpp b/src/reflection/tests/test_reflection.cpp index 55a6cf674..ed0e2191b 100644 --- a/src/reflection/tests/test_reflection.cpp +++ b/src/reflection/tests/test_reflection.cpp @@ -296,6 +296,7 @@ struct simple2 { YLT_REFL(simple2, color, id, str, age); TEST_CASE("test macros") { + static_assert(!std::is_aggregate_v); simple2 t{2, 10, "hello reflection", 6}; constexpr auto arr = member_names; static_assert(arr.size() == 4); @@ -308,6 +309,7 @@ TEST_CASE("test macros") { auto ref_tp = object_to_tuple(t); auto& c = std::get<0>(ref_tp); c = 10; + CHECK(t.color == 10); using Tuple = decltype(struct_to_tuple()); std::cout << type_string() << "\n"; @@ -393,6 +395,14 @@ TEST_CASE("test macros") { std::cout << arg << "\n"; }); CHECK(t.str == "test"); + + for_each([](std::string_view field_name, size_t index) { + std::cout << index << ", " << field_name << "\n"; + }); + + for_each([](std::string_view field_name) { + std::cout << field_name << "\n"; + }); } DOCTEST_MSVC_SUPPRESS_WARNING_WITH_PUSH(4007) From 76c1ee6db505e91d2fef2d4e3abe6837355e9a4b Mon Sep 17 00:00:00 2001 From: qicosmos Date: Fri, 19 Jul 2024 14:08:53 +0800 Subject: [PATCH 5/6] support YLT_REFL --- .../internal/foreach_user_macro.hpp | 11 - .../generate/foreach_user_macro_gen.hpp | 260 ------------------ src/reflection/tests/test_reflection.cpp | 12 +- 3 files changed, 9 insertions(+), 274 deletions(-) delete mode 100644 include/ylt/reflection/internal/foreach_user_macro.hpp delete mode 100644 include/ylt/reflection/internal/generate/foreach_user_macro_gen.hpp diff --git a/include/ylt/reflection/internal/foreach_user_macro.hpp b/include/ylt/reflection/internal/foreach_user_macro.hpp deleted file mode 100644 index af8563988..000000000 --- a/include/ylt/reflection/internal/foreach_user_macro.hpp +++ /dev/null @@ -1,11 +0,0 @@ -#pragma once -#include "common_macro.hpp" - -#define YLT_CALL0(f, o) -#define YLT_CALL1(f, o, _1) f(CONCAT_MEMBER(o, _1)); - -#include "generate/foreach_user_macro_gen.hpp" - -#define YLT_FOREACH_(fun, funarg, ...) \ - YLT_CONCAT(YLT_CALL, YLT_ARG_COUNT(__VA_ARGS__))(fun, funarg, __VA_ARGS__) -#define YLT_FOREACH(fun, funarg, ...) YLT_FOREACH_(fun, funarg, __VA_ARGS__) diff --git a/include/ylt/reflection/internal/generate/foreach_user_macro_gen.hpp b/include/ylt/reflection/internal/generate/foreach_user_macro_gen.hpp deleted file mode 100644 index 052854f86..000000000 --- a/include/ylt/reflection/internal/generate/foreach_user_macro_gen.hpp +++ /dev/null @@ -1,260 +0,0 @@ -/* -macro = "#define YLT_CALL" -with open("generated_foreach.txt", "w", encoding="utf-8") as codefile: - codefile.write( - "\n".join( - [ - f"{macro}{i}(f,o,_1, ...) YLT_CALL1(f,o,_1) -YLT_CALL{i-1}(f,o,__VA_ARGS__)" for i in range(2, 126) - ] - ) - ) -*/ -#define YLT_CALL2(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL1(f, o, __VA_ARGS__) -#define YLT_CALL3(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL2(f, o, __VA_ARGS__) -#define YLT_CALL4(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL3(f, o, __VA_ARGS__) -#define YLT_CALL5(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL4(f, o, __VA_ARGS__) -#define YLT_CALL6(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL5(f, o, __VA_ARGS__) -#define YLT_CALL7(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL6(f, o, __VA_ARGS__) -#define YLT_CALL8(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL7(f, o, __VA_ARGS__) -#define YLT_CALL9(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL8(f, o, __VA_ARGS__) -#define YLT_CALL10(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL9(f, o, __VA_ARGS__) -#define YLT_CALL11(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL10(f, o, __VA_ARGS__) -#define YLT_CALL12(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL11(f, o, __VA_ARGS__) -#define YLT_CALL13(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL12(f, o, __VA_ARGS__) -#define YLT_CALL14(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL13(f, o, __VA_ARGS__) -#define YLT_CALL15(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL14(f, o, __VA_ARGS__) -#define YLT_CALL16(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL15(f, o, __VA_ARGS__) -#define YLT_CALL17(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL16(f, o, __VA_ARGS__) -#define YLT_CALL18(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL17(f, o, __VA_ARGS__) -#define YLT_CALL19(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL18(f, o, __VA_ARGS__) -#define YLT_CALL20(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL19(f, o, __VA_ARGS__) -#define YLT_CALL21(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL20(f, o, __VA_ARGS__) -#define YLT_CALL22(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL21(f, o, __VA_ARGS__) -#define YLT_CALL23(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL22(f, o, __VA_ARGS__) -#define YLT_CALL24(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL23(f, o, __VA_ARGS__) -#define YLT_CALL25(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL24(f, o, __VA_ARGS__) -#define YLT_CALL26(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL25(f, o, __VA_ARGS__) -#define YLT_CALL27(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL26(f, o, __VA_ARGS__) -#define YLT_CALL28(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL27(f, o, __VA_ARGS__) -#define YLT_CALL29(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL28(f, o, __VA_ARGS__) -#define YLT_CALL30(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL29(f, o, __VA_ARGS__) -#define YLT_CALL31(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL30(f, o, __VA_ARGS__) -#define YLT_CALL32(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL31(f, o, __VA_ARGS__) -#define YLT_CALL33(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL32(f, o, __VA_ARGS__) -#define YLT_CALL34(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL33(f, o, __VA_ARGS__) -#define YLT_CALL35(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL34(f, o, __VA_ARGS__) -#define YLT_CALL36(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL35(f, o, __VA_ARGS__) -#define YLT_CALL37(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL36(f, o, __VA_ARGS__) -#define YLT_CALL38(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL37(f, o, __VA_ARGS__) -#define YLT_CALL39(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL38(f, o, __VA_ARGS__) -#define YLT_CALL40(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL39(f, o, __VA_ARGS__) -#define YLT_CALL41(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL40(f, o, __VA_ARGS__) -#define YLT_CALL42(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL41(f, o, __VA_ARGS__) -#define YLT_CALL43(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL42(f, o, __VA_ARGS__) -#define YLT_CALL44(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL43(f, o, __VA_ARGS__) -#define YLT_CALL45(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL44(f, o, __VA_ARGS__) -#define YLT_CALL46(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL45(f, o, __VA_ARGS__) -#define YLT_CALL47(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL46(f, o, __VA_ARGS__) -#define YLT_CALL48(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL47(f, o, __VA_ARGS__) -#define YLT_CALL49(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL48(f, o, __VA_ARGS__) -#define YLT_CALL50(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL49(f, o, __VA_ARGS__) -#define YLT_CALL51(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL50(f, o, __VA_ARGS__) -#define YLT_CALL52(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL51(f, o, __VA_ARGS__) -#define YLT_CALL53(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL52(f, o, __VA_ARGS__) -#define YLT_CALL54(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL53(f, o, __VA_ARGS__) -#define YLT_CALL55(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL54(f, o, __VA_ARGS__) -#define YLT_CALL56(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL55(f, o, __VA_ARGS__) -#define YLT_CALL57(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL56(f, o, __VA_ARGS__) -#define YLT_CALL58(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL57(f, o, __VA_ARGS__) -#define YLT_CALL59(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL58(f, o, __VA_ARGS__) -#define YLT_CALL60(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL59(f, o, __VA_ARGS__) -#define YLT_CALL61(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL60(f, o, __VA_ARGS__) -#define YLT_CALL62(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL61(f, o, __VA_ARGS__) -#define YLT_CALL63(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL62(f, o, __VA_ARGS__) -#define YLT_CALL64(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL63(f, o, __VA_ARGS__) -#define YLT_CALL65(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL64(f, o, __VA_ARGS__) -#define YLT_CALL66(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL65(f, o, __VA_ARGS__) -#define YLT_CALL67(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL66(f, o, __VA_ARGS__) -#define YLT_CALL68(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL67(f, o, __VA_ARGS__) -#define YLT_CALL69(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL68(f, o, __VA_ARGS__) -#define YLT_CALL70(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL69(f, o, __VA_ARGS__) -#define YLT_CALL71(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL70(f, o, __VA_ARGS__) -#define YLT_CALL72(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL71(f, o, __VA_ARGS__) -#define YLT_CALL73(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL72(f, o, __VA_ARGS__) -#define YLT_CALL74(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL73(f, o, __VA_ARGS__) -#define YLT_CALL75(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL74(f, o, __VA_ARGS__) -#define YLT_CALL76(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL75(f, o, __VA_ARGS__) -#define YLT_CALL77(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL76(f, o, __VA_ARGS__) -#define YLT_CALL78(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL77(f, o, __VA_ARGS__) -#define YLT_CALL79(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL78(f, o, __VA_ARGS__) -#define YLT_CALL80(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL79(f, o, __VA_ARGS__) -#define YLT_CALL81(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL80(f, o, __VA_ARGS__) -#define YLT_CALL82(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL81(f, o, __VA_ARGS__) -#define YLT_CALL83(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL82(f, o, __VA_ARGS__) -#define YLT_CALL84(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL83(f, o, __VA_ARGS__) -#define YLT_CALL85(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL84(f, o, __VA_ARGS__) -#define YLT_CALL86(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL85(f, o, __VA_ARGS__) -#define YLT_CALL87(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL86(f, o, __VA_ARGS__) -#define YLT_CALL88(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL87(f, o, __VA_ARGS__) -#define YLT_CALL89(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL88(f, o, __VA_ARGS__) -#define YLT_CALL90(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL89(f, o, __VA_ARGS__) -#define YLT_CALL91(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL90(f, o, __VA_ARGS__) -#define YLT_CALL92(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL91(f, o, __VA_ARGS__) -#define YLT_CALL93(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL92(f, o, __VA_ARGS__) -#define YLT_CALL94(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL93(f, o, __VA_ARGS__) -#define YLT_CALL95(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL94(f, o, __VA_ARGS__) -#define YLT_CALL96(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL95(f, o, __VA_ARGS__) -#define YLT_CALL97(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL96(f, o, __VA_ARGS__) -#define YLT_CALL98(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL97(f, o, __VA_ARGS__) -#define YLT_CALL99(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL98(f, o, __VA_ARGS__) -#define YLT_CALL100(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL99(f, o, __VA_ARGS__) -#define YLT_CALL101(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL100(f, o, __VA_ARGS__) -#define YLT_CALL102(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL101(f, o, __VA_ARGS__) -#define YLT_CALL103(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL102(f, o, __VA_ARGS__) -#define YLT_CALL104(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL103(f, o, __VA_ARGS__) -#define YLT_CALL105(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL104(f, o, __VA_ARGS__) -#define YLT_CALL106(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL105(f, o, __VA_ARGS__) -#define YLT_CALL107(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL106(f, o, __VA_ARGS__) -#define YLT_CALL108(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL107(f, o, __VA_ARGS__) -#define YLT_CALL109(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL108(f, o, __VA_ARGS__) -#define YLT_CALL110(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL109(f, o, __VA_ARGS__) -#define YLT_CALL111(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL110(f, o, __VA_ARGS__) -#define YLT_CALL112(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL111(f, o, __VA_ARGS__) -#define YLT_CALL113(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL112(f, o, __VA_ARGS__) -#define YLT_CALL114(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL113(f, o, __VA_ARGS__) -#define YLT_CALL115(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL114(f, o, __VA_ARGS__) -#define YLT_CALL116(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL115(f, o, __VA_ARGS__) -#define YLT_CALL117(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL116(f, o, __VA_ARGS__) -#define YLT_CALL118(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL117(f, o, __VA_ARGS__) -#define YLT_CALL119(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL118(f, o, __VA_ARGS__) -#define YLT_CALL120(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL119(f, o, __VA_ARGS__) -#define YLT_CALL121(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL120(f, o, __VA_ARGS__) -#define YLT_CALL122(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL121(f, o, __VA_ARGS__) -#define YLT_CALL123(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL122(f, o, __VA_ARGS__) -#define YLT_CALL124(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL123(f, o, __VA_ARGS__) -#define YLT_CALL125(f, o, _1, ...) \ - YLT_CALL1(f, o, _1) YLT_CALL124(f, o, __VA_ARGS__) diff --git a/src/reflection/tests/test_reflection.cpp b/src/reflection/tests/test_reflection.cpp index ed0e2191b..7dbf5de1d 100644 --- a/src/reflection/tests/test_reflection.cpp +++ b/src/reflection/tests/test_reflection.cpp @@ -82,8 +82,10 @@ void test_pt() { static_assert(y == 4); CHECK(y == 4); +#if __has_include() constexpr auto x = get<"x"_ylts>(pt); static_assert(x == 2); +#endif } TEST_CASE("test member value") { @@ -115,11 +117,13 @@ TEST_CASE("test member value") { auto& age1 = get(p, "age"); CHECK(age1 == 6); +#if __has_include() auto& age2 = get<"age"_ylts>(p); CHECK(age2 == 6); auto& var1 = get<"str"_ylts>(p); CHECK(var1 == "hello reflection"); +#endif test_pt(); @@ -173,14 +177,16 @@ TEST_CASE("test member value") { constexpr std::string_view name2 = name_of(2); CHECK(name2 == "str"); +#if __has_include() constexpr size_t idx = index_of(); CHECK(idx == 2); - constexpr size_t idx1 = index_of("str"); - CHECK(idx1 == 2); - constexpr size_t idx2 = index_of(); CHECK(idx2 == 4); +#endif + + constexpr size_t idx1 = index_of("str"); + CHECK(idx1 == 2); size_t idx3 = index_of("no_such"); CHECK(idx3 == 4); From de15af9afe71f7057aa80d558fd3e76bdb06089a Mon Sep 17 00:00:00 2001 From: qicosmos Date: Fri, 19 Jul 2024 14:40:27 +0800 Subject: [PATCH 6/6] format --- include/ylt/reflection/member_count.hpp | 138 ++++++++++++------------ 1 file changed, 69 insertions(+), 69 deletions(-) diff --git a/include/ylt/reflection/member_count.hpp b/include/ylt/reflection/member_count.hpp index c9e9b703b..73be4c83d 100644 --- a/include/ylt/reflection/member_count.hpp +++ b/include/ylt/reflection/member_count.hpp @@ -66,10 +66,10 @@ constexpr bool optional = !expected && optional_impl::value; namespace internal { #if __cpp_concepts >= 201907L - template - concept tuple_size = requires(Type tuple) { - std::tuple_size>::value; - }; +template +concept tuple_size = requires(Type tuple) { + std::tuple_size>::value; +}; #else template struct tuple_size_impl : std::false_type {}; @@ -83,81 +83,81 @@ template constexpr bool tuple_size = tuple_size_impl::value; #endif - template - struct compatible; +template +struct compatible; - template - constexpr inline bool is_compatible_v = false; +template +constexpr inline bool is_compatible_v = false; - template - constexpr inline bool is_compatible_v> = true; +template +constexpr inline bool is_compatible_v> = true; - struct UniversalVectorType { - template - operator std::vector(); - }; +struct UniversalVectorType { + template + operator std::vector(); +}; - struct UniversalType { - template - operator T(); - }; +struct UniversalType { + template + operator T(); +}; - struct UniversalIntegralType { - template >> - operator T(); - }; +struct UniversalIntegralType { + template >> + operator T(); +}; - struct UniversalNullptrType { - operator std::nullptr_t(); - }; +struct UniversalNullptrType { + operator std::nullptr_t(); +}; - struct UniversalOptionalType { - template >> - operator U(); - }; +struct UniversalOptionalType { + template >> + operator U(); +}; - struct UniversalCompatibleType { - template >> - operator U(); - }; +struct UniversalCompatibleType { + template >> + operator U(); +}; + +template +struct is_constructable_impl : std::false_type {}; +template +struct is_constructable_impl< + T, construct_param_t, + std::void_t, Args...> + : std::true_type {}; - template - struct is_constructable_impl : std::false_type {}; - template - struct is_constructable_impl< - T, construct_param_t, - std::void_t, Args...> - : std::true_type {}; - - template - constexpr bool is_constructable = - is_constructable_impl::value; - - template - inline constexpr std::size_t members_count_impl() { - if constexpr (is_constructable) { - return members_count_impl(); - } - else if constexpr (is_constructable) { - return members_count_impl(); - } - else if constexpr (is_constructable) { - return members_count_impl(); - } - else if constexpr (is_constructable) { - return members_count_impl(); - } - else if constexpr (is_constructable) { - return members_count_impl(); - } - else if constexpr (is_constructable) { - return members_count_impl(); - } - else { - return sizeof...(Args); - } +template +constexpr bool is_constructable = + is_constructable_impl::value; + +template +inline constexpr std::size_t members_count_impl() { + if constexpr (is_constructable) { + return members_count_impl(); + } + else if constexpr (is_constructable) { + return members_count_impl(); + } + else if constexpr (is_constructable) { + return members_count_impl(); } + else if constexpr (is_constructable) { + return members_count_impl(); + } + else if constexpr (is_constructable) { + return members_count_impl(); + } + else if constexpr (is_constructable) { + return members_count_impl(); + } + else { + return sizeof...(Args); + } +} } // namespace internal template