l1l2_expand.h 48 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503
  1. /*
  2. * Copyright (C) 2021 Duowan Inc. All rights reserved.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing,
  11. * software distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. #ifndef __X_L1_L2_EXPAND_H
  17. #define __X_L1_L2_EXPAND_H
  18. // expand macro depend on parameters number
  19. #define X_PACK_COUNT(LEVEL, ACTION, _99,_98,_97,_96,_95,_94,_93,_92,_91,_90,_89,_88,_87,_86,_85,_84,_83,_82,_81,_80,_79,_78,_77,_76,_75,_74,_73,_72,_71,_70,_69,_68,_67,_66,_65,_64,_63,_62,_61,_60,_59,_58,_57,_56,_55,_54,_53,_52,_51,_50,_49,_48,_47,_46,_45,_44,_43,_42,_41,_40,_39,_38,_37,_36,_35,_34,_33,_32,_31,_30,_29,_28,_27,_26,_25,_24,_23,_22,_21,_20,_19,_18,_17,_16,_15,_14,_13,_12,_11,_10,_9,_8,_7,_6,_5,_4,_3,_2,_1,N,...) LEVEL##N
  20. #define X_PACK_EXPAND(...) __VA_ARGS__
  21. #ifndef _MSC_VER
  22. #define X_PACK_N(LEVEL, ACTION, ...) X_PACK_COUNT(LEVEL, ACTION, __VA_ARGS__, _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) (ACTION, __VA_ARGS__)
  23. #define X_PACK_N2(LEVEL, ACTION, ...) X_PACK_COUNT(LEVEL, ACTION, __VA_ARGS__, _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) (ACTION, __VA_ARGS__)
  24. #define X_PACK_L1_DEF(ACT, M) ACT(M) // here will expand to ACT(O(xxx)), ACT(A(a,x)), ACT(M(xxx))
  25. #define X_PACK_L1_1(ACT, M) X_PACK_L1_DEF(ACT, M)
  26. #define X_PACK_L1_2(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_1(ACT, __VA_ARGS__)
  27. #define X_PACK_L1_3(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_2(ACT, __VA_ARGS__)
  28. #define X_PACK_L1_4(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_3(ACT, __VA_ARGS__)
  29. #define X_PACK_L1_5(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_4(ACT, __VA_ARGS__)
  30. #define X_PACK_L1_6(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_5(ACT, __VA_ARGS__)
  31. #define X_PACK_L1_7(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_6(ACT, __VA_ARGS__)
  32. #define X_PACK_L1_8(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_7(ACT, __VA_ARGS__)
  33. #define X_PACK_L1_9(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_8(ACT, __VA_ARGS__)
  34. #define X_PACK_L1_10(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_9(ACT, __VA_ARGS__)
  35. #define X_PACK_L1_11(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_10(ACT, __VA_ARGS__)
  36. #define X_PACK_L1_12(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_11(ACT, __VA_ARGS__)
  37. #define X_PACK_L1_13(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_12(ACT, __VA_ARGS__)
  38. #define X_PACK_L1_14(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_13(ACT, __VA_ARGS__)
  39. #define X_PACK_L1_15(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_14(ACT, __VA_ARGS__)
  40. #define X_PACK_L1_16(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_15(ACT, __VA_ARGS__)
  41. #define X_PACK_L1_17(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_16(ACT, __VA_ARGS__)
  42. #define X_PACK_L1_18(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_17(ACT, __VA_ARGS__)
  43. #define X_PACK_L1_19(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_18(ACT, __VA_ARGS__)
  44. #define X_PACK_L1_20(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_19(ACT, __VA_ARGS__)
  45. #define X_PACK_L1_21(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_20(ACT, __VA_ARGS__)
  46. #define X_PACK_L1_22(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_21(ACT, __VA_ARGS__)
  47. #define X_PACK_L1_23(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_22(ACT, __VA_ARGS__)
  48. #define X_PACK_L1_24(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_23(ACT, __VA_ARGS__)
  49. #define X_PACK_L1_25(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_24(ACT, __VA_ARGS__)
  50. #define X_PACK_L1_26(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_25(ACT, __VA_ARGS__)
  51. #define X_PACK_L1_27(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_26(ACT, __VA_ARGS__)
  52. #define X_PACK_L1_28(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_27(ACT, __VA_ARGS__)
  53. #define X_PACK_L1_29(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_28(ACT, __VA_ARGS__)
  54. #define X_PACK_L1_30(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_29(ACT, __VA_ARGS__)
  55. #define X_PACK_L1_31(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_30(ACT, __VA_ARGS__)
  56. #define X_PACK_L1_32(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_31(ACT, __VA_ARGS__)
  57. #define X_PACK_L1_33(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_32(ACT, __VA_ARGS__)
  58. #define X_PACK_L1_34(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_33(ACT, __VA_ARGS__)
  59. #define X_PACK_L1_35(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_34(ACT, __VA_ARGS__)
  60. #define X_PACK_L1_36(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_35(ACT, __VA_ARGS__)
  61. #define X_PACK_L1_37(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_36(ACT, __VA_ARGS__)
  62. #define X_PACK_L1_38(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_37(ACT, __VA_ARGS__)
  63. #define X_PACK_L1_39(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_38(ACT, __VA_ARGS__)
  64. #define X_PACK_L1_40(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_39(ACT, __VA_ARGS__)
  65. #define X_PACK_L1_41(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_40(ACT, __VA_ARGS__)
  66. #define X_PACK_L1_42(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_41(ACT, __VA_ARGS__)
  67. #define X_PACK_L1_43(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_42(ACT, __VA_ARGS__)
  68. #define X_PACK_L1_44(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_43(ACT, __VA_ARGS__)
  69. #define X_PACK_L1_45(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_44(ACT, __VA_ARGS__)
  70. #define X_PACK_L1_46(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_45(ACT, __VA_ARGS__)
  71. #define X_PACK_L1_47(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_46(ACT, __VA_ARGS__)
  72. #define X_PACK_L1_48(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_47(ACT, __VA_ARGS__)
  73. #define X_PACK_L1_49(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_48(ACT, __VA_ARGS__)
  74. #define X_PACK_L1_50(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_49(ACT, __VA_ARGS__)
  75. #define X_PACK_L1_51(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_50(ACT, __VA_ARGS__)
  76. #define X_PACK_L1_52(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_51(ACT, __VA_ARGS__)
  77. #define X_PACK_L1_53(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_52(ACT, __VA_ARGS__)
  78. #define X_PACK_L1_54(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_53(ACT, __VA_ARGS__)
  79. #define X_PACK_L1_55(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_54(ACT, __VA_ARGS__)
  80. #define X_PACK_L1_56(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_55(ACT, __VA_ARGS__)
  81. #define X_PACK_L1_57(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_56(ACT, __VA_ARGS__)
  82. #define X_PACK_L1_58(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_57(ACT, __VA_ARGS__)
  83. #define X_PACK_L1_59(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_58(ACT, __VA_ARGS__)
  84. #define X_PACK_L1_60(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_59(ACT, __VA_ARGS__)
  85. #define X_PACK_L1_61(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_60(ACT, __VA_ARGS__)
  86. #define X_PACK_L1_62(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_61(ACT, __VA_ARGS__)
  87. #define X_PACK_L1_63(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_62(ACT, __VA_ARGS__)
  88. #define X_PACK_L1_64(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_63(ACT, __VA_ARGS__)
  89. #define X_PACK_L1_65(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_64(ACT, __VA_ARGS__)
  90. #define X_PACK_L1_66(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_65(ACT, __VA_ARGS__)
  91. #define X_PACK_L1_67(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_66(ACT, __VA_ARGS__)
  92. #define X_PACK_L1_68(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_67(ACT, __VA_ARGS__)
  93. #define X_PACK_L1_69(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_68(ACT, __VA_ARGS__)
  94. #define X_PACK_L1_70(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_69(ACT, __VA_ARGS__)
  95. #define X_PACK_L1_71(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_70(ACT, __VA_ARGS__)
  96. #define X_PACK_L1_72(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_71(ACT, __VA_ARGS__)
  97. #define X_PACK_L1_73(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_72(ACT, __VA_ARGS__)
  98. #define X_PACK_L1_74(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_73(ACT, __VA_ARGS__)
  99. #define X_PACK_L1_75(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_74(ACT, __VA_ARGS__)
  100. #define X_PACK_L1_76(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_75(ACT, __VA_ARGS__)
  101. #define X_PACK_L1_77(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_76(ACT, __VA_ARGS__)
  102. #define X_PACK_L1_78(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_77(ACT, __VA_ARGS__)
  103. #define X_PACK_L1_79(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_78(ACT, __VA_ARGS__)
  104. #define X_PACK_L1_80(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_79(ACT, __VA_ARGS__)
  105. #define X_PACK_L1_81(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_80(ACT, __VA_ARGS__)
  106. #define X_PACK_L1_82(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_81(ACT, __VA_ARGS__)
  107. #define X_PACK_L1_83(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_82(ACT, __VA_ARGS__)
  108. #define X_PACK_L1_84(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_83(ACT, __VA_ARGS__)
  109. #define X_PACK_L1_85(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_84(ACT, __VA_ARGS__)
  110. #define X_PACK_L1_86(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_85(ACT, __VA_ARGS__)
  111. #define X_PACK_L1_87(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_86(ACT, __VA_ARGS__)
  112. #define X_PACK_L1_88(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_87(ACT, __VA_ARGS__)
  113. #define X_PACK_L1_89(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_88(ACT, __VA_ARGS__)
  114. #define X_PACK_L1_90(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_89(ACT, __VA_ARGS__)
  115. #define X_PACK_L1_91(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_90(ACT, __VA_ARGS__)
  116. #define X_PACK_L1_92(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_91(ACT, __VA_ARGS__)
  117. #define X_PACK_L1_93(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_92(ACT, __VA_ARGS__)
  118. #define X_PACK_L1_94(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_93(ACT, __VA_ARGS__)
  119. #define X_PACK_L1_95(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_94(ACT, __VA_ARGS__)
  120. #define X_PACK_L1_96(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_95(ACT, __VA_ARGS__)
  121. #define X_PACK_L1_97(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_96(ACT, __VA_ARGS__)
  122. #define X_PACK_L1_98(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_97(ACT, __VA_ARGS__)
  123. #define X_PACK_L1_99(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_98(ACT, __VA_ARGS__)
  124. #define X_PACK_L2_DEF(ACT, M) ACT(M)
  125. #define X_PACK_L2_1(ACT, M) X_PACK_L2_DEF(ACT, M)
  126. #define X_PACK_L2_2(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_1(ACT, __VA_ARGS__)
  127. #define X_PACK_L2_3(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_2(ACT, __VA_ARGS__)
  128. #define X_PACK_L2_4(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_3(ACT, __VA_ARGS__)
  129. #define X_PACK_L2_5(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_4(ACT, __VA_ARGS__)
  130. #define X_PACK_L2_6(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_5(ACT, __VA_ARGS__)
  131. #define X_PACK_L2_7(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_6(ACT, __VA_ARGS__)
  132. #define X_PACK_L2_8(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_7(ACT, __VA_ARGS__)
  133. #define X_PACK_L2_9(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_8(ACT, __VA_ARGS__)
  134. #define X_PACK_L2_10(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_9(ACT, __VA_ARGS__)
  135. #define X_PACK_L2_11(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_10(ACT, __VA_ARGS__)
  136. #define X_PACK_L2_12(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_11(ACT, __VA_ARGS__)
  137. #define X_PACK_L2_13(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_12(ACT, __VA_ARGS__)
  138. #define X_PACK_L2_14(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_13(ACT, __VA_ARGS__)
  139. #define X_PACK_L2_15(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_14(ACT, __VA_ARGS__)
  140. #define X_PACK_L2_16(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_15(ACT, __VA_ARGS__)
  141. #define X_PACK_L2_17(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_16(ACT, __VA_ARGS__)
  142. #define X_PACK_L2_18(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_17(ACT, __VA_ARGS__)
  143. #define X_PACK_L2_19(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_18(ACT, __VA_ARGS__)
  144. #define X_PACK_L2_20(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_19(ACT, __VA_ARGS__)
  145. #define X_PACK_L2_21(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_20(ACT, __VA_ARGS__)
  146. #define X_PACK_L2_22(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_21(ACT, __VA_ARGS__)
  147. #define X_PACK_L2_23(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_22(ACT, __VA_ARGS__)
  148. #define X_PACK_L2_24(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_23(ACT, __VA_ARGS__)
  149. #define X_PACK_L2_25(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_24(ACT, __VA_ARGS__)
  150. #define X_PACK_L2_26(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_25(ACT, __VA_ARGS__)
  151. #define X_PACK_L2_27(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_26(ACT, __VA_ARGS__)
  152. #define X_PACK_L2_28(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_27(ACT, __VA_ARGS__)
  153. #define X_PACK_L2_29(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_28(ACT, __VA_ARGS__)
  154. #define X_PACK_L2_30(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_29(ACT, __VA_ARGS__)
  155. #define X_PACK_L2_31(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_30(ACT, __VA_ARGS__)
  156. #define X_PACK_L2_32(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_31(ACT, __VA_ARGS__)
  157. #define X_PACK_L2_33(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_32(ACT, __VA_ARGS__)
  158. #define X_PACK_L2_34(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_33(ACT, __VA_ARGS__)
  159. #define X_PACK_L2_35(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_34(ACT, __VA_ARGS__)
  160. #define X_PACK_L2_36(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_35(ACT, __VA_ARGS__)
  161. #define X_PACK_L2_37(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_36(ACT, __VA_ARGS__)
  162. #define X_PACK_L2_38(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_37(ACT, __VA_ARGS__)
  163. #define X_PACK_L2_39(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_38(ACT, __VA_ARGS__)
  164. #define X_PACK_L2_40(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_39(ACT, __VA_ARGS__)
  165. #define X_PACK_L2_41(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_40(ACT, __VA_ARGS__)
  166. #define X_PACK_L2_42(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_41(ACT, __VA_ARGS__)
  167. #define X_PACK_L2_43(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_42(ACT, __VA_ARGS__)
  168. #define X_PACK_L2_44(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_43(ACT, __VA_ARGS__)
  169. #define X_PACK_L2_45(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_44(ACT, __VA_ARGS__)
  170. #define X_PACK_L2_46(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_45(ACT, __VA_ARGS__)
  171. #define X_PACK_L2_47(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_46(ACT, __VA_ARGS__)
  172. #define X_PACK_L2_48(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_47(ACT, __VA_ARGS__)
  173. #define X_PACK_L2_49(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_48(ACT, __VA_ARGS__)
  174. #define X_PACK_L2_50(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_49(ACT, __VA_ARGS__)
  175. #define X_PACK_L2_51(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_50(ACT, __VA_ARGS__)
  176. #define X_PACK_L2_52(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_51(ACT, __VA_ARGS__)
  177. #define X_PACK_L2_53(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_52(ACT, __VA_ARGS__)
  178. #define X_PACK_L2_54(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_53(ACT, __VA_ARGS__)
  179. #define X_PACK_L2_55(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_54(ACT, __VA_ARGS__)
  180. #define X_PACK_L2_56(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_55(ACT, __VA_ARGS__)
  181. #define X_PACK_L2_57(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_56(ACT, __VA_ARGS__)
  182. #define X_PACK_L2_58(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_57(ACT, __VA_ARGS__)
  183. #define X_PACK_L2_59(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_58(ACT, __VA_ARGS__)
  184. #define X_PACK_L2_60(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_59(ACT, __VA_ARGS__)
  185. #define X_PACK_L2_61(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_60(ACT, __VA_ARGS__)
  186. #define X_PACK_L2_62(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_61(ACT, __VA_ARGS__)
  187. #define X_PACK_L2_63(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_62(ACT, __VA_ARGS__)
  188. #define X_PACK_L2_64(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_63(ACT, __VA_ARGS__)
  189. #define X_PACK_L2_65(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_64(ACT, __VA_ARGS__)
  190. #define X_PACK_L2_66(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_65(ACT, __VA_ARGS__)
  191. #define X_PACK_L2_67(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_66(ACT, __VA_ARGS__)
  192. #define X_PACK_L2_68(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_67(ACT, __VA_ARGS__)
  193. #define X_PACK_L2_69(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_68(ACT, __VA_ARGS__)
  194. #define X_PACK_L2_70(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_69(ACT, __VA_ARGS__)
  195. #define X_PACK_L2_71(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_70(ACT, __VA_ARGS__)
  196. #define X_PACK_L2_72(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_71(ACT, __VA_ARGS__)
  197. #define X_PACK_L2_73(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_72(ACT, __VA_ARGS__)
  198. #define X_PACK_L2_74(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_73(ACT, __VA_ARGS__)
  199. #define X_PACK_L2_75(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_74(ACT, __VA_ARGS__)
  200. #define X_PACK_L2_76(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_75(ACT, __VA_ARGS__)
  201. #define X_PACK_L2_77(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_76(ACT, __VA_ARGS__)
  202. #define X_PACK_L2_78(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_77(ACT, __VA_ARGS__)
  203. #define X_PACK_L2_79(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_78(ACT, __VA_ARGS__)
  204. #define X_PACK_L2_80(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_79(ACT, __VA_ARGS__)
  205. #define X_PACK_L2_81(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_80(ACT, __VA_ARGS__)
  206. #define X_PACK_L2_82(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_81(ACT, __VA_ARGS__)
  207. #define X_PACK_L2_83(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_82(ACT, __VA_ARGS__)
  208. #define X_PACK_L2_84(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_83(ACT, __VA_ARGS__)
  209. #define X_PACK_L2_85(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_84(ACT, __VA_ARGS__)
  210. #define X_PACK_L2_86(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_85(ACT, __VA_ARGS__)
  211. #define X_PACK_L2_87(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_86(ACT, __VA_ARGS__)
  212. #define X_PACK_L2_88(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_87(ACT, __VA_ARGS__)
  213. #define X_PACK_L2_89(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_88(ACT, __VA_ARGS__)
  214. #define X_PACK_L2_90(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_89(ACT, __VA_ARGS__)
  215. #define X_PACK_L2_91(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_90(ACT, __VA_ARGS__)
  216. #define X_PACK_L2_92(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_91(ACT, __VA_ARGS__)
  217. #define X_PACK_L2_93(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_92(ACT, __VA_ARGS__)
  218. #define X_PACK_L2_94(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_93(ACT, __VA_ARGS__)
  219. #define X_PACK_L2_95(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_94(ACT, __VA_ARGS__)
  220. #define X_PACK_L2_96(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_95(ACT, __VA_ARGS__)
  221. #define X_PACK_L2_97(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_96(ACT, __VA_ARGS__)
  222. #define X_PACK_L2_98(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_97(ACT, __VA_ARGS__)
  223. #define X_PACK_L2_99(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_98(ACT, __VA_ARGS__)
  224. // two para every time. for alias
  225. #define X_PACK_L2_2_DEF(ACT, M, NAME) ACT(M, NAME)
  226. #define X_PACK_L2_2_2(ACT, M, NAME) X_PACK_L2_2_DEF(ACT, M, NAME)
  227. #define X_PACK_L2_2_4(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_2(ACT, __VA_ARGS__)
  228. #define X_PACK_L2_2_6(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_4(ACT, __VA_ARGS__)
  229. #define X_PACK_L2_2_8(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_6(ACT, __VA_ARGS__)
  230. #define X_PACK_L2_2_10(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_8(ACT, __VA_ARGS__)
  231. #define X_PACK_L2_2_12(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_10(ACT, __VA_ARGS__)
  232. #define X_PACK_L2_2_14(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_12(ACT, __VA_ARGS__)
  233. #define X_PACK_L2_2_16(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_14(ACT, __VA_ARGS__)
  234. #define X_PACK_L2_2_18(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_16(ACT, __VA_ARGS__)
  235. #define X_PACK_L2_2_20(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_18(ACT, __VA_ARGS__)
  236. #define X_PACK_L2_2_22(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_20(ACT, __VA_ARGS__)
  237. #define X_PACK_L2_2_24(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_22(ACT, __VA_ARGS__)
  238. #define X_PACK_L2_2_26(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_24(ACT, __VA_ARGS__)
  239. #define X_PACK_L2_2_28(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_26(ACT, __VA_ARGS__)
  240. #define X_PACK_L2_2_30(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_28(ACT, __VA_ARGS__)
  241. #define X_PACK_L2_2_32(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_30(ACT, __VA_ARGS__)
  242. #define X_PACK_L2_2_34(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_32(ACT, __VA_ARGS__)
  243. #define X_PACK_L2_2_36(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_34(ACT, __VA_ARGS__)
  244. #define X_PACK_L2_2_38(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_36(ACT, __VA_ARGS__)
  245. #define X_PACK_L2_2_40(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_38(ACT, __VA_ARGS__)
  246. #define X_PACK_L2_2_42(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_40(ACT, __VA_ARGS__)
  247. #define X_PACK_L2_2_44(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_42(ACT, __VA_ARGS__)
  248. #define X_PACK_L2_2_46(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_44(ACT, __VA_ARGS__)
  249. #define X_PACK_L2_2_48(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_46(ACT, __VA_ARGS__)
  250. #define X_PACK_L2_2_50(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_48(ACT, __VA_ARGS__)
  251. #else // msvc
  252. // thx https://stackoverflow.com/questions/5134523/msvc-doesnt-expand-va-args-correctly
  253. // in MSVC's preprocessor, __VA_ARGS__ is treat as a normal parameter, so it will expand at last, and in gcc, it's expand at first. so we need expand it first
  254. #define X_PACK_N(LEVEL, ACTION, ...) X_PACK_EXPAND(X_PACK_COUNT(LEVEL, ACTION, __VA_ARGS__,_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)) X_PACK_EXPAND((ACTION, __VA_ARGS__))
  255. #define X_PACK_N2(LEVEL, ACTION, ...) X_PACK_EXPAND(X_PACK_COUNT(LEVEL, ACTION, __VA_ARGS__,_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)) X_PACK_EXPAND((ACTION, __VA_ARGS__))
  256. #define X_PACK_L1_DEF(ACT, M) ACT(M) // here will expand to ACT(O(xxx)), ACT(A(a,x)), ACT(M(xxx))
  257. #define X_PACK_L1_1(ACT, M) X_PACK_L1_DEF(ACT, M)
  258. #define X_PACK_L1_2(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_1 X_PACK_EXPAND((ACT, __VA_ARGS__))
  259. #define X_PACK_L1_3(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_2 X_PACK_EXPAND((ACT, __VA_ARGS__))
  260. #define X_PACK_L1_4(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_3 X_PACK_EXPAND((ACT, __VA_ARGS__))
  261. #define X_PACK_L1_5(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_4 X_PACK_EXPAND((ACT, __VA_ARGS__))
  262. #define X_PACK_L1_6(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_5 X_PACK_EXPAND((ACT, __VA_ARGS__))
  263. #define X_PACK_L1_7(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_6 X_PACK_EXPAND((ACT, __VA_ARGS__))
  264. #define X_PACK_L1_8(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_7 X_PACK_EXPAND((ACT, __VA_ARGS__))
  265. #define X_PACK_L1_9(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_8 X_PACK_EXPAND((ACT, __VA_ARGS__))
  266. #define X_PACK_L1_10(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_9 X_PACK_EXPAND((ACT, __VA_ARGS__))
  267. #define X_PACK_L1_11(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_10 X_PACK_EXPAND((ACT, __VA_ARGS__))
  268. #define X_PACK_L1_12(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_11 X_PACK_EXPAND((ACT, __VA_ARGS__))
  269. #define X_PACK_L1_13(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_12 X_PACK_EXPAND((ACT, __VA_ARGS__))
  270. #define X_PACK_L1_14(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_13 X_PACK_EXPAND((ACT, __VA_ARGS__))
  271. #define X_PACK_L1_15(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_14 X_PACK_EXPAND((ACT, __VA_ARGS__))
  272. #define X_PACK_L1_16(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_15 X_PACK_EXPAND((ACT, __VA_ARGS__))
  273. #define X_PACK_L1_17(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_16 X_PACK_EXPAND((ACT, __VA_ARGS__))
  274. #define X_PACK_L1_18(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_17 X_PACK_EXPAND((ACT, __VA_ARGS__))
  275. #define X_PACK_L1_19(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_18 X_PACK_EXPAND((ACT, __VA_ARGS__))
  276. #define X_PACK_L1_20(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_19 X_PACK_EXPAND((ACT, __VA_ARGS__))
  277. #define X_PACK_L1_21(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_20 X_PACK_EXPAND((ACT, __VA_ARGS__))
  278. #define X_PACK_L1_22(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_21 X_PACK_EXPAND((ACT, __VA_ARGS__))
  279. #define X_PACK_L1_23(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_22 X_PACK_EXPAND((ACT, __VA_ARGS__))
  280. #define X_PACK_L1_24(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_23 X_PACK_EXPAND((ACT, __VA_ARGS__))
  281. #define X_PACK_L1_25(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_24 X_PACK_EXPAND((ACT, __VA_ARGS__))
  282. #define X_PACK_L1_26(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_25 X_PACK_EXPAND((ACT, __VA_ARGS__))
  283. #define X_PACK_L1_27(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_26 X_PACK_EXPAND((ACT, __VA_ARGS__))
  284. #define X_PACK_L1_28(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_27 X_PACK_EXPAND((ACT, __VA_ARGS__))
  285. #define X_PACK_L1_29(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_28 X_PACK_EXPAND((ACT, __VA_ARGS__))
  286. #define X_PACK_L1_30(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_29 X_PACK_EXPAND((ACT, __VA_ARGS__))
  287. #define X_PACK_L1_31(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_30 X_PACK_EXPAND((ACT, __VA_ARGS__))
  288. #define X_PACK_L1_32(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_31 X_PACK_EXPAND((ACT, __VA_ARGS__))
  289. #define X_PACK_L1_33(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_32 X_PACK_EXPAND((ACT, __VA_ARGS__))
  290. #define X_PACK_L1_34(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_33 X_PACK_EXPAND((ACT, __VA_ARGS__))
  291. #define X_PACK_L1_35(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_34 X_PACK_EXPAND((ACT, __VA_ARGS__))
  292. #define X_PACK_L1_36(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_35 X_PACK_EXPAND((ACT, __VA_ARGS__))
  293. #define X_PACK_L1_37(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_36 X_PACK_EXPAND((ACT, __VA_ARGS__))
  294. #define X_PACK_L1_38(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_37 X_PACK_EXPAND((ACT, __VA_ARGS__))
  295. #define X_PACK_L1_39(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_38 X_PACK_EXPAND((ACT, __VA_ARGS__))
  296. #define X_PACK_L1_40(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_39 X_PACK_EXPAND((ACT, __VA_ARGS__))
  297. #define X_PACK_L1_41(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_40 X_PACK_EXPAND((ACT, __VA_ARGS__))
  298. #define X_PACK_L1_42(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_41 X_PACK_EXPAND((ACT, __VA_ARGS__))
  299. #define X_PACK_L1_43(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_42 X_PACK_EXPAND((ACT, __VA_ARGS__))
  300. #define X_PACK_L1_44(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_43 X_PACK_EXPAND((ACT, __VA_ARGS__))
  301. #define X_PACK_L1_45(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_44 X_PACK_EXPAND((ACT, __VA_ARGS__))
  302. #define X_PACK_L1_46(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_45 X_PACK_EXPAND((ACT, __VA_ARGS__))
  303. #define X_PACK_L1_47(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_46 X_PACK_EXPAND((ACT, __VA_ARGS__))
  304. #define X_PACK_L1_48(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_47 X_PACK_EXPAND((ACT, __VA_ARGS__))
  305. #define X_PACK_L1_49(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_48 X_PACK_EXPAND((ACT, __VA_ARGS__))
  306. #define X_PACK_L1_50(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_49 X_PACK_EXPAND((ACT, __VA_ARGS__))
  307. #define X_PACK_L1_51(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_50 X_PACK_EXPAND((ACT, __VA_ARGS__))
  308. #define X_PACK_L1_52(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_51 X_PACK_EXPAND((ACT, __VA_ARGS__))
  309. #define X_PACK_L1_53(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_52 X_PACK_EXPAND((ACT, __VA_ARGS__))
  310. #define X_PACK_L1_54(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_53 X_PACK_EXPAND((ACT, __VA_ARGS__))
  311. #define X_PACK_L1_55(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_54 X_PACK_EXPAND((ACT, __VA_ARGS__))
  312. #define X_PACK_L1_56(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_55 X_PACK_EXPAND((ACT, __VA_ARGS__))
  313. #define X_PACK_L1_57(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_56 X_PACK_EXPAND((ACT, __VA_ARGS__))
  314. #define X_PACK_L1_58(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_57 X_PACK_EXPAND((ACT, __VA_ARGS__))
  315. #define X_PACK_L1_59(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_58 X_PACK_EXPAND((ACT, __VA_ARGS__))
  316. #define X_PACK_L1_60(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_59 X_PACK_EXPAND((ACT, __VA_ARGS__))
  317. #define X_PACK_L1_61(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_60 X_PACK_EXPAND((ACT, __VA_ARGS__))
  318. #define X_PACK_L1_62(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_61 X_PACK_EXPAND((ACT, __VA_ARGS__))
  319. #define X_PACK_L1_63(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_62 X_PACK_EXPAND((ACT, __VA_ARGS__))
  320. #define X_PACK_L1_64(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_63 X_PACK_EXPAND((ACT, __VA_ARGS__))
  321. #define X_PACK_L1_65(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_64 X_PACK_EXPAND((ACT, __VA_ARGS__))
  322. #define X_PACK_L1_66(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_65 X_PACK_EXPAND((ACT, __VA_ARGS__))
  323. #define X_PACK_L1_67(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_66 X_PACK_EXPAND((ACT, __VA_ARGS__))
  324. #define X_PACK_L1_68(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_67 X_PACK_EXPAND((ACT, __VA_ARGS__))
  325. #define X_PACK_L1_69(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_68 X_PACK_EXPAND((ACT, __VA_ARGS__))
  326. #define X_PACK_L1_70(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_69 X_PACK_EXPAND((ACT, __VA_ARGS__))
  327. #define X_PACK_L1_71(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_70 X_PACK_EXPAND((ACT, __VA_ARGS__))
  328. #define X_PACK_L1_72(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_71 X_PACK_EXPAND((ACT, __VA_ARGS__))
  329. #define X_PACK_L1_73(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_72 X_PACK_EXPAND((ACT, __VA_ARGS__))
  330. #define X_PACK_L1_74(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_73 X_PACK_EXPAND((ACT, __VA_ARGS__))
  331. #define X_PACK_L1_75(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_74 X_PACK_EXPAND((ACT, __VA_ARGS__))
  332. #define X_PACK_L1_76(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_75 X_PACK_EXPAND((ACT, __VA_ARGS__))
  333. #define X_PACK_L1_77(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_76 X_PACK_EXPAND((ACT, __VA_ARGS__))
  334. #define X_PACK_L1_78(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_77 X_PACK_EXPAND((ACT, __VA_ARGS__))
  335. #define X_PACK_L1_79(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_78 X_PACK_EXPAND((ACT, __VA_ARGS__))
  336. #define X_PACK_L1_80(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_79 X_PACK_EXPAND((ACT, __VA_ARGS__))
  337. #define X_PACK_L1_81(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_80 X_PACK_EXPAND((ACT, __VA_ARGS__))
  338. #define X_PACK_L1_82(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_81 X_PACK_EXPAND((ACT, __VA_ARGS__))
  339. #define X_PACK_L1_83(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_82 X_PACK_EXPAND((ACT, __VA_ARGS__))
  340. #define X_PACK_L1_84(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_83 X_PACK_EXPAND((ACT, __VA_ARGS__))
  341. #define X_PACK_L1_85(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_84 X_PACK_EXPAND((ACT, __VA_ARGS__))
  342. #define X_PACK_L1_86(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_85 X_PACK_EXPAND((ACT, __VA_ARGS__))
  343. #define X_PACK_L1_87(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_86 X_PACK_EXPAND((ACT, __VA_ARGS__))
  344. #define X_PACK_L1_88(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_87 X_PACK_EXPAND((ACT, __VA_ARGS__))
  345. #define X_PACK_L1_89(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_88 X_PACK_EXPAND((ACT, __VA_ARGS__))
  346. #define X_PACK_L1_90(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_89 X_PACK_EXPAND((ACT, __VA_ARGS__))
  347. #define X_PACK_L1_91(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_90 X_PACK_EXPAND((ACT, __VA_ARGS__))
  348. #define X_PACK_L1_92(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_91 X_PACK_EXPAND((ACT, __VA_ARGS__))
  349. #define X_PACK_L1_93(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_92 X_PACK_EXPAND((ACT, __VA_ARGS__))
  350. #define X_PACK_L1_94(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_93 X_PACK_EXPAND((ACT, __VA_ARGS__))
  351. #define X_PACK_L1_95(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_94 X_PACK_EXPAND((ACT, __VA_ARGS__))
  352. #define X_PACK_L1_96(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_95 X_PACK_EXPAND((ACT, __VA_ARGS__))
  353. #define X_PACK_L1_97(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_96 X_PACK_EXPAND((ACT, __VA_ARGS__))
  354. #define X_PACK_L1_98(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_97 X_PACK_EXPAND((ACT, __VA_ARGS__))
  355. #define X_PACK_L1_99(ACT, M,...) X_PACK_L1_DEF(ACT, M) X_PACK_L1_98 X_PACK_EXPAND((ACT, __VA_ARGS__))
  356. #define X_PACK_L2_DEF(ACT, M) ACT(M)
  357. #define X_PACK_L2_1(ACT, M) X_PACK_L2_DEF(ACT, M)
  358. #define X_PACK_L2_2(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_1 X_PACK_EXPAND((ACT, __VA_ARGS__))
  359. #define X_PACK_L2_3(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_2 X_PACK_EXPAND((ACT, __VA_ARGS__))
  360. #define X_PACK_L2_4(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_3 X_PACK_EXPAND((ACT, __VA_ARGS__))
  361. #define X_PACK_L2_5(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_4 X_PACK_EXPAND((ACT, __VA_ARGS__))
  362. #define X_PACK_L2_6(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_5 X_PACK_EXPAND((ACT, __VA_ARGS__))
  363. #define X_PACK_L2_7(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_6 X_PACK_EXPAND((ACT, __VA_ARGS__))
  364. #define X_PACK_L2_8(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_7 X_PACK_EXPAND((ACT, __VA_ARGS__))
  365. #define X_PACK_L2_9(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_8 X_PACK_EXPAND((ACT, __VA_ARGS__))
  366. #define X_PACK_L2_10(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_9 X_PACK_EXPAND((ACT, __VA_ARGS__))
  367. #define X_PACK_L2_11(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_10 X_PACK_EXPAND((ACT, __VA_ARGS__))
  368. #define X_PACK_L2_12(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_11 X_PACK_EXPAND((ACT, __VA_ARGS__))
  369. #define X_PACK_L2_13(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_12 X_PACK_EXPAND((ACT, __VA_ARGS__))
  370. #define X_PACK_L2_14(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_13 X_PACK_EXPAND((ACT, __VA_ARGS__))
  371. #define X_PACK_L2_15(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_14 X_PACK_EXPAND((ACT, __VA_ARGS__))
  372. #define X_PACK_L2_16(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_15 X_PACK_EXPAND((ACT, __VA_ARGS__))
  373. #define X_PACK_L2_17(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_16 X_PACK_EXPAND((ACT, __VA_ARGS__))
  374. #define X_PACK_L2_18(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_17 X_PACK_EXPAND((ACT, __VA_ARGS__))
  375. #define X_PACK_L2_19(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_18 X_PACK_EXPAND((ACT, __VA_ARGS__))
  376. #define X_PACK_L2_20(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_19 X_PACK_EXPAND((ACT, __VA_ARGS__))
  377. #define X_PACK_L2_21(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_20 X_PACK_EXPAND((ACT, __VA_ARGS__))
  378. #define X_PACK_L2_22(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_21 X_PACK_EXPAND((ACT, __VA_ARGS__))
  379. #define X_PACK_L2_23(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_22 X_PACK_EXPAND((ACT, __VA_ARGS__))
  380. #define X_PACK_L2_24(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_23 X_PACK_EXPAND((ACT, __VA_ARGS__))
  381. #define X_PACK_L2_25(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_24 X_PACK_EXPAND((ACT, __VA_ARGS__))
  382. #define X_PACK_L2_26(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_25 X_PACK_EXPAND((ACT, __VA_ARGS__))
  383. #define X_PACK_L2_27(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_26 X_PACK_EXPAND((ACT, __VA_ARGS__))
  384. #define X_PACK_L2_28(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_27 X_PACK_EXPAND((ACT, __VA_ARGS__))
  385. #define X_PACK_L2_29(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_28 X_PACK_EXPAND((ACT, __VA_ARGS__))
  386. #define X_PACK_L2_30(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_29 X_PACK_EXPAND((ACT, __VA_ARGS__))
  387. #define X_PACK_L2_31(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_30 X_PACK_EXPAND((ACT, __VA_ARGS__))
  388. #define X_PACK_L2_32(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_31 X_PACK_EXPAND((ACT, __VA_ARGS__))
  389. #define X_PACK_L2_33(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_32 X_PACK_EXPAND((ACT, __VA_ARGS__))
  390. #define X_PACK_L2_34(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_33 X_PACK_EXPAND((ACT, __VA_ARGS__))
  391. #define X_PACK_L2_35(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_34 X_PACK_EXPAND((ACT, __VA_ARGS__))
  392. #define X_PACK_L2_36(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_35 X_PACK_EXPAND((ACT, __VA_ARGS__))
  393. #define X_PACK_L2_37(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_36 X_PACK_EXPAND((ACT, __VA_ARGS__))
  394. #define X_PACK_L2_38(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_37 X_PACK_EXPAND((ACT, __VA_ARGS__))
  395. #define X_PACK_L2_39(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_38 X_PACK_EXPAND((ACT, __VA_ARGS__))
  396. #define X_PACK_L2_40(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_39 X_PACK_EXPAND((ACT, __VA_ARGS__))
  397. #define X_PACK_L2_41(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_40 X_PACK_EXPAND((ACT, __VA_ARGS__))
  398. #define X_PACK_L2_42(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_41 X_PACK_EXPAND((ACT, __VA_ARGS__))
  399. #define X_PACK_L2_43(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_42 X_PACK_EXPAND((ACT, __VA_ARGS__))
  400. #define X_PACK_L2_44(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_43 X_PACK_EXPAND((ACT, __VA_ARGS__))
  401. #define X_PACK_L2_45(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_44 X_PACK_EXPAND((ACT, __VA_ARGS__))
  402. #define X_PACK_L2_46(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_45 X_PACK_EXPAND((ACT, __VA_ARGS__))
  403. #define X_PACK_L2_47(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_46 X_PACK_EXPAND((ACT, __VA_ARGS__))
  404. #define X_PACK_L2_48(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_47 X_PACK_EXPAND((ACT, __VA_ARGS__))
  405. #define X_PACK_L2_49(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_48 X_PACK_EXPAND((ACT, __VA_ARGS__))
  406. #define X_PACK_L2_50(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_49 X_PACK_EXPAND((ACT, __VA_ARGS__))
  407. #define X_PACK_L2_51(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_50 X_PACK_EXPAND((ACT, __VA_ARGS__))
  408. #define X_PACK_L2_52(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_51 X_PACK_EXPAND((ACT, __VA_ARGS__))
  409. #define X_PACK_L2_53(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_52 X_PACK_EXPAND((ACT, __VA_ARGS__))
  410. #define X_PACK_L2_54(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_53 X_PACK_EXPAND((ACT, __VA_ARGS__))
  411. #define X_PACK_L2_55(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_54 X_PACK_EXPAND((ACT, __VA_ARGS__))
  412. #define X_PACK_L2_56(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_55 X_PACK_EXPAND((ACT, __VA_ARGS__))
  413. #define X_PACK_L2_57(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_56 X_PACK_EXPAND((ACT, __VA_ARGS__))
  414. #define X_PACK_L2_58(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_57 X_PACK_EXPAND((ACT, __VA_ARGS__))
  415. #define X_PACK_L2_59(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_58 X_PACK_EXPAND((ACT, __VA_ARGS__))
  416. #define X_PACK_L2_60(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_59 X_PACK_EXPAND((ACT, __VA_ARGS__))
  417. #define X_PACK_L2_61(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_60 X_PACK_EXPAND((ACT, __VA_ARGS__))
  418. #define X_PACK_L2_62(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_61 X_PACK_EXPAND((ACT, __VA_ARGS__))
  419. #define X_PACK_L2_63(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_62 X_PACK_EXPAND((ACT, __VA_ARGS__))
  420. #define X_PACK_L2_64(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_63 X_PACK_EXPAND((ACT, __VA_ARGS__))
  421. #define X_PACK_L2_65(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_64 X_PACK_EXPAND((ACT, __VA_ARGS__))
  422. #define X_PACK_L2_66(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_65 X_PACK_EXPAND((ACT, __VA_ARGS__))
  423. #define X_PACK_L2_67(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_66 X_PACK_EXPAND((ACT, __VA_ARGS__))
  424. #define X_PACK_L2_68(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_67 X_PACK_EXPAND((ACT, __VA_ARGS__))
  425. #define X_PACK_L2_69(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_68 X_PACK_EXPAND((ACT, __VA_ARGS__))
  426. #define X_PACK_L2_70(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_69 X_PACK_EXPAND((ACT, __VA_ARGS__))
  427. #define X_PACK_L2_71(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_70 X_PACK_EXPAND((ACT, __VA_ARGS__))
  428. #define X_PACK_L2_72(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_71 X_PACK_EXPAND((ACT, __VA_ARGS__))
  429. #define X_PACK_L2_73(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_72 X_PACK_EXPAND((ACT, __VA_ARGS__))
  430. #define X_PACK_L2_74(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_73 X_PACK_EXPAND((ACT, __VA_ARGS__))
  431. #define X_PACK_L2_75(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_74 X_PACK_EXPAND((ACT, __VA_ARGS__))
  432. #define X_PACK_L2_76(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_75 X_PACK_EXPAND((ACT, __VA_ARGS__))
  433. #define X_PACK_L2_77(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_76 X_PACK_EXPAND((ACT, __VA_ARGS__))
  434. #define X_PACK_L2_78(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_77 X_PACK_EXPAND((ACT, __VA_ARGS__))
  435. #define X_PACK_L2_79(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_78 X_PACK_EXPAND((ACT, __VA_ARGS__))
  436. #define X_PACK_L2_80(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_79 X_PACK_EXPAND((ACT, __VA_ARGS__))
  437. #define X_PACK_L2_81(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_80 X_PACK_EXPAND((ACT, __VA_ARGS__))
  438. #define X_PACK_L2_82(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_81 X_PACK_EXPAND((ACT, __VA_ARGS__))
  439. #define X_PACK_L2_83(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_82 X_PACK_EXPAND((ACT, __VA_ARGS__))
  440. #define X_PACK_L2_84(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_83 X_PACK_EXPAND((ACT, __VA_ARGS__))
  441. #define X_PACK_L2_85(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_84 X_PACK_EXPAND((ACT, __VA_ARGS__))
  442. #define X_PACK_L2_86(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_85 X_PACK_EXPAND((ACT, __VA_ARGS__))
  443. #define X_PACK_L2_87(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_86 X_PACK_EXPAND((ACT, __VA_ARGS__))
  444. #define X_PACK_L2_88(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_87 X_PACK_EXPAND((ACT, __VA_ARGS__))
  445. #define X_PACK_L2_89(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_88 X_PACK_EXPAND((ACT, __VA_ARGS__))
  446. #define X_PACK_L2_90(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_89 X_PACK_EXPAND((ACT, __VA_ARGS__))
  447. #define X_PACK_L2_91(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_90 X_PACK_EXPAND((ACT, __VA_ARGS__))
  448. #define X_PACK_L2_92(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_91 X_PACK_EXPAND((ACT, __VA_ARGS__))
  449. #define X_PACK_L2_93(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_92 X_PACK_EXPAND((ACT, __VA_ARGS__))
  450. #define X_PACK_L2_94(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_93 X_PACK_EXPAND((ACT, __VA_ARGS__))
  451. #define X_PACK_L2_95(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_94 X_PACK_EXPAND((ACT, __VA_ARGS__))
  452. #define X_PACK_L2_96(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_95 X_PACK_EXPAND((ACT, __VA_ARGS__))
  453. #define X_PACK_L2_97(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_96 X_PACK_EXPAND((ACT, __VA_ARGS__))
  454. #define X_PACK_L2_98(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_97 X_PACK_EXPAND((ACT, __VA_ARGS__))
  455. #define X_PACK_L2_99(ACT, M,...) X_PACK_L2_DEF(ACT, M) X_PACK_L2_98 X_PACK_EXPAND((ACT, __VA_ARGS__))
  456. // two para every time. for alias
  457. #define X_PACK_L2_2_DEF(ACT, M, NAME) ACT(M, NAME)
  458. #define X_PACK_L2_2_2(ACT, M, NAME) X_PACK_L2_2_DEF(ACT, M, NAME)
  459. #define X_PACK_L2_2_4(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_2 X_PACK_EXPAND((ACT, __VA_ARGS__))
  460. #define X_PACK_L2_2_6(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_4 X_PACK_EXPAND((ACT, __VA_ARGS__))
  461. #define X_PACK_L2_2_8(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_6 X_PACK_EXPAND((ACT, __VA_ARGS__))
  462. #define X_PACK_L2_2_10(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_8 X_PACK_EXPAND((ACT, __VA_ARGS__))
  463. #define X_PACK_L2_2_12(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_10 X_PACK_EXPAND((ACT, __VA_ARGS__))
  464. #define X_PACK_L2_2_14(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_12 X_PACK_EXPAND((ACT, __VA_ARGS__))
  465. #define X_PACK_L2_2_16(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_14 X_PACK_EXPAND((ACT, __VA_ARGS__))
  466. #define X_PACK_L2_2_18(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_16 X_PACK_EXPAND((ACT, __VA_ARGS__))
  467. #define X_PACK_L2_2_20(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_18 X_PACK_EXPAND((ACT, __VA_ARGS__))
  468. #define X_PACK_L2_2_22(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_20 X_PACK_EXPAND((ACT, __VA_ARGS__))
  469. #define X_PACK_L2_2_24(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_22 X_PACK_EXPAND((ACT, __VA_ARGS__))
  470. #define X_PACK_L2_2_26(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_24 X_PACK_EXPAND((ACT, __VA_ARGS__))
  471. #define X_PACK_L2_2_28(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_26 X_PACK_EXPAND((ACT, __VA_ARGS__))
  472. #define X_PACK_L2_2_30(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_28 X_PACK_EXPAND((ACT, __VA_ARGS__))
  473. #define X_PACK_L2_2_32(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_30 X_PACK_EXPAND((ACT, __VA_ARGS__))
  474. #define X_PACK_L2_2_34(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_32 X_PACK_EXPAND((ACT, __VA_ARGS__))
  475. #define X_PACK_L2_2_36(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_34 X_PACK_EXPAND((ACT, __VA_ARGS__))
  476. #define X_PACK_L2_2_38(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_36 X_PACK_EXPAND((ACT, __VA_ARGS__))
  477. #define X_PACK_L2_2_40(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_38 X_PACK_EXPAND((ACT, __VA_ARGS__))
  478. #define X_PACK_L2_2_42(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_40 X_PACK_EXPAND((ACT, __VA_ARGS__))
  479. #define X_PACK_L2_2_44(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_42 X_PACK_EXPAND((ACT, __VA_ARGS__))
  480. #define X_PACK_L2_2_46(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_44 X_PACK_EXPAND((ACT, __VA_ARGS__))
  481. #define X_PACK_L2_2_48(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_46 X_PACK_EXPAND((ACT, __VA_ARGS__))
  482. #define X_PACK_L2_2_50(ACT, M, NAME,...) X_PACK_L2_2_DEF(ACT, M, NAME) X_PACK_L2_2_48 X_PACK_EXPAND((ACT, __VA_ARGS__))
  483. #endif
  484. #endif