From 01fd5d929eff6cabd95eb1545afba4cce85f2726 Mon Sep 17 00:00:00 2001 From: Patrick Pelissier Date: Sun, 3 May 2020 13:13:45 +0200 Subject: [PATCH] * Fix M_RET_ARG so that it accepts also a list of the exact number of arguments (instead of one more) * Add more keywords for pattern recognation --- m-core.h | 161 +++++++++++++++++++++++++++++-------------------------- 1 file changed, 84 insertions(+), 77 deletions(-) diff --git a/m-core.h b/m-core.h index 1d9c1632..50e78d50 100644 --- a/m-core.h +++ b/m-core.h @@ -369,238 +369,238 @@ extern void m_no_default_function(void) __attribute__((error("The requested op /* Return the nth argument (either variable or static). Generated by: - for i in $(seq 1 53 ) ; do printf "#define M_RETI_ARG%d(" $i; for j in $(seq 1 $i) ; do printf "_%d, " $j ; done ; printf "...) _%d\n#define M_RET_ARG%d(...) M_RETI_ARG%d(__VA_ARGS__)\n\n" $i $i $i ; done + for i in $(seq 1 53 ) ; do printf "#define M_RETI_ARG%d(" $i; for j in $(seq 1 $i) ; do printf "_%d, " $j ; done ; printf "...) _%d\n#define M_RET_ARG%d(...) M_RETI_ARG%d(__VA_ARGS__,)\n\n" $i $i $i ; done */ #define M_RETI_ARG(f, ...) f(__VA_ARGS__) #define M_RET_ARG(n, ...) M_RETI_ARG(M_C(M_RET_ARG, n), __VA_ARGS__) #define M_RETI_ARG1(_1, ...) _1 -#define M_RET_ARG1(...) M_RETI_ARG1(__VA_ARGS__) +#define M_RET_ARG1(...) M_RETI_ARG1(__VA_ARGS__,) #define M_RETI_ARG2(_1, _2, ...) _2 -#define M_RET_ARG2(...) M_RETI_ARG2(__VA_ARGS__) +#define M_RET_ARG2(...) M_RETI_ARG2(__VA_ARGS__,) #define M_RETI_ARG3(_1, _2, _3, ...) _3 -#define M_RET_ARG3(...) M_RETI_ARG3(__VA_ARGS__) +#define M_RET_ARG3(...) M_RETI_ARG3(__VA_ARGS__,) #define M_RETI_ARG4(_1, _2, _3, _4, ...) _4 -#define M_RET_ARG4(...) M_RETI_ARG4(__VA_ARGS__) +#define M_RET_ARG4(...) M_RETI_ARG4(__VA_ARGS__,) #define M_RETI_ARG5(_1, _2, _3, _4, _5, ...) _5 -#define M_RET_ARG5(...) M_RETI_ARG5(__VA_ARGS__) +#define M_RET_ARG5(...) M_RETI_ARG5(__VA_ARGS__,) #define M_RETI_ARG6(_1, _2, _3, _4, _5, _6, ...) _6 -#define M_RET_ARG6(...) M_RETI_ARG6(__VA_ARGS__) +#define M_RET_ARG6(...) M_RETI_ARG6(__VA_ARGS__,) #define M_RETI_ARG7(_1, _2, _3, _4, _5, _6, _7, ...) _7 -#define M_RET_ARG7(...) M_RETI_ARG7(__VA_ARGS__) +#define M_RET_ARG7(...) M_RETI_ARG7(__VA_ARGS__,) #define M_RETI_ARG8(_1, _2, _3, _4, _5, _6, _7, _8, ...) _8 -#define M_RET_ARG8(...) M_RETI_ARG8(__VA_ARGS__) +#define M_RET_ARG8(...) M_RETI_ARG8(__VA_ARGS__,) #define M_RETI_ARG9(_1, _2, _3, _4, _5, _6, _7, _8, _9, ...) _9 -#define M_RET_ARG9(...) M_RETI_ARG9(__VA_ARGS__) +#define M_RET_ARG9(...) M_RETI_ARG9(__VA_ARGS__,) #define M_RETI_ARG10(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, ...) _10 -#define M_RET_ARG10(...) M_RETI_ARG10(__VA_ARGS__) +#define M_RET_ARG10(...) M_RETI_ARG10(__VA_ARGS__,) #define M_RETI_ARG11(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, ...) _11 -#define M_RET_ARG11(...) M_RETI_ARG11(__VA_ARGS__) +#define M_RET_ARG11(...) M_RETI_ARG11(__VA_ARGS__,) #define M_RETI_ARG12(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, ...) _12 -#define M_RET_ARG12(...) M_RETI_ARG12(__VA_ARGS__) +#define M_RET_ARG12(...) M_RETI_ARG12(__VA_ARGS__,) #define M_RETI_ARG13(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, ...) _13 -#define M_RET_ARG13(...) M_RETI_ARG13(__VA_ARGS__) +#define M_RET_ARG13(...) M_RETI_ARG13(__VA_ARGS__,) #define M_RETI_ARG14(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, ...) _14 -#define M_RET_ARG14(...) M_RETI_ARG14(__VA_ARGS__) +#define M_RET_ARG14(...) M_RETI_ARG14(__VA_ARGS__,) #define M_RETI_ARG15(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, ...) _15 -#define M_RET_ARG15(...) M_RETI_ARG15(__VA_ARGS__) +#define M_RET_ARG15(...) M_RETI_ARG15(__VA_ARGS__,) #define M_RETI_ARG16(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, ...) _16 -#define M_RET_ARG16(...) M_RETI_ARG16(__VA_ARGS__) +#define M_RET_ARG16(...) M_RETI_ARG16(__VA_ARGS__,) #define M_RETI_ARG17(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, ...) _17 -#define M_RET_ARG17(...) M_RETI_ARG17(__VA_ARGS__) +#define M_RET_ARG17(...) M_RETI_ARG17(__VA_ARGS__,) #define M_RETI_ARG18(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, ...) _18 -#define M_RET_ARG18(...) M_RETI_ARG18(__VA_ARGS__) +#define M_RET_ARG18(...) M_RETI_ARG18(__VA_ARGS__,) #define M_RETI_ARG19(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, ...) _19 -#define M_RET_ARG19(...) M_RETI_ARG19(__VA_ARGS__) +#define M_RET_ARG19(...) M_RETI_ARG19(__VA_ARGS__,) #define M_RETI_ARG20(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, ...) _20 -#define M_RET_ARG20(...) M_RETI_ARG20(__VA_ARGS__) +#define M_RET_ARG20(...) M_RETI_ARG20(__VA_ARGS__,) #define M_RETI_ARG21(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, ...) _21 -#define M_RET_ARG21(...) M_RETI_ARG21(__VA_ARGS__) +#define M_RET_ARG21(...) M_RETI_ARG21(__VA_ARGS__,) #define M_RETI_ARG22(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, ...) _22 -#define M_RET_ARG22(...) M_RETI_ARG22(__VA_ARGS__) +#define M_RET_ARG22(...) M_RETI_ARG22(__VA_ARGS__,) #define M_RETI_ARG23(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, ...) _23 -#define M_RET_ARG23(...) M_RETI_ARG23(__VA_ARGS__) +#define M_RET_ARG23(...) M_RETI_ARG23(__VA_ARGS__,) #define M_RETI_ARG24(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, ...) _24 -#define M_RET_ARG24(...) M_RETI_ARG24(__VA_ARGS__) +#define M_RET_ARG24(...) M_RETI_ARG24(__VA_ARGS__,) #define M_RETI_ARG25(_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, ...) _25 -#define M_RET_ARG25(...) M_RETI_ARG25(__VA_ARGS__) +#define M_RET_ARG25(...) M_RETI_ARG25(__VA_ARGS__,) #define M_RETI_ARG26(_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, ...) _26 -#define M_RET_ARG26(...) M_RETI_ARG26(__VA_ARGS__) +#define M_RET_ARG26(...) M_RETI_ARG26(__VA_ARGS__,) #define M_RETI_ARG27(_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, ...) _27 -#define M_RET_ARG27(...) M_RETI_ARG27(__VA_ARGS__) +#define M_RET_ARG27(...) M_RETI_ARG27(__VA_ARGS__,) #define M_RETI_ARG28(_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, ...) _28 -#define M_RET_ARG28(...) M_RETI_ARG28(__VA_ARGS__) +#define M_RET_ARG28(...) M_RETI_ARG28(__VA_ARGS__,) #define M_RETI_ARG29(_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, ...) _29 -#define M_RET_ARG29(...) M_RETI_ARG29(__VA_ARGS__) +#define M_RET_ARG29(...) M_RETI_ARG29(__VA_ARGS__,) #define M_RETI_ARG30(_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, ...) _30 -#define M_RET_ARG30(...) M_RETI_ARG30(__VA_ARGS__) +#define M_RET_ARG30(...) M_RETI_ARG30(__VA_ARGS__,) #define M_RETI_ARG31(_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, ...) _31 -#define M_RET_ARG31(...) M_RETI_ARG31(__VA_ARGS__) +#define M_RET_ARG31(...) M_RETI_ARG31(__VA_ARGS__,) #define M_RETI_ARG32(_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, ...) _32 -#define M_RET_ARG32(...) M_RETI_ARG32(__VA_ARGS__) +#define M_RET_ARG32(...) M_RETI_ARG32(__VA_ARGS__,) #define M_RETI_ARG33(_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, ...) _33 -#define M_RET_ARG33(...) M_RETI_ARG33(__VA_ARGS__) +#define M_RET_ARG33(...) M_RETI_ARG33(__VA_ARGS__,) #define M_RETI_ARG34(_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, ...) _34 -#define M_RET_ARG34(...) M_RETI_ARG34(__VA_ARGS__) +#define M_RET_ARG34(...) M_RETI_ARG34(__VA_ARGS__,) #define M_RETI_ARG35(_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, ...) _35 -#define M_RET_ARG35(...) M_RETI_ARG35(__VA_ARGS__) +#define M_RET_ARG35(...) M_RETI_ARG35(__VA_ARGS__,) #define M_RETI_ARG36(_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, ...) _36 -#define M_RET_ARG36(...) M_RETI_ARG36(__VA_ARGS__) +#define M_RET_ARG36(...) M_RETI_ARG36(__VA_ARGS__,) #define M_RETI_ARG37(_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, ...) _37 -#define M_RET_ARG37(...) M_RETI_ARG37(__VA_ARGS__) +#define M_RET_ARG37(...) M_RETI_ARG37(__VA_ARGS__,) #define M_RETI_ARG38(_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, ...) _38 -#define M_RET_ARG38(...) M_RETI_ARG38(__VA_ARGS__) +#define M_RET_ARG38(...) M_RETI_ARG38(__VA_ARGS__,) #define M_RETI_ARG39(_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, ...) _39 -#define M_RET_ARG39(...) M_RETI_ARG39(__VA_ARGS__) +#define M_RET_ARG39(...) M_RETI_ARG39(__VA_ARGS__,) #define M_RETI_ARG40(_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, ...) _40 -#define M_RET_ARG40(...) M_RETI_ARG40(__VA_ARGS__) +#define M_RET_ARG40(...) M_RETI_ARG40(__VA_ARGS__,) #define M_RETI_ARG41(_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, ...) _41 -#define M_RET_ARG41(...) M_RETI_ARG41(__VA_ARGS__) +#define M_RET_ARG41(...) M_RETI_ARG41(__VA_ARGS__,) #define M_RETI_ARG42(_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, ...) _42 -#define M_RET_ARG42(...) M_RETI_ARG42(__VA_ARGS__) +#define M_RET_ARG42(...) M_RETI_ARG42(__VA_ARGS__,) #define M_RETI_ARG43(_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, ...) _43 -#define M_RET_ARG43(...) M_RETI_ARG43(__VA_ARGS__) +#define M_RET_ARG43(...) M_RETI_ARG43(__VA_ARGS__,) #define M_RETI_ARG44(_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, ...) _44 -#define M_RET_ARG44(...) M_RETI_ARG44(__VA_ARGS__) +#define M_RET_ARG44(...) M_RETI_ARG44(__VA_ARGS__,) #define M_RETI_ARG45(_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, ...) _45 -#define M_RET_ARG45(...) M_RETI_ARG45(__VA_ARGS__) +#define M_RET_ARG45(...) M_RETI_ARG45(__VA_ARGS__,) #define M_RETI_ARG46(_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, ...) _46 -#define M_RET_ARG46(...) M_RETI_ARG46(__VA_ARGS__) +#define M_RET_ARG46(...) M_RETI_ARG46(__VA_ARGS__,) #define M_RETI_ARG47(_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, ...) _47 -#define M_RET_ARG47(...) M_RETI_ARG47(__VA_ARGS__) +#define M_RET_ARG47(...) M_RETI_ARG47(__VA_ARGS__,) #define M_RETI_ARG48(_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, ...) _48 -#define M_RET_ARG48(...) M_RETI_ARG48(__VA_ARGS__) +#define M_RET_ARG48(...) M_RETI_ARG48(__VA_ARGS__,) #define M_RETI_ARG49(_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, ...) _49 -#define M_RET_ARG49(...) M_RETI_ARG49(__VA_ARGS__) +#define M_RET_ARG49(...) M_RETI_ARG49(__VA_ARGS__,) #define M_RETI_ARG50(_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, ...) _50 -#define M_RET_ARG50(...) M_RETI_ARG50(__VA_ARGS__) +#define M_RET_ARG50(...) M_RETI_ARG50(__VA_ARGS__,) #define M_RETI_ARG51(_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, ...) _51 -#define M_RET_ARG51(...) M_RETI_ARG51(__VA_ARGS__) +#define M_RET_ARG51(...) M_RETI_ARG51(__VA_ARGS__,) #define M_RETI_ARG52(_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, ...) _52 -#define M_RET_ARG52(...) M_RETI_ARG52(__VA_ARGS__) +#define M_RET_ARG52(...) M_RETI_ARG52(__VA_ARGS__,) #define M_RETI_ARG53(_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, ...) _53 -#define M_RET_ARG53(...) M_RETI_ARG53(__VA_ARGS__) +#define M_RET_ARG53(...) M_RETI_ARG53(__VA_ARGS__,) #define M_RETI_ARG54(_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, ...) _54 -#define M_RET_ARG54(...) M_RETI_ARG54(__VA_ARGS__) +#define M_RET_ARG54(...) M_RETI_ARG54(__VA_ARGS__,) #define M_RETI_ARG55(_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, ...) _55 -#define M_RET_ARG55(...) M_RETI_ARG55(__VA_ARGS__) +#define M_RET_ARG55(...) M_RETI_ARG55(__VA_ARGS__,) #define M_RETI_ARG56(_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, ...) _56 -#define M_RET_ARG56(...) M_RETI_ARG56(__VA_ARGS__) +#define M_RET_ARG56(...) M_RETI_ARG56(__VA_ARGS__,) #define M_RETI_ARG57(_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, ...) _57 -#define M_RET_ARG57(...) M_RETI_ARG57(__VA_ARGS__) +#define M_RET_ARG57(...) M_RETI_ARG57(__VA_ARGS__,) #define M_RETI_ARG58(_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, ...) _58 -#define M_RET_ARG58(...) M_RETI_ARG58(__VA_ARGS__) +#define M_RET_ARG58(...) M_RETI_ARG58(__VA_ARGS__,) #define M_RETI_ARG59(_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, ...) _59 -#define M_RET_ARG59(...) M_RETI_ARG59(__VA_ARGS__) +#define M_RET_ARG59(...) M_RETI_ARG59(__VA_ARGS__,) #define M_RETI_ARG60(_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, ...) _60 -#define M_RET_ARG60(...) M_RETI_ARG60(__VA_ARGS__) +#define M_RET_ARG60(...) M_RETI_ARG60(__VA_ARGS__,) #define M_RETI_ARG61(_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, ...) _61 -#define M_RET_ARG61(...) M_RETI_ARG61(__VA_ARGS__) +#define M_RET_ARG61(...) M_RETI_ARG61(__VA_ARGS__,) #define M_RETI_ARG62(_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, ...) _62 -#define M_RET_ARG62(...) M_RETI_ARG62(__VA_ARGS__) +#define M_RET_ARG62(...) M_RETI_ARG62(__VA_ARGS__,) #define M_RETI_ARG63(_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, ...) _63 -#define M_RET_ARG63(...) M_RETI_ARG63(__VA_ARGS__) +#define M_RET_ARG63(...) M_RETI_ARG63(__VA_ARGS__,) #define M_RETI_ARG64(_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, ...) _64 -#define M_RET_ARG64(...) M_RETI_ARG64(__VA_ARGS__) +#define M_RET_ARG64(...) M_RETI_ARG64(__VA_ARGS__,) #define M_RETI_ARG65(_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, ...) _65 -#define M_RET_ARG65(...) M_RETI_ARG65(__VA_ARGS__) +#define M_RET_ARG65(...) M_RETI_ARG65(__VA_ARGS__,) #define M_RETI_ARG66(_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, ...) _66 -#define M_RET_ARG66(...) M_RETI_ARG66(__VA_ARGS__) +#define M_RET_ARG66(...) M_RETI_ARG66(__VA_ARGS__,) #define M_RETI_ARG67(_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, ...) _67 -#define M_RET_ARG67(...) M_RETI_ARG67(__VA_ARGS__) +#define M_RET_ARG67(...) M_RETI_ARG67(__VA_ARGS__,) #define M_RETI_ARG68(_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, ...) _68 -#define M_RET_ARG68(...) M_RETI_ARG68(__VA_ARGS__) +#define M_RET_ARG68(...) M_RETI_ARG68(__VA_ARGS__,) #define M_RETI_ARG69(_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, ...) _69 -#define M_RET_ARG69(...) M_RETI_ARG69(__VA_ARGS__) +#define M_RET_ARG69(...) M_RETI_ARG69(__VA_ARGS__,) #define M_RETI_ARG70(_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, ...) _70 -#define M_RET_ARG70(...) M_RETI_ARG70(__VA_ARGS__) +#define M_RET_ARG70(...) M_RETI_ARG70(__VA_ARGS__,) #define M_RETI_ARG71(_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, ...) _71 -#define M_RET_ARG71(...) M_RETI_ARG71(__VA_ARGS__) +#define M_RET_ARG71(...) M_RETI_ARG71(__VA_ARGS__,) #define M_RETI_ARG72(_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, ...) _72 -#define M_RET_ARG72(...) M_RETI_ARG72(__VA_ARGS__) +#define M_RET_ARG72(...) M_RETI_ARG72(__VA_ARGS__,) #define M_RETI_ARG73(_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, ...) _73 -#define M_RET_ARG73(...) M_RETI_ARG73(__VA_ARGS__) +#define M_RET_ARG73(...) M_RETI_ARG73(__VA_ARGS__,) #define M_RETI_ARG74(_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, ...) _74 -#define M_RET_ARG74(...) M_RETI_ARG74(__VA_ARGS__) +#define M_RET_ARG74(...) M_RETI_ARG74(__VA_ARGS__,) #define M_RETI_ARG75(_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, ...) _75 -#define M_RET_ARG75(...) M_RETI_ARG75(__VA_ARGS__) +#define M_RET_ARG75(...) M_RETI_ARG75(__VA_ARGS__,) #define M_RETI_ARG76(_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, ...) _76 -#define M_RET_ARG76(...) M_RETI_ARG76(__VA_ARGS__) +#define M_RET_ARG76(...) M_RETI_ARG76(__VA_ARGS__,) /* For a pair of argument (arg0, arg1), return either the first or the second. Needed in case where M_RET_ARGn cannot be used */ @@ -827,6 +827,13 @@ extern void m_no_default_function(void) __attribute__((error("The requested op #define M_PATTERN_product_product , #define M_PATTERN_product_mul , #define M_PATTERN_bool_bool , +#define M_PATTERN_char_char , +#define M_PATTERN_short_short , +#define M_PATTERN_int_int , +#define M_PATTERN_long_long , +#define M_PATTERN_float_float , +#define M_PATTERN_double_double , +#define M_PATTERN_void_void , /* Necessary macros to handle recursivity,