| // Copyright 2022 The Dawn & Tint Authors | |
| // | |
| // Redistribution and use in source and binary forms, with or without | |
| // modification, are permitted provided that the following conditions are met: | |
| // | |
| // 1. Redistributions of source code must retain the above copyright notice, this | |
| // list of conditions and the following disclaimer. | |
| // | |
| // 2. Redistributions in binary form must reproduce the above copyright notice, | |
| // this list of conditions and the following disclaimer in the documentation | |
| // and/or other materials provided with the distribution. | |
| // | |
| // 3. Neither the name of the copyright holder nor the names of its | |
| // contributors may be used to endorse or promote products derived from | |
| // this software without specific prior written permission. | |
| // | |
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | |
| // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |
| // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |
| // DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE | |
| // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |
| // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | |
| // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | |
| // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |
| // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | |
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
| #ifndef SRC_TINT_UTILS_MACROS_FOREACH_H_ | |
| #define SRC_TINT_UTILS_MACROS_FOREACH_H_ | |
| // Macro magic to perform macro variadic dispatch. | |
| // See: | |
| // https://renenyffenegger.ch/notes/development/languages/C-C-plus-plus/preprocessor/macros/__VA_ARGS__/count-arguments | |
| // Note, this doesn't attempt to use the ##__VA_ARGS__ trick to handle 0 | |
| // Helper macro to force expanding __VA_ARGS__ to satisfy MSVC compiler. | |
| #define TINT_MSVC_EXPAND_BUG(X) X | |
| /// TINT_COUNT_ARGUMENTS_NTH_ARG is used by TINT_COUNT_ARGUMENTS to get the number of arguments in a | |
| /// variadic macro call. | |
| #define TINT_COUNT_ARGUMENTS_NTH_ARG( \ | |
| _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, \ | |
| _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, \ | |
| _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, \ | |
| _59, _60, _61, _62, _63, _64, N, ...) \ | |
| N | |
| /// TINT_COUNT_ARGUMENTS evaluates to the number of arguments passed to the macro | |
| #define TINT_COUNT_ARGUMENTS(...) \ | |
| TINT_MSVC_EXPAND_BUG(TINT_COUNT_ARGUMENTS_NTH_ARG( \ | |
| __VA_ARGS__, 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)) | |
| // Correctness checks. | |
| static_assert(1 == TINT_COUNT_ARGUMENTS(a), "TINT_COUNT_ARGUMENTS broken"); | |
| static_assert(2 == TINT_COUNT_ARGUMENTS(a, b), "TINT_COUNT_ARGUMENTS broken"); | |
| static_assert(3 == TINT_COUNT_ARGUMENTS(a, b, c), "TINT_COUNT_ARGUMENTS broken"); | |
| static_assert(64 == TINT_COUNT_ARGUMENTS(a, | |
| b, | |
| c, | |
| d, | |
| e, | |
| f, | |
| g, | |
| h, | |
| i, | |
| j, | |
| k, | |
| l, | |
| m, | |
| n, | |
| o, | |
| p, | |
| q, | |
| r, | |
| s, | |
| t, | |
| u, | |
| v, | |
| w, | |
| x, | |
| y, | |
| z, | |
| a2, | |
| b2, | |
| c2, | |
| d2, | |
| e2, | |
| f2, | |
| g2, | |
| h2, | |
| i2, | |
| j2, | |
| k2, | |
| l2, | |
| m2, | |
| n2, | |
| o2, | |
| p2, | |
| q2, | |
| r2, | |
| s2, | |
| t2, | |
| u2, | |
| v2, | |
| w2, | |
| x2, | |
| y2, | |
| z2, | |
| a3, | |
| b3, | |
| c3, | |
| d3, | |
| e3, | |
| f3, | |
| g3, | |
| h3, | |
| i3, | |
| j3, | |
| k3, | |
| l3), | |
| "TINT_COUNT_ARGUMENTS broken"); | |
| /// TINT_FOREACH calls CB with each of the variadic arguments. | |
| #define TINT_FOREACH(CB, ...) \ | |
| TINT_MSVC_EXPAND_BUG( \ | |
| TINT_CONCAT(TINT_FOREACH_, TINT_COUNT_ARGUMENTS(__VA_ARGS__))(CB, __VA_ARGS__)) | |
| #define TINT_FOREACH_1(CB, _1) CB(_1) | |
| #define TINT_FOREACH_2(CB, _1, _2) \ | |
| TINT_FOREACH_1(CB, _1) \ | |
| CB(_2) | |
| #define TINT_FOREACH_3(CB, _1, _2, _3) \ | |
| TINT_FOREACH_2(CB, _1, _2) \ | |
| CB(_3) | |
| #define TINT_FOREACH_4(CB, _1, _2, _3, _4) \ | |
| TINT_FOREACH_3(CB, _1, _2, _3) \ | |
| CB(_4) | |
| #define TINT_FOREACH_5(CB, _1, _2, _3, _4, _5) \ | |
| TINT_FOREACH_4(CB, _1, _2, _3, _4) \ | |
| CB(_5) | |
| #define TINT_FOREACH_6(CB, _1, _2, _3, _4, _5, _6) \ | |
| TINT_FOREACH_5(CB, _1, _2, _3, _4, _5) \ | |
| CB(_6) | |
| #define TINT_FOREACH_7(CB, _1, _2, _3, _4, _5, _6, _7) \ | |
| TINT_FOREACH_6(CB, _1, _2, _3, _4, _5, _6) \ | |
| CB(_7) | |
| #define TINT_FOREACH_8(CB, _1, _2, _3, _4, _5, _6, _7, _8) \ | |
| TINT_FOREACH_7(CB, _1, _2, _3, _4, _5, _6, _7) \ | |
| CB(_8) | |
| #define TINT_FOREACH_9(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9) \ | |
| TINT_FOREACH_8(CB, _1, _2, _3, _4, _5, _6, _7, _8) \ | |
| CB(_9) | |
| #define TINT_FOREACH_10(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) \ | |
| TINT_FOREACH_9(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9) \ | |
| CB(_10) | |
| #define TINT_FOREACH_11(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) \ | |
| TINT_FOREACH_10(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) \ | |
| CB(_11) | |
| #define TINT_FOREACH_12(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) \ | |
| TINT_FOREACH_11(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) \ | |
| CB(_12) | |
| #define TINT_FOREACH_13(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) \ | |
| TINT_FOREACH_12(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) \ | |
| CB(_13) | |
| #define TINT_FOREACH_14(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) \ | |
| TINT_FOREACH_13(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) \ | |
| CB(_14) | |
| #define TINT_FOREACH_15(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) \ | |
| TINT_FOREACH_14(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) \ | |
| CB(_15) | |
| #define TINT_FOREACH_16(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16) \ | |
| TINT_FOREACH_15(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) \ | |
| CB(_16) | |
| #define TINT_FOREACH_17(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17) \ | |
| TINT_FOREACH_16(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16) \ | |
| CB(_17) | |
| #define TINT_FOREACH_18(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18) \ | |
| TINT_FOREACH_17(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17) \ | |
| CB(_18) | |
| #define TINT_FOREACH_19(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19) \ | |
| TINT_FOREACH_18(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18) \ | |
| CB(_19) | |
| #define TINT_FOREACH_20(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20) \ | |
| TINT_FOREACH_19(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19) \ | |
| CB(_20) | |
| #define TINT_FOREACH_21(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21) \ | |
| TINT_FOREACH_20(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20) \ | |
| CB(_21) | |
| #define TINT_FOREACH_22(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22) \ | |
| TINT_FOREACH_21(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21) \ | |
| CB(_22) | |
| #define TINT_FOREACH_23(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23) \ | |
| TINT_FOREACH_22(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22) \ | |
| CB(_23) | |
| #define TINT_FOREACH_24(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24) \ | |
| TINT_FOREACH_23(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23) \ | |
| CB(_24) | |
| #define TINT_FOREACH_25(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25) \ | |
| TINT_FOREACH_24(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24) \ | |
| CB(_25) | |
| #define TINT_FOREACH_26(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26) \ | |
| TINT_FOREACH_25(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25) \ | |
| CB(_26) | |
| #define TINT_FOREACH_27(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27) \ | |
| TINT_FOREACH_26(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26) \ | |
| CB(_27) | |
| #define TINT_FOREACH_28(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28) \ | |
| TINT_FOREACH_27(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27) \ | |
| CB(_28) | |
| #define TINT_FOREACH_29(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29) \ | |
| TINT_FOREACH_28(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28) \ | |
| CB(_29) | |
| #define TINT_FOREACH_30(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30) \ | |
| TINT_FOREACH_29(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29) \ | |
| CB(_30) | |
| #define TINT_FOREACH_31(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31) \ | |
| TINT_FOREACH_30(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30) \ | |
| CB(_31) | |
| #define TINT_FOREACH_32(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, \ | |
| _32) \ | |
| TINT_FOREACH_31(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31) \ | |
| CB(_32) | |
| #define TINT_FOREACH_33(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, \ | |
| _32, _33) \ | |
| TINT_FOREACH_32(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, \ | |
| _32) \ | |
| CB(_33) | |
| #define TINT_FOREACH_34(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, \ | |
| _32, _33, _34) \ | |
| TINT_FOREACH_33(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, \ | |
| _32, _33) \ | |
| CB(_34) | |
| #define TINT_FOREACH_35(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, \ | |
| _32, _33, _34, _35) \ | |
| TINT_FOREACH_34(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, \ | |
| _32, _33, _34) \ | |
| CB(_35) | |
| #define TINT_FOREACH_36(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, \ | |
| _32, _33, _34, _35, _36) \ | |
| TINT_FOREACH_35(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, \ | |
| _32, _33, _34, _35) \ | |
| CB(_36) | |
| #define TINT_FOREACH_37(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, \ | |
| _32, _33, _34, _35, _36, _37) \ | |
| TINT_FOREACH_36(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, \ | |
| _32, _33, _34, _35, _36) \ | |
| CB(_37) | |
| #define TINT_FOREACH_38(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, \ | |
| _32, _33, _34, _35, _36, _37, _38) \ | |
| TINT_FOREACH_37(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, \ | |
| _32, _33, _34, _35, _36, _37) \ | |
| CB(_38) | |
| #define TINT_FOREACH_39(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, \ | |
| _32, _33, _34, _35, _36, _37, _38, _39) \ | |
| TINT_FOREACH_38(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, \ | |
| _32, _33, _34, _35, _36, _37, _38) \ | |
| CB(_39) | |
| #define TINT_FOREACH_40(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, \ | |
| _32, _33, _34, _35, _36, _37, _38, _39, _40) \ | |
| TINT_FOREACH_39(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, \ | |
| _32, _33, _34, _35, _36, _37, _38, _39) \ | |
| CB(_40) | |
| #define TINT_FOREACH_41(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, \ | |
| _32, _33, _34, _35, _36, _37, _38, _39, _40, _41) \ | |
| TINT_FOREACH_40(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, \ | |
| _32, _33, _34, _35, _36, _37, _38, _39, _40) \ | |
| CB(_41) | |
| #define TINT_FOREACH_42(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, \ | |
| _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42) \ | |
| TINT_FOREACH_41(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, \ | |
| _32, _33, _34, _35, _36, _37, _38, _39, _40, _41) \ | |
| CB(_42) | |
| #define TINT_FOREACH_43(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, \ | |
| _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43) \ | |
| TINT_FOREACH_42(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, \ | |
| _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42) \ | |
| CB(_43) | |
| #define TINT_FOREACH_44(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, \ | |
| _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44) \ | |
| TINT_FOREACH_43(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, \ | |
| _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43) \ | |
| CB(_44) | |
| #define TINT_FOREACH_45(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, \ | |
| _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45) \ | |
| TINT_FOREACH_44(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, \ | |
| _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44) \ | |
| CB(_45) | |
| #define TINT_FOREACH_46(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, \ | |
| _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46) \ | |
| TINT_FOREACH_45(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, \ | |
| _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45) \ | |
| CB(_46) | |
| #define TINT_FOREACH_47(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, \ | |
| _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, \ | |
| _47) \ | |
| TINT_FOREACH_46(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, \ | |
| _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46) \ | |
| CB(_47) | |
| #define TINT_FOREACH_48(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, \ | |
| _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, \ | |
| _47, _48) \ | |
| TINT_FOREACH_47(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, \ | |
| _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, \ | |
| _47) \ | |
| CB(_48) | |
| #define TINT_FOREACH_49(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, \ | |
| _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, \ | |
| _47, _48, _49) \ | |
| TINT_FOREACH_48(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, \ | |
| _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, \ | |
| _47, _48) \ | |
| CB(_49) | |
| #define TINT_FOREACH_50(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, \ | |
| _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, \ | |
| _47, _48, _49, _50) \ | |
| TINT_FOREACH_49(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, \ | |
| _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, \ | |
| _47, _48, _49) \ | |
| CB(_50) | |
| #define TINT_FOREACH_51(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, \ | |
| _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, \ | |
| _47, _48, _49, _50, _51) \ | |
| TINT_FOREACH_50(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, \ | |
| _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, \ | |
| _47, _48, _49, _50) \ | |
| CB(_51) | |
| #define TINT_FOREACH_52(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, \ | |
| _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, \ | |
| _47, _48, _49, _50, _51, _52) \ | |
| TINT_FOREACH_51(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, \ | |
| _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, \ | |
| _47, _48, _49, _50, _51) \ | |
| CB(_52) | |
| #define TINT_FOREACH_53(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, \ | |
| _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, \ | |
| _47, _48, _49, _50, _51, _52, _53) \ | |
| TINT_FOREACH_52(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, \ | |
| _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, \ | |
| _47, _48, _49, _50, _51, _52) \ | |
| CB(_53) | |
| #define TINT_FOREACH_54(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _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) \ | |
| TINT_FOREACH_53(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, \ | |
| _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, \ | |
| _47, _48, _49, _50, _51, _52, _53) \ | |
| CB(_54) | |
| #define TINT_FOREACH_55(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _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) \ | |
| TINT_FOREACH_54(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _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) \ | |
| CB(_55) | |
| #define TINT_FOREACH_56(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _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) \ | |
| TINT_FOREACH_55(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _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) \ | |
| CB(_56) | |
| #define TINT_FOREACH_57(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _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) \ | |
| TINT_FOREACH_56(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _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) \ | |
| CB(_57) | |
| #define TINT_FOREACH_58(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _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) \ | |
| TINT_FOREACH_57(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _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) \ | |
| CB(_58) | |
| #define TINT_FOREACH_59(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _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) \ | |
| TINT_FOREACH_58(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _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) \ | |
| CB(_59) | |
| #define TINT_FOREACH_60(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _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) \ | |
| TINT_FOREACH_59(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _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) \ | |
| CB(_60) | |
| #define TINT_FOREACH_61(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _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) \ | |
| TINT_FOREACH_60(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _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) \ | |
| CB(_61) | |
| #define TINT_FOREACH_62(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _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) \ | |
| TINT_FOREACH_61(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _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) \ | |
| CB(_62) | |
| #define TINT_FOREACH_63(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _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) \ | |
| TINT_FOREACH_62(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _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) \ | |
| CB(_63) | |
| #define TINT_FOREACH_64(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _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) \ | |
| TINT_FOREACH_63(CB, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, \ | |
| _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _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) \ | |
| CB(_64) | |
| #endif // SRC_TINT_UTILS_MACROS_FOREACH_H_ |