// This file was automatically generated by make_macros.py

#pragma once

#ifndef BETTER_ENUMS_MACRO_FILE_H
#define BETTER_ENUMS_MACRO_FILE_H

#define BETTER_ENUMS_PP_MAP(macro, data, ...) \
    BETTER_ENUMS_ID( \
        BETTER_ENUMS_APPLY( \
            BETTER_ENUMS_PP_MAP_VAR_COUNT, \
            BETTER_ENUMS_PP_COUNT(__VA_ARGS__)) \
        (macro, data, __VA_ARGS__))

#define BETTER_ENUMS_PP_MAP_VAR_COUNT(count) BETTER_ENUMS_M ## count

#define BETTER_ENUMS_APPLY(macro, ...) BETTER_ENUMS_ID(macro(__VA_ARGS__))

#define BETTER_ENUMS_ID(x) x

#define BETTER_ENUMS_M1(m, d, x) m(d,0,x)
#define BETTER_ENUMS_M2(m,d,x,...) m(d,1,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M1(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M3(m,d,x,...) m(d,2,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M2(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M4(m,d,x,...) m(d,3,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M3(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M5(m,d,x,...) m(d,4,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M4(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M6(m,d,x,...) m(d,5,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M5(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M7(m,d,x,...) m(d,6,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M6(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M8(m,d,x,...) m(d,7,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M7(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M9(m,d,x,...) m(d,8,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M8(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M10(m,d,x,...) m(d,9,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M9(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M11(m,d,x,...) m(d,10,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M10(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M12(m,d,x,...) m(d,11,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M11(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M13(m,d,x,...) m(d,12,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M12(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M14(m,d,x,...) m(d,13,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M13(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M15(m,d,x,...) m(d,14,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M14(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M16(m,d,x,...) m(d,15,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M15(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M17(m,d,x,...) m(d,16,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M16(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M18(m,d,x,...) m(d,17,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M17(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M19(m,d,x,...) m(d,18,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M18(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M20(m,d,x,...) m(d,19,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M19(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M21(m,d,x,...) m(d,20,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M20(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M22(m,d,x,...) m(d,21,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M21(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M23(m,d,x,...) m(d,22,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M22(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M24(m,d,x,...) m(d,23,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M23(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M25(m,d,x,...) m(d,24,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M24(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M26(m,d,x,...) m(d,25,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M25(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M27(m,d,x,...) m(d,26,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M26(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M28(m,d,x,...) m(d,27,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M27(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M29(m,d,x,...) m(d,28,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M28(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M30(m,d,x,...) m(d,29,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M29(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M31(m,d,x,...) m(d,30,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M30(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M32(m,d,x,...) m(d,31,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M31(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M33(m,d,x,...) m(d,32,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M32(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M34(m,d,x,...) m(d,33,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M33(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M35(m,d,x,...) m(d,34,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M34(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M36(m,d,x,...) m(d,35,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M35(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M37(m,d,x,...) m(d,36,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M36(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M38(m,d,x,...) m(d,37,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M37(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M39(m,d,x,...) m(d,38,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M38(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M40(m,d,x,...) m(d,39,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M39(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M41(m,d,x,...) m(d,40,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M40(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M42(m,d,x,...) m(d,41,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M41(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M43(m,d,x,...) m(d,42,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M42(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M44(m,d,x,...) m(d,43,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M43(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M45(m,d,x,...) m(d,44,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M44(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M46(m,d,x,...) m(d,45,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M45(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M47(m,d,x,...) m(d,46,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M46(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M48(m,d,x,...) m(d,47,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M47(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M49(m,d,x,...) m(d,48,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M48(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M50(m,d,x,...) m(d,49,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M49(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M51(m,d,x,...) m(d,50,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M50(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M52(m,d,x,...) m(d,51,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M51(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M53(m,d,x,...) m(d,52,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M52(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M54(m,d,x,...) m(d,53,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M53(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M55(m,d,x,...) m(d,54,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M54(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M56(m,d,x,...) m(d,55,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M55(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M57(m,d,x,...) m(d,56,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M56(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M58(m,d,x,...) m(d,57,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M57(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M59(m,d,x,...) m(d,58,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M58(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M60(m,d,x,...) m(d,59,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M59(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M61(m,d,x,...) m(d,60,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M60(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M62(m,d,x,...) m(d,61,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M61(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M63(m,d,x,...) m(d,62,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M62(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M64(m,d,x,...) m(d,63,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M63(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M65(m,d,x,...) m(d,64,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M64(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M66(m,d,x,...) m(d,65,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M65(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M67(m,d,x,...) m(d,66,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M66(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M68(m,d,x,...) m(d,67,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M67(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M69(m,d,x,...) m(d,68,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M68(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M70(m,d,x,...) m(d,69,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M69(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M71(m,d,x,...) m(d,70,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M70(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M72(m,d,x,...) m(d,71,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M71(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M73(m,d,x,...) m(d,72,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M72(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M74(m,d,x,...) m(d,73,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M73(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M75(m,d,x,...) m(d,74,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M74(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M76(m,d,x,...) m(d,75,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M75(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M77(m,d,x,...) m(d,76,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M76(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M78(m,d,x,...) m(d,77,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M77(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M79(m,d,x,...) m(d,78,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M78(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M80(m,d,x,...) m(d,79,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M79(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M81(m,d,x,...) m(d,80,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M80(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M82(m,d,x,...) m(d,81,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M81(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M83(m,d,x,...) m(d,82,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M82(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M84(m,d,x,...) m(d,83,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M83(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M85(m,d,x,...) m(d,84,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M84(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M86(m,d,x,...) m(d,85,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M85(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M87(m,d,x,...) m(d,86,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M86(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M88(m,d,x,...) m(d,87,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M87(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M89(m,d,x,...) m(d,88,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M88(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M90(m,d,x,...) m(d,89,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M89(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M91(m,d,x,...) m(d,90,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M90(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M92(m,d,x,...) m(d,91,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M91(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M93(m,d,x,...) m(d,92,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M92(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M94(m,d,x,...) m(d,93,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M93(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M95(m,d,x,...) m(d,94,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M94(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M96(m,d,x,...) m(d,95,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M95(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M97(m,d,x,...) m(d,96,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M96(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M98(m,d,x,...) m(d,97,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M97(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M99(m,d,x,...) m(d,98,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M98(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M100(m,d,x,...) m(d,99,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M99(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M101(m,d,x,...) m(d,100,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M100(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M102(m,d,x,...) m(d,101,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M101(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M103(m,d,x,...) m(d,102,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M102(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M104(m,d,x,...) m(d,103,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M103(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M105(m,d,x,...) m(d,104,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M104(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M106(m,d,x,...) m(d,105,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M105(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M107(m,d,x,...) m(d,106,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M106(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M108(m,d,x,...) m(d,107,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M107(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M109(m,d,x,...) m(d,108,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M108(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M110(m,d,x,...) m(d,109,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M109(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M111(m,d,x,...) m(d,110,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M110(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M112(m,d,x,...) m(d,111,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M111(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M113(m,d,x,...) m(d,112,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M112(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M114(m,d,x,...) m(d,113,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M113(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M115(m,d,x,...) m(d,114,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M114(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M116(m,d,x,...) m(d,115,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M115(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M117(m,d,x,...) m(d,116,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M116(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M118(m,d,x,...) m(d,117,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M117(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M119(m,d,x,...) m(d,118,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M118(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M120(m,d,x,...) m(d,119,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M119(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M121(m,d,x,...) m(d,120,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M120(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M122(m,d,x,...) m(d,121,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M121(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M123(m,d,x,...) m(d,122,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M122(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M124(m,d,x,...) m(d,123,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M123(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M125(m,d,x,...) m(d,124,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M124(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M126(m,d,x,...) m(d,125,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M125(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M127(m,d,x,...) m(d,126,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M126(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M128(m,d,x,...) m(d,127,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M127(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M129(m,d,x,...) m(d,128,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M128(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M130(m,d,x,...) m(d,129,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M129(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M131(m,d,x,...) m(d,130,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M130(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M132(m,d,x,...) m(d,131,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M131(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M133(m,d,x,...) m(d,132,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M132(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M134(m,d,x,...) m(d,133,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M133(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M135(m,d,x,...) m(d,134,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M134(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M136(m,d,x,...) m(d,135,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M135(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M137(m,d,x,...) m(d,136,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M136(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M138(m,d,x,...) m(d,137,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M137(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M139(m,d,x,...) m(d,138,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M138(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M140(m,d,x,...) m(d,139,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M139(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M141(m,d,x,...) m(d,140,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M140(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M142(m,d,x,...) m(d,141,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M141(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M143(m,d,x,...) m(d,142,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M142(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M144(m,d,x,...) m(d,143,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M143(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M145(m,d,x,...) m(d,144,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M144(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M146(m,d,x,...) m(d,145,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M145(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M147(m,d,x,...) m(d,146,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M146(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M148(m,d,x,...) m(d,147,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M147(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M149(m,d,x,...) m(d,148,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M148(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M150(m,d,x,...) m(d,149,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M149(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M151(m,d,x,...) m(d,150,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M150(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M152(m,d,x,...) m(d,151,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M151(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M153(m,d,x,...) m(d,152,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M152(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M154(m,d,x,...) m(d,153,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M153(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M155(m,d,x,...) m(d,154,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M154(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M156(m,d,x,...) m(d,155,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M155(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M157(m,d,x,...) m(d,156,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M156(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M158(m,d,x,...) m(d,157,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M157(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M159(m,d,x,...) m(d,158,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M158(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M160(m,d,x,...) m(d,159,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M159(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M161(m,d,x,...) m(d,160,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M160(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M162(m,d,x,...) m(d,161,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M161(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M163(m,d,x,...) m(d,162,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M162(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M164(m,d,x,...) m(d,163,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M163(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M165(m,d,x,...) m(d,164,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M164(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M166(m,d,x,...) m(d,165,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M165(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M167(m,d,x,...) m(d,166,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M166(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M168(m,d,x,...) m(d,167,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M167(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M169(m,d,x,...) m(d,168,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M168(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M170(m,d,x,...) m(d,169,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M169(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M171(m,d,x,...) m(d,170,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M170(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M172(m,d,x,...) m(d,171,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M171(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M173(m,d,x,...) m(d,172,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M172(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M174(m,d,x,...) m(d,173,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M173(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M175(m,d,x,...) m(d,174,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M174(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M176(m,d,x,...) m(d,175,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M175(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M177(m,d,x,...) m(d,176,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M176(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M178(m,d,x,...) m(d,177,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M177(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M179(m,d,x,...) m(d,178,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M178(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M180(m,d,x,...) m(d,179,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M179(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M181(m,d,x,...) m(d,180,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M180(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M182(m,d,x,...) m(d,181,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M181(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M183(m,d,x,...) m(d,182,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M182(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M184(m,d,x,...) m(d,183,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M183(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M185(m,d,x,...) m(d,184,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M184(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M186(m,d,x,...) m(d,185,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M185(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M187(m,d,x,...) m(d,186,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M186(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M188(m,d,x,...) m(d,187,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M187(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M189(m,d,x,...) m(d,188,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M188(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M190(m,d,x,...) m(d,189,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M189(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M191(m,d,x,...) m(d,190,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M190(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M192(m,d,x,...) m(d,191,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M191(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M193(m,d,x,...) m(d,192,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M192(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M194(m,d,x,...) m(d,193,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M193(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M195(m,d,x,...) m(d,194,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M194(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M196(m,d,x,...) m(d,195,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M195(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M197(m,d,x,...) m(d,196,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M196(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M198(m,d,x,...) m(d,197,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M197(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M199(m,d,x,...) m(d,198,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M198(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M200(m,d,x,...) m(d,199,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M199(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M201(m,d,x,...) m(d,200,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M200(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M202(m,d,x,...) m(d,201,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M201(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M203(m,d,x,...) m(d,202,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M202(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M204(m,d,x,...) m(d,203,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M203(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M205(m,d,x,...) m(d,204,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M204(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M206(m,d,x,...) m(d,205,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M205(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M207(m,d,x,...) m(d,206,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M206(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M208(m,d,x,...) m(d,207,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M207(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M209(m,d,x,...) m(d,208,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M208(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M210(m,d,x,...) m(d,209,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M209(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M211(m,d,x,...) m(d,210,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M210(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M212(m,d,x,...) m(d,211,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M211(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M213(m,d,x,...) m(d,212,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M212(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M214(m,d,x,...) m(d,213,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M213(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M215(m,d,x,...) m(d,214,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M214(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M216(m,d,x,...) m(d,215,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M215(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M217(m,d,x,...) m(d,216,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M216(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M218(m,d,x,...) m(d,217,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M217(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M219(m,d,x,...) m(d,218,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M218(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M220(m,d,x,...) m(d,219,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M219(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M221(m,d,x,...) m(d,220,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M220(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M222(m,d,x,...) m(d,221,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M221(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M223(m,d,x,...) m(d,222,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M222(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M224(m,d,x,...) m(d,223,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M223(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M225(m,d,x,...) m(d,224,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M224(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M226(m,d,x,...) m(d,225,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M225(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M227(m,d,x,...) m(d,226,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M226(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M228(m,d,x,...) m(d,227,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M227(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M229(m,d,x,...) m(d,228,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M228(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M230(m,d,x,...) m(d,229,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M229(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M231(m,d,x,...) m(d,230,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M230(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M232(m,d,x,...) m(d,231,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M231(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M233(m,d,x,...) m(d,232,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M232(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M234(m,d,x,...) m(d,233,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M233(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M235(m,d,x,...) m(d,234,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M234(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M236(m,d,x,...) m(d,235,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M235(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M237(m,d,x,...) m(d,236,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M236(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M238(m,d,x,...) m(d,237,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M237(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M239(m,d,x,...) m(d,238,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M238(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M240(m,d,x,...) m(d,239,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M239(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M241(m,d,x,...) m(d,240,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M240(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M242(m,d,x,...) m(d,241,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M241(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M243(m,d,x,...) m(d,242,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M242(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M244(m,d,x,...) m(d,243,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M243(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M245(m,d,x,...) m(d,244,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M244(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M246(m,d,x,...) m(d,245,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M245(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M247(m,d,x,...) m(d,246,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M246(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M248(m,d,x,...) m(d,247,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M247(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M249(m,d,x,...) m(d,248,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M248(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M250(m,d,x,...) m(d,249,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M249(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M251(m,d,x,...) m(d,250,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M250(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M252(m,d,x,...) m(d,251,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M251(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M253(m,d,x,...) m(d,252,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M252(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M254(m,d,x,...) m(d,253,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M253(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M255(m,d,x,...) m(d,254,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M254(m,d,__VA_ARGS__))
#define BETTER_ENUMS_M256(m,d,x,...) m(d,255,x) \
    BETTER_ENUMS_ID(BETTER_ENUMS_M255(m,d,__VA_ARGS__))

#define BETTER_ENUMS_PP_COUNT_IMPL(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10,    \
    _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, \
    _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, \
    _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, \
    _56, _57, _58, _59, _60, _61, _62, _63, _64, _65, _66, _67, _68, _69, _70, \
    _71, _72, _73, _74, _75, _76, _77, _78, _79, _80, _81, _82, _83, _84, _85, \
    _86, _87, _88, _89, _90, _91, _92, _93, _94, _95, _96, _97, _98, _99, _100,\
    _101, _102, _103, _104, _105, _106, _107, _108, _109, _110, _111, _112,    \
    _113, _114, _115, _116, _117, _118, _119, _120, _121, _122, _123, _124,    \
    _125, _126, _127, _128, _129, _130, _131, _132, _133, _134, _135, _136,    \
    _137, _138, _139, _140, _141, _142, _143, _144, _145, _146, _147, _148,    \
    _149, _150, _151, _152, _153, _154, _155, _156, _157, _158, _159, _160,    \
    _161, _162, _163, _164, _165, _166, _167, _168, _169, _170, _171, _172,    \
    _173, _174, _175, _176, _177, _178, _179, _180, _181, _182, _183, _184,    \
    _185, _186, _187, _188, _189, _190, _191, _192, _193, _194, _195, _196,    \
    _197, _198, _199, _200, _201, _202, _203, _204, _205, _206, _207, _208,    \
    _209, _210, _211, _212, _213, _214, _215, _216, _217, _218, _219, _220,    \
    _221, _222, _223, _224, _225, _226, _227, _228, _229, _230, _231, _232,    \
    _233, _234, _235, _236, _237, _238, _239, _240, _241, _242, _243, _244,    \
    _245, _246, _247, _248, _249, _250, _251, _252, _253, _254, _255, _256,    \
    count, ...) count

#define BETTER_ENUMS_PP_COUNT(...) \
    BETTER_ENUMS_ID(BETTER_ENUMS_PP_COUNT_IMPL(__VA_ARGS__, 256, 255, 254, 253,\
        252, 251, 250, 249, 248, 247, 246, 245, 244, 243, 242, 241, 240, 239,  \
        238, 237, 236, 235, 234, 233, 232, 231, 230, 229, 228, 227, 226, 225,  \
        224, 223, 222, 221, 220, 219, 218, 217, 216, 215, 214, 213, 212, 211,  \
        210, 209, 208, 207, 206, 205, 204, 203, 202, 201, 200, 199, 198, 197,  \
        196, 195, 194, 193, 192, 191, 190, 189, 188, 187, 186, 185, 184, 183,  \
        182, 181, 180, 179, 178, 177, 176, 175, 174, 173, 172, 171, 170, 169,  \
        168, 167, 166, 165, 164, 163, 162, 161, 160, 159, 158, 157, 156, 155,  \
        154, 153, 152, 151, 150, 149, 148, 147, 146, 145, 144, 143, 142, 141,  \
        140, 139, 138, 137, 136, 135, 134, 133, 132, 131, 130, 129, 128, 127,  \
        126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116, 115, 114, 113,  \
        112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 102, 101, 100, 99,   \
        98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81,\
        80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63,\
        62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45,\
        44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27,\
        26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, \
        8, 7, 6, 5, 4, 3, 2, 1))

#define BETTER_ENUMS_ITERATE(X, f, l) X(f, l, 0) X(f, l, 1) X(f, l, 2)         \
    X(f, l, 3) X(f, l, 4) X(f, l, 5) X(f, l, 6) X(f, l, 7) X(f, l, 8)          \
    X(f, l, 9) X(f, l, 10) X(f, l, 11) X(f, l, 12) X(f, l, 13) X(f, l, 14)     \
    X(f, l, 15) X(f, l, 16) X(f, l, 17) X(f, l, 18) X(f, l, 19) X(f, l, 20)    \
    X(f, l, 21) X(f, l, 22) X(f, l, 23) X(f, l, 24) X(f, l, 25) X(f, l, 26)    \
    X(f, l, 27) X(f, l, 28) X(f, l, 29) X(f, l, 30) X(f, l, 31)

#endif // #ifndef BETTER_ENUMS_MACRO_FILE_H
