Program Listing for File preprocessor.hpp

Return to documentation for file (/tmp/ws/src/proxsuite/include/proxsuite/linalg/veg/internal/preprocessor.hpp)

#ifndef VEG_PREPROCESSOR_HPP_U2V3WRWYS
#define VEG_PREPROCESSOR_HPP_U2V3WRWYS

// clang-format off
#define __VEG_IMPL_PP_COUNT(Arg_0, Arg_1, Arg_2, Arg_3, Arg_4, Arg_5, Arg_6, Arg_7, Arg_8, Arg_9, Arg_10, Arg_11, Arg_12, Arg_13, Arg_14, Arg_15, Arg_16, Arg_17, Arg_18, Arg_19, Arg_20, Arg_21, Arg_22, Arg_23, Arg_24, Arg_25, Arg_26, Arg_27, Arg_28, Arg_29, Arg_30, Arg_31, N, ...) N

#define __VEG_IMPL_PP_IS_1_1 1
#define __VEG_IMPL_PP_IS_1_2 0
#define __VEG_IMPL_PP_IS_1_3 0
#define __VEG_IMPL_PP_IS_1_4 0
#define __VEG_IMPL_PP_IS_1_5 0
#define __VEG_IMPL_PP_IS_1_6 0
#define __VEG_IMPL_PP_IS_1_7 0
#define __VEG_IMPL_PP_IS_1_8 0
#define __VEG_IMPL_PP_IS_1_9 0
#define __VEG_IMPL_PP_IS_1_10 0
#define __VEG_IMPL_PP_IS_1_11 0
#define __VEG_IMPL_PP_IS_1_12 0
#define __VEG_IMPL_PP_IS_1_13 0
#define __VEG_IMPL_PP_IS_1_14 0
#define __VEG_IMPL_PP_IS_1_15 0
#define __VEG_IMPL_PP_IS_1_16 0
#define __VEG_IMPL_PP_IS_1_17 0
#define __VEG_IMPL_PP_IS_1_18 0
#define __VEG_IMPL_PP_IS_1_19 0
#define __VEG_IMPL_PP_IS_1_20 0
#define __VEG_IMPL_PP_IS_1_21 0
#define __VEG_IMPL_PP_IS_1_22 0
#define __VEG_IMPL_PP_IS_1_23 0
#define __VEG_IMPL_PP_IS_1_24 0
#define __VEG_IMPL_PP_IS_1_25 0
#define __VEG_IMPL_PP_IS_1_26 0
#define __VEG_IMPL_PP_IS_1_27 0
#define __VEG_IMPL_PP_IS_1_28 0
#define __VEG_IMPL_PP_IS_1_29 0
#define __VEG_IMPL_PP_IS_1_30 0
#define __VEG_IMPL_PP_IS_1_31 0
#define __VEG_IMPL_PP_IS_1_32 0
#define __VEG_IMPL_PP_IS_1_33 0

#define __VEG_IMPL_PP_DEC_1 0
#define __VEG_IMPL_PP_DEC_2 1
#define __VEG_IMPL_PP_DEC_3 2
#define __VEG_IMPL_PP_DEC_4 3
#define __VEG_IMPL_PP_DEC_5 4
#define __VEG_IMPL_PP_DEC_6 5
#define __VEG_IMPL_PP_DEC_7 6
#define __VEG_IMPL_PP_DEC_8 7
#define __VEG_IMPL_PP_DEC_9 8
#define __VEG_IMPL_PP_DEC_10 9
#define __VEG_IMPL_PP_DEC_11 10
#define __VEG_IMPL_PP_DEC_12 11
#define __VEG_IMPL_PP_DEC_13 12
#define __VEG_IMPL_PP_DEC_14 13
#define __VEG_IMPL_PP_DEC_15 14
#define __VEG_IMPL_PP_DEC_16 15
#define __VEG_IMPL_PP_DEC_17 16
#define __VEG_IMPL_PP_DEC_18 17
#define __VEG_IMPL_PP_DEC_19 18
#define __VEG_IMPL_PP_DEC_20 19
#define __VEG_IMPL_PP_DEC_21 20
#define __VEG_IMPL_PP_DEC_22 21
#define __VEG_IMPL_PP_DEC_23 22
#define __VEG_IMPL_PP_DEC_24 23
#define __VEG_IMPL_PP_DEC_25 24
#define __VEG_IMPL_PP_DEC_26 25
#define __VEG_IMPL_PP_DEC_27 26
#define __VEG_IMPL_PP_DEC_28 27
#define __VEG_IMPL_PP_DEC_29 28
#define __VEG_IMPL_PP_DEC_30 29
#define __VEG_IMPL_PP_DEC_31 30
#define __VEG_IMPL_PP_DEC_32 31
#define __VEG_IMPL_PP_DEC_33 32

#define __VEG_IMPL_PP_INC_0 1
#define __VEG_IMPL_PP_INC_1 2
#define __VEG_IMPL_PP_INC_2 3
#define __VEG_IMPL_PP_INC_3 4
#define __VEG_IMPL_PP_INC_4 5
#define __VEG_IMPL_PP_INC_5 6
#define __VEG_IMPL_PP_INC_6 7
#define __VEG_IMPL_PP_INC_7 8
#define __VEG_IMPL_PP_INC_8 9
#define __VEG_IMPL_PP_INC_9 10
#define __VEG_IMPL_PP_INC_10 11
#define __VEG_IMPL_PP_INC_11 12
#define __VEG_IMPL_PP_INC_12 13
#define __VEG_IMPL_PP_INC_13 14
#define __VEG_IMPL_PP_INC_14 15
#define __VEG_IMPL_PP_INC_15 16
#define __VEG_IMPL_PP_INC_16 17
#define __VEG_IMPL_PP_INC_17 18
#define __VEG_IMPL_PP_INC_18 19
#define __VEG_IMPL_PP_INC_19 20
#define __VEG_IMPL_PP_INC_20 21
#define __VEG_IMPL_PP_INC_21 22
#define __VEG_IMPL_PP_INC_22 23
#define __VEG_IMPL_PP_INC_23 24
#define __VEG_IMPL_PP_INC_24 25
#define __VEG_IMPL_PP_INC_25 26
#define __VEG_IMPL_PP_INC_26 27
#define __VEG_IMPL_PP_INC_27 28
#define __VEG_IMPL_PP_INC_28 29
#define __VEG_IMPL_PP_INC_29 30
#define __VEG_IMPL_PP_INC_30 31
#define __VEG_IMPL_PP_INC_31 32
#define __VEG_IMPL_PP_INC_32 33

#define __VEG_IMPL_PP_DEC_I(X) __VEG_IMPL_PP_DEC_##X
#define __VEG_IMPL_PP_DEC(X) __VEG_IMPL_PP_DEC_I(X)
#define __VEG_IMPL_PP_INC_I(X) __VEG_IMPL_PP_INC_##X
#define __VEG_IMPL_PP_INC(X) __VEG_IMPL_PP_INC_I(X)
#define __VEG_IMPL_PP_IS_1_I(X) __VEG_IMPL_PP_IS_1_##X
#define __VEG_IMPL_PP_IS_1(X) __VEG_IMPL_PP_IS_1_I(X)

#define __VEG_IMPL_PP_COMMA_IF_NOT_0_1
#define __VEG_IMPL_PP_COMMA_IF_NOT_0_0 ,
#define __VEG_PP_COMMA_IF_NOT_0(X) __VEG_PP_CAT2(__VEG_IMPL_PP_COMMA_IF_NOT_0_, __VEG_PP_IS_0(X))

#define __VEG_PP_IS_1(X) __VEG_IMPL_PP_IS_1_I(X)
#define __VEG_PP_IS_0(X) __VEG_PP_IS_1(__VEG_IMPL_PP_INC_I(X))

#define __VEG_PP_ID(X) X

#define __VEG_IMPL_PP_VARIADIC_SIZE(...) __VEG_PP_ID(__VEG_IMPL_PP_COUNT(__VA_ARGS__, 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 __VEG_IMPL_PP_MAKE_TUPLE0 ()
#define __VEG_IMPL_PP_MAKE_TUPLE1 (0)
#define __VEG_IMPL_PP_MAKE_TUPLE2 (0, 1)
#define __VEG_IMPL_PP_MAKE_TUPLE3 (0, 1, 2)
#define __VEG_IMPL_PP_MAKE_TUPLE4 (0, 1, 2, 3)
#define __VEG_IMPL_PP_MAKE_TUPLE5 (0, 1, 2, 3, 4)
#define __VEG_IMPL_PP_MAKE_TUPLE6 (0, 1, 2, 3, 4, 5)
#define __VEG_IMPL_PP_MAKE_TUPLE7 (0, 1, 2, 3, 4, 5, 6)
#define __VEG_IMPL_PP_MAKE_TUPLE8 (0, 1, 2, 3, 4, 5, 6, 7)
#define __VEG_IMPL_PP_MAKE_TUPLE9 (0, 1, 2, 3, 4, 5, 6, 7, 8)
#define __VEG_IMPL_PP_MAKE_TUPLE10 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
#define __VEG_IMPL_PP_MAKE_TUPLE11 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
#define __VEG_IMPL_PP_MAKE_TUPLE12 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
#define __VEG_IMPL_PP_MAKE_TUPLE13 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
#define __VEG_IMPL_PP_MAKE_TUPLE14 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
#define __VEG_IMPL_PP_MAKE_TUPLE15 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
#define __VEG_IMPL_PP_MAKE_TUPLE16 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
#define __VEG_IMPL_PP_MAKE_TUPLE17 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
#define __VEG_IMPL_PP_MAKE_TUPLE18 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17)
#define __VEG_IMPL_PP_MAKE_TUPLE19 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18)
#define __VEG_IMPL_PP_MAKE_TUPLE20 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19)
#define __VEG_IMPL_PP_MAKE_TUPLE21 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)
#define __VEG_IMPL_PP_MAKE_TUPLE22 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21)
#define __VEG_IMPL_PP_MAKE_TUPLE23 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22)
#define __VEG_IMPL_PP_MAKE_TUPLE24 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23)
#define __VEG_IMPL_PP_MAKE_TUPLE25 (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)
#define __VEG_IMPL_PP_MAKE_TUPLE26 (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)
#define __VEG_IMPL_PP_MAKE_TUPLE27 (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)
#define __VEG_IMPL_PP_MAKE_TUPLE28 (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)
#define __VEG_IMPL_PP_MAKE_TUPLE29 (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)
#define __VEG_IMPL_PP_MAKE_TUPLE30 (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)
#define __VEG_IMPL_PP_MAKE_TUPLE31 (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)
#define __VEG_IMPL_PP_MAKE_TUPLE32 (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)
// clang-format on

#define __VEG_IMPL_PP_CAT(A, ...) A##__VA_ARGS__
#define __VEG_IMPL_PP_CAT2(A, ...) A##__VA_ARGS__
#define __VEG_IMPL_PP_CAT3(A, ...) A##__VA_ARGS__

#define __VEG_IMPL_PP_CONSUME(X)

#define __VEG_IMPL_PP_SEQ_HEAD_1(X)
#define __VEG_IMPL_PP_SEQ_HEAD_0(X) X __VEG_IMPL_PP_SEQ_HEAD_1(

#define __VEG_IMPL_PP_HEAD_0(arg, ...) arg
#define __VEG_IMPL_PP_TAIL_0(arg, ...) __VA_ARGS__
#define __VEG_IMPL_PP_HEAD_1(arg) arg
#define __VEG_IMPL_PP_TAIL_1(arg)

#define __VEG_IMPL_PP_STRINGIZE(...) #__VA_ARGS__

#define __VEG_IMPL_PP_REMOVE_PAREN1(...) __VEG_IMPL_PP_REMOVE_PAREN1 __VA_ARGS__
#define __VEG_IMPL_PP_REMOVE_PAREN2(...)                                       \
  __VEG_PP_CAT(__VEG_IMPL_PP, __VA_ARGS__)
#define __VEG_IMPL_PP__VEG_IMPL_PP_REMOVE_PAREN1

#define __VEG_IMPL_PP_REMOVE_PAREN11(...)                                      \
  __VEG_IMPL_PP_REMOVE_PAREN11 __VA_ARGS__
#define __VEG_IMPL_PP_REMOVE_PAREN21(...)                                      \
  __VEG_PP_CAT(__VEG_IMPL_PP, __VA_ARGS__)
#define __VEG_IMPL_PP__VEG_IMPL_PP_REMOVE_PAREN11

#define __VEG_PP_MAKE_TUPLE(N) __VEG_PP_CAT2(__VEG_IMPL_PP_MAKE_TUPLE, N)

#define __VEG_IMPL_PP_TUPLE_FOR_EACH_1(Macro, Data, Tuple)                     \
  Macro(Data, __VEG_PP_REMOVE_PAREN1(Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_2(Macro, Data, Tuple)                     \
  Macro(Data, __VEG_PP_HEAD Tuple)                                             \
    __VEG_IMPL_PP_TUPLE_FOR_EACH_1(Macro, Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_3(Macro, Data, Tuple)                     \
  Macro(Data, __VEG_PP_HEAD Tuple)                                             \
    __VEG_IMPL_PP_TUPLE_FOR_EACH_2(Macro, Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_4(Macro, Data, Tuple)                     \
  Macro(Data, __VEG_PP_HEAD Tuple)                                             \
    __VEG_IMPL_PP_TUPLE_FOR_EACH_3(Macro, Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_5(Macro, Data, Tuple)                     \
  Macro(Data, __VEG_PP_HEAD Tuple)                                             \
    __VEG_IMPL_PP_TUPLE_FOR_EACH_4(Macro, Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_6(Macro, Data, Tuple)                     \
  Macro(Data, __VEG_PP_HEAD Tuple)                                             \
    __VEG_IMPL_PP_TUPLE_FOR_EACH_5(Macro, Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_7(Macro, Data, Tuple)                     \
  Macro(Data, __VEG_PP_HEAD Tuple)                                             \
    __VEG_IMPL_PP_TUPLE_FOR_EACH_6(Macro, Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_8(Macro, Data, Tuple)                     \
  Macro(Data, __VEG_PP_HEAD Tuple)                                             \
    __VEG_IMPL_PP_TUPLE_FOR_EACH_7(Macro, Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_9(Macro, Data, Tuple)                     \
  Macro(Data, __VEG_PP_HEAD Tuple)                                             \
    __VEG_IMPL_PP_TUPLE_FOR_EACH_8(Macro, Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_10(Macro, Data, Tuple)                    \
  Macro(Data, __VEG_PP_HEAD Tuple)                                             \
    __VEG_IMPL_PP_TUPLE_FOR_EACH_9(Macro, Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_11(Macro, Data, Tuple)                    \
  Macro(Data, __VEG_PP_HEAD Tuple)                                             \
    __VEG_IMPL_PP_TUPLE_FOR_EACH_10(Macro, Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_12(Macro, Data, Tuple)                    \
  Macro(Data, __VEG_PP_HEAD Tuple)                                             \
    __VEG_IMPL_PP_TUPLE_FOR_EACH_11(Macro, Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_13(Macro, Data, Tuple)                    \
  Macro(Data, __VEG_PP_HEAD Tuple)                                             \
    __VEG_IMPL_PP_TUPLE_FOR_EACH_12(Macro, Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_14(Macro, Data, Tuple)                    \
  Macro(Data, __VEG_PP_HEAD Tuple)                                             \
    __VEG_IMPL_PP_TUPLE_FOR_EACH_13(Macro, Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_15(Macro, Data, Tuple)                    \
  Macro(Data, __VEG_PP_HEAD Tuple)                                             \
    __VEG_IMPL_PP_TUPLE_FOR_EACH_14(Macro, Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_16(Macro, Data, Tuple)                    \
  Macro(Data, __VEG_PP_HEAD Tuple)                                             \
    __VEG_IMPL_PP_TUPLE_FOR_EACH_15(Macro, Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_17(Macro, Data, Tuple)                    \
  Macro(Data, __VEG_PP_HEAD Tuple)                                             \
    __VEG_IMPL_PP_TUPLE_FOR_EACH_16(Macro, Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_18(Macro, Data, Tuple)                    \
  Macro(Data, __VEG_PP_HEAD Tuple)                                             \
    __VEG_IMPL_PP_TUPLE_FOR_EACH_17(Macro, Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_19(Macro, Data, Tuple)                    \
  Macro(Data, __VEG_PP_HEAD Tuple)                                             \
    __VEG_IMPL_PP_TUPLE_FOR_EACH_18(Macro, Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_20(Macro, Data, Tuple)                    \
  Macro(Data, __VEG_PP_HEAD Tuple)                                             \
    __VEG_IMPL_PP_TUPLE_FOR_EACH_19(Macro, Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_21(Macro, Data, Tuple)                    \
  Macro(Data, __VEG_PP_HEAD Tuple)                                             \
    __VEG_IMPL_PP_TUPLE_FOR_EACH_20(Macro, Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_22(Macro, Data, Tuple)                    \
  Macro(Data, __VEG_PP_HEAD Tuple)                                             \
    __VEG_IMPL_PP_TUPLE_FOR_EACH_21(Macro, Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_23(Macro, Data, Tuple)                    \
  Macro(Data, __VEG_PP_HEAD Tuple)                                             \
    __VEG_IMPL_PP_TUPLE_FOR_EACH_22(Macro, Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_24(Macro, Data, Tuple)                    \
  Macro(Data, __VEG_PP_HEAD Tuple)                                             \
    __VEG_IMPL_PP_TUPLE_FOR_EACH_23(Macro, Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_25(Macro, Data, Tuple)                    \
  Macro(Data, __VEG_PP_HEAD Tuple)                                             \
    __VEG_IMPL_PP_TUPLE_FOR_EACH_24(Macro, Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_26(Macro, Data, Tuple)                    \
  Macro(Data, __VEG_PP_HEAD Tuple)                                             \
    __VEG_IMPL_PP_TUPLE_FOR_EACH_25(Macro, Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_27(Macro, Data, Tuple)                    \
  Macro(Data, __VEG_PP_HEAD Tuple)                                             \
    __VEG_IMPL_PP_TUPLE_FOR_EACH_26(Macro, Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_28(Macro, Data, Tuple)                    \
  Macro(Data, __VEG_PP_HEAD Tuple)                                             \
    __VEG_IMPL_PP_TUPLE_FOR_EACH_27(Macro, Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_29(Macro, Data, Tuple)                    \
  Macro(Data, __VEG_PP_HEAD Tuple)                                             \
    __VEG_IMPL_PP_TUPLE_FOR_EACH_28(Macro, Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_30(Macro, Data, Tuple)                    \
  Macro(Data, __VEG_PP_HEAD Tuple)                                             \
    __VEG_IMPL_PP_TUPLE_FOR_EACH_29(Macro, Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_31(Macro, Data, Tuple)                    \
  Macro(Data, __VEG_PP_HEAD Tuple)                                             \
    __VEG_IMPL_PP_TUPLE_FOR_EACH_30(Macro, Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_32(Macro, Data, Tuple)                    \
  Macro(Data, __VEG_PP_HEAD Tuple)                                             \
    __VEG_IMPL_PP_TUPLE_FOR_EACH_31(Macro, Data, (__VEG_PP_TAIL Tuple))

#define __VEG_IMPL_PP_TUPLE_FOR_EACH_I_1(Macro, Start, Data, Tuple)            \
  Macro(Start, Data, __VEG_PP_REMOVE_PAREN1(Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_I_2(Macro, Start, Data, Tuple)            \
  Macro(Start, Data, __VEG_PP_HEAD Tuple) __VEG_IMPL_PP_TUPLE_FOR_EACH_I_1(    \
    Macro, __VEG_IMPL_PP_INC(Start), Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_I_3(Macro, Start, Data, Tuple)            \
  Macro(Start, Data, __VEG_PP_HEAD Tuple) __VEG_IMPL_PP_TUPLE_FOR_EACH_I_2(    \
    Macro, __VEG_IMPL_PP_INC(Start), Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_I_4(Macro, Start, Data, Tuple)            \
  Macro(Start, Data, __VEG_PP_HEAD Tuple) __VEG_IMPL_PP_TUPLE_FOR_EACH_I_3(    \
    Macro, __VEG_IMPL_PP_INC(Start), Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_I_5(Macro, Start, Data, Tuple)            \
  Macro(Start, Data, __VEG_PP_HEAD Tuple) __VEG_IMPL_PP_TUPLE_FOR_EACH_I_4(    \
    Macro, __VEG_IMPL_PP_INC(Start), Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_I_6(Macro, Start, Data, Tuple)            \
  Macro(Start, Data, __VEG_PP_HEAD Tuple) __VEG_IMPL_PP_TUPLE_FOR_EACH_I_5(    \
    Macro, __VEG_IMPL_PP_INC(Start), Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_I_7(Macro, Start, Data, Tuple)            \
  Macro(Start, Data, __VEG_PP_HEAD Tuple) __VEG_IMPL_PP_TUPLE_FOR_EACH_I_6(    \
    Macro, __VEG_IMPL_PP_INC(Start), Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_I_8(Macro, Start, Data, Tuple)            \
  Macro(Start, Data, __VEG_PP_HEAD Tuple) __VEG_IMPL_PP_TUPLE_FOR_EACH_I_7(    \
    Macro, __VEG_IMPL_PP_INC(Start), Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_I_9(Macro, Start, Data, Tuple)            \
  Macro(Start, Data, __VEG_PP_HEAD Tuple) __VEG_IMPL_PP_TUPLE_FOR_EACH_I_8(    \
    Macro, __VEG_IMPL_PP_INC(Start), Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_I_10(Macro, Start, Data, Tuple)           \
  Macro(Start, Data, __VEG_PP_HEAD Tuple) __VEG_IMPL_PP_TUPLE_FOR_EACH_I_9(    \
    Macro, __VEG_IMPL_PP_INC(Start), Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_I_11(Macro, Start, Data, Tuple)           \
  Macro(Start, Data, __VEG_PP_HEAD Tuple) __VEG_IMPL_PP_TUPLE_FOR_EACH_I_10(   \
    Macro, __VEG_IMPL_PP_INC(Start), Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_I_12(Macro, Start, Data, Tuple)           \
  Macro(Start, Data, __VEG_PP_HEAD Tuple) __VEG_IMPL_PP_TUPLE_FOR_EACH_I_11(   \
    Macro, __VEG_IMPL_PP_INC(Start), Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_I_13(Macro, Start, Data, Tuple)           \
  Macro(Start, Data, __VEG_PP_HEAD Tuple) __VEG_IMPL_PP_TUPLE_FOR_EACH_I_12(   \
    Macro, __VEG_IMPL_PP_INC(Start), Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_I_14(Macro, Start, Data, Tuple)           \
  Macro(Start, Data, __VEG_PP_HEAD Tuple) __VEG_IMPL_PP_TUPLE_FOR_EACH_I_13(   \
    Macro, __VEG_IMPL_PP_INC(Start), Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_I_15(Macro, Start, Data, Tuple)           \
  Macro(Start, Data, __VEG_PP_HEAD Tuple) __VEG_IMPL_PP_TUPLE_FOR_EACH_I_14(   \
    Macro, __VEG_IMPL_PP_INC(Start), Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_I_16(Macro, Start, Data, Tuple)           \
  Macro(Start, Data, __VEG_PP_HEAD Tuple) __VEG_IMPL_PP_TUPLE_FOR_EACH_I_15(   \
    Macro, __VEG_IMPL_PP_INC(Start), Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_I_17(Macro, Start, Data, Tuple)           \
  Macro(Start, Data, __VEG_PP_HEAD Tuple) __VEG_IMPL_PP_TUPLE_FOR_EACH_I_16(   \
    Macro, __VEG_IMPL_PP_INC(Start), Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_I_18(Macro, Start, Data, Tuple)           \
  Macro(Start, Data, __VEG_PP_HEAD Tuple) __VEG_IMPL_PP_TUPLE_FOR_EACH_I_17(   \
    Macro, __VEG_IMPL_PP_INC(Start), Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_I_19(Macro, Start, Data, Tuple)           \
  Macro(Start, Data, __VEG_PP_HEAD Tuple) __VEG_IMPL_PP_TUPLE_FOR_EACH_I_18(   \
    Macro, __VEG_IMPL_PP_INC(Start), Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_I_20(Macro, Start, Data, Tuple)           \
  Macro(Start, Data, __VEG_PP_HEAD Tuple) __VEG_IMPL_PP_TUPLE_FOR_EACH_I_19(   \
    Macro, __VEG_IMPL_PP_INC(Start), Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_I_21(Macro, Start, Data, Tuple)           \
  Macro(Start, Data, __VEG_PP_HEAD Tuple) __VEG_IMPL_PP_TUPLE_FOR_EACH_I_20(   \
    Macro, __VEG_IMPL_PP_INC(Start), Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_I_22(Macro, Start, Data, Tuple)           \
  Macro(Start, Data, __VEG_PP_HEAD Tuple) __VEG_IMPL_PP_TUPLE_FOR_EACH_I_21(   \
    Macro, __VEG_IMPL_PP_INC(Start), Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_I_23(Macro, Start, Data, Tuple)           \
  Macro(Start, Data, __VEG_PP_HEAD Tuple) __VEG_IMPL_PP_TUPLE_FOR_EACH_I_22(   \
    Macro, __VEG_IMPL_PP_INC(Start), Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_I_24(Macro, Start, Data, Tuple)           \
  Macro(Start, Data, __VEG_PP_HEAD Tuple) __VEG_IMPL_PP_TUPLE_FOR_EACH_I_23(   \
    Macro, __VEG_IMPL_PP_INC(Start), Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_I_25(Macro, Start, Data, Tuple)           \
  Macro(Start, Data, __VEG_PP_HEAD Tuple) __VEG_IMPL_PP_TUPLE_FOR_EACH_I_24(   \
    Macro, __VEG_IMPL_PP_INC(Start), Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_I_26(Macro, Start, Data, Tuple)           \
  Macro(Start, Data, __VEG_PP_HEAD Tuple) __VEG_IMPL_PP_TUPLE_FOR_EACH_I_25(   \
    Macro, __VEG_IMPL_PP_INC(Start), Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_I_27(Macro, Start, Data, Tuple)           \
  Macro(Start, Data, __VEG_PP_HEAD Tuple) __VEG_IMPL_PP_TUPLE_FOR_EACH_I_26(   \
    Macro, __VEG_IMPL_PP_INC(Start), Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_I_28(Macro, Start, Data, Tuple)           \
  Macro(Start, Data, __VEG_PP_HEAD Tuple) __VEG_IMPL_PP_TUPLE_FOR_EACH_I_27(   \
    Macro, __VEG_IMPL_PP_INC(Start), Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_I_29(Macro, Start, Data, Tuple)           \
  Macro(Start, Data, __VEG_PP_HEAD Tuple) __VEG_IMPL_PP_TUPLE_FOR_EACH_I_28(   \
    Macro, __VEG_IMPL_PP_INC(Start), Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_I_30(Macro, Start, Data, Tuple)           \
  Macro(Start, Data, __VEG_PP_HEAD Tuple) __VEG_IMPL_PP_TUPLE_FOR_EACH_I_29(   \
    Macro, __VEG_IMPL_PP_INC(Start), Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_I_31(Macro, Start, Data, Tuple)           \
  Macro(Start, Data, __VEG_PP_HEAD Tuple) __VEG_IMPL_PP_TUPLE_FOR_EACH_I_30(   \
    Macro, __VEG_IMPL_PP_INC(Start), Data, (__VEG_PP_TAIL Tuple))
#define __VEG_IMPL_PP_TUPLE_FOR_EACH_I_32(Macro, Start, Data, Tuple)           \
  Macro(Start, Data, __VEG_PP_HEAD Tuple) __VEG_IMPL_PP_TUPLE_FOR_EACH_I_31(   \
    Macro, __VEG_IMPL_PP_INC(Start), Data, (__VEG_PP_TAIL Tuple))

#define __VEG_IMPL_PP_TRANSFORM_HELPER(I, Macro_Data, Elem)                    \
  , __VEG_PP_HEAD Macro_Data(                                                  \
      __VEG_IMPL_PP_INC(I), __VEG_PP_TAIL Macro_Data, Elem)

#define __VEG_IMPL_PP_TRANSFORM_0(Macro, Data, Tuple)                          \
  (Macro(0, Data, __VEG_PP_HEAD Tuple) __VEG_PP_TUPLE_FOR_EACH_I(              \
    __VEG_IMPL_PP_TRANSFORM_HELPER, (Macro, Data), (__VEG_PP_TAIL Tuple)))

#define __VEG_IMPL_PP_TRANSFORM_1(Macro, Data, Tuple)                          \
  (Macro(0, Data, __VEG_PP_REMOVE_PAREN1(Tuple)))

#define __VEG_PP_TUPLE_FOR_EACH_I(Macro, Data, Tuple)                          \
  __VEG_PP_CAT2(__VEG_IMPL_PP_TUPLE_FOR_EACH_I_, __VEG_PP_TUPLE_SIZE(Tuple))   \
  (Macro, 0, Data, Tuple)
#define __VEG_PP_TUPLE_FOR_EACH(Macro, Data, Tuple)                            \
  __VEG_PP_CAT2(__VEG_IMPL_PP_TUPLE_FOR_EACH_, __VEG_PP_TUPLE_SIZE(Tuple))     \
  (Macro, Data, Tuple)

#define __VEG_PP_TUPLE_TRANSFORM_I(Macro, Data, Tuple)                         \
  __VEG_PP_CAT2(__VEG_IMPL_PP_TRANSFORM_,                                      \
                __VEG_IMPL_PP_IS_1(__VEG_PP_TUPLE_SIZE(Tuple)))                \
  (Macro, Data, Tuple)

#define __VEG_PP_TUPLE_SIZE(Tuple)                                             \
  __VEG_PP_ID(__VEG_IMPL_PP_VARIADIC_SIZE Tuple)
#define __VEG_PP_SEQ_HEAD(Seq)                                                 \
        __VEG_IMPL_PP_SEQ_HEAD_0 Seq)
#define __VEG_PP_SEQ_TAIL(Seq) __VEG_IMPL_PP_CONSUME Seq

#define __VEG_PP_HEAD(...)                                                     \
  __VEG_PP_CAT2(__VEG_IMPL_PP_HEAD_,                                           \
                __VEG_IMPL_PP_IS_1(__VEG_IMPL_PP_VARIADIC_SIZE(__VA_ARGS__)))  \
  (__VA_ARGS__)
#define __VEG_PP_TAIL(...)                                                     \
  __VEG_PP_CAT2(__VEG_IMPL_PP_TAIL_,                                           \
                __VEG_IMPL_PP_IS_1(__VEG_IMPL_PP_VARIADIC_SIZE(__VA_ARGS__)))  \
  (__VA_ARGS__)

#define __VEG_PP_STRINGIZE(...) __VEG_IMPL_PP_STRINGIZE(__VA_ARGS__)
#define __VEG_PP_CAT(A, ...) __VEG_IMPL_PP_CAT(A, __VA_ARGS__)
#define __VEG_PP_CAT2(A, ...) __VEG_IMPL_PP_CAT2(A, __VA_ARGS__)
#define __VEG_PP_CAT3(A, ...) __VEG_IMPL_PP_CAT3(A, __VA_ARGS__)
#define __VEG_PP_REMOVE_PAREN(...)                                             \
  __VEG_IMPL_PP_REMOVE_PAREN2(                                                 \
    __VEG_PP_ID(__VEG_IMPL_PP_REMOVE_PAREN1 __VA_ARGS__))
#define __VEG_PP_REMOVE_PAREN1(...)                                            \
  __VEG_IMPL_PP_REMOVE_PAREN21(                                                \
    __VEG_PP_ID(__VEG_IMPL_PP_REMOVE_PAREN11 __VA_ARGS__))
#define __VEG_PP_UNWRAP(...)                                                   \
  __VEG_PP_ID(__VEG_PP_HEAD __VA_ARGS__ __VEG_PP_TAIL __VA_ARGS__)

#endif /* end of include guard VEG_PREPROCESSOR_HPP_U2V3WRWYS */