From 1b19f1a7bc8863cb194f982b90a4a25ce33e6fe0 Mon Sep 17 00:00:00 2001 From: evandrocoan Date: Wed, 29 Jan 2020 00:00:24 -0300 Subject: [PATCH] Reduced C++ 98 macros verbosity by combining them with each other https://github.com/c42f/tinyformat/pull/69 --- cpp98templates.h | 276 +++++++++++++++++++++++++++++++++++------------ 1 file changed, 205 insertions(+), 71 deletions(-) diff --git a/cpp98templates.h b/cpp98templates.h index d35c4fa..552d207 100644 --- a/cpp98templates.h +++ b/cpp98templates.h @@ -37,9 +37,9 @@ #define CPP98VARIADICTEMPLATE_OPEN_PAREN ( #define CPP98VARIADICTEMPLATE_CLOSE_PAREN ) -#define CPP98VARIADICTEMPLATE_ARGTYPES(n,begin,end,...) CPP98VARIADICTEMPLATE_ARGTYPES_ ## n (begin,end,__VA_ARGS__) -#define CPP98VARIADICTEMPLATE_VARARGS(n,...) CPP98VARIADICTEMPLATE_VARARGS_ ## n (__VA_ARGS__) -#define CPP98VARIADICTEMPLATE_PASSARGS(n,begin,end,...) CPP98VARIADICTEMPLATE_PASSARGS_ ## n (begin,end,__VA_ARGS__) +#define CPP98VARIADICTEMPLATE_ARGTYPES(n,begin,end,...) CPP98VARIADICTEMPLATE_ARGTYPES_CALL_ ## n (begin,end,__VA_ARGS__) +#define CPP98VARIADICTEMPLATE_VARARGS(n,...) CPP98VARIADICTEMPLATE_VARARGS_CALL_ ## n (__VA_ARGS__) +#define CPP98VARIADICTEMPLATE_PASSARGS(n,begin,end,...) CPP98VARIADICTEMPLATE_PASSARGS_CALL_ ## n (begin,end,__VA_ARGS__) // To keep it as transparent as possible, the macros below have been generated // using python via the excellent cog code generation script. This avoids @@ -51,84 +51,218 @@ // extra versions by hand. /*[[[cog -maxParams = 16 +maxParams = 24 def makeCommaSepLists(lineTemplate, elemTemplate, startInd=1): - for j in range(startInd,maxParams+1): - list = ', '.join([elemTemplate % {'i':i} for i in range(startInd,j+1)]) - cog.outl(lineTemplate % {'j':j, 'list':list}) + for line in range(startInd,maxParams+1): + elements = elemTemplate % { 'last': line - 1, 'line': line } + cog.outl(lineTemplate % {'line': line, 'list': elements}) + +cog.outl() +cog.outl('#define CPP98VARIADICTEMPLATE_ARGTYPES_1 typename T1') +makeCommaSepLists('#define CPP98VARIADICTEMPLATE_ARGTYPES_%(line)d %(list)s', + 'CPP98VARIADICTEMPLATE_ARGTYPES_%(last)d, typename T%(line)d', + startInd = 2) + +cog.outl() +cog.outl('#define CPP98VARIADICTEMPLATE_ARGTYPES_CALL_0(...)') +cog.outl('#define CPP98VARIADICTEMPLATE_ARGTYPES_CALL_1(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_ARGTYPES_1 end') +makeCommaSepLists('#define CPP98VARIADICTEMPLATE_ARGTYPES_CALL_%(line)d(begin,end,...) begin __VA_ARGS__ %(list)s end', + 'CPP98VARIADICTEMPLATE_ARGTYPES_%(line)d', + startInd = 2) + + +cog.outl() +cog.outl('#define CPP98VARIADICTEMPLATE_VARARGS_1 const T1& v1') +makeCommaSepLists('#define CPP98VARIADICTEMPLATE_VARARGS_%(line)d %(list)s', + 'CPP98VARIADICTEMPLATE_VARARGS_%(last)d, const T%(line)d& v%(line)d', + startInd = 2) + +cog.outl() +cog.outl('#define CPP98VARIADICTEMPLATE_VARARGS_CALL_0(...)') +cog.outl('#define CPP98VARIADICTEMPLATE_VARARGS_CALL_1(...) __VA_ARGS__ CPP98VARIADICTEMPLATE_VARARGS_1') +makeCommaSepLists('#define CPP98VARIADICTEMPLATE_VARARGS_CALL_%(line)d(...) __VA_ARGS__ %(list)s', + 'CPP98VARIADICTEMPLATE_VARARGS_%(line)d', + startInd = 2) -cog.outl('#define CPP98VARIADICTEMPLATE_ARGTYPES_0(...)') -makeCommaSepLists('#define CPP98VARIADICTEMPLATE_ARGTYPES_%(j)d(begin,end,...) begin __VA_ARGS__ %(list)s end', - 'class T%(i)d') cog.outl() -cog.outl('#define CPP98VARIADICTEMPLATE_VARARGS_0(...)') -makeCommaSepLists('#define CPP98VARIADICTEMPLATE_VARARGS_%(j)d(...) __VA_ARGS__ %(list)s', - 'const T%(i)d& v%(i)d') +cog.outl('#define CPP98VARIADICTEMPLATE_PASSARGS_1 v1') +makeCommaSepLists('#define CPP98VARIADICTEMPLATE_PASSARGS_%(line)d %(list)s', + 'CPP98VARIADICTEMPLATE_PASSARGS_%(last)d, v%(line)d', + startInd = 2) cog.outl() -cog.outl('#define CPP98VARIADICTEMPLATE_PASSARGS_0(...)') -makeCommaSepLists('#define CPP98VARIADICTEMPLATE_PASSARGS_%(j)d(begin,end,...) __VA_ARGS__ %(list)s', 'begin v%(i)d end') +cog.outl('#define CPP98VARIADICTEMPLATE_PASSARGS_CALL_0(...)') +cog.outl('#define CPP98VARIADICTEMPLATE_PASSARGS_CALL_1(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_PASSARGS_1 end') +makeCommaSepLists('#define CPP98VARIADICTEMPLATE_PASSARGS_CALL_%(line)d(begin,end,...) begin __VA_ARGS__ %(list)s end', + 'CPP98VARIADICTEMPLATE_PASSARGS_%(line)d', + startInd = 2) + +lines = [] +newline = " \\\n " +for line in range(0,maxParams): + lines.append(' m(%d)' % (line,)) + if line % 15 == 14: lines.append(newline) cog.outl() -cog.outl('#define CPP98VARIADICTEMPLATE_FOREACH_ARGNUM(m) \\\n m(0) ' + - ' '.join(['m(%d)' % (j,) for j in range(1,maxParams+1)])) +cog.outl('#define CPP98VARIADICTEMPLATE_FOREACH_ARGNUM(m)' + newline + ''.join(lines)) ]]]*/ -#define CPP98VARIADICTEMPLATE_ARGTYPES_0(...) -#define CPP98VARIADICTEMPLATE_ARGTYPES_1(begin,end,...) begin __VA_ARGS__ class T1 end -#define CPP98VARIADICTEMPLATE_ARGTYPES_2(begin,end,...) begin __VA_ARGS__ class T1, class T2 end -#define CPP98VARIADICTEMPLATE_ARGTYPES_3(begin,end,...) begin __VA_ARGS__ class T1, class T2, class T3 end -#define CPP98VARIADICTEMPLATE_ARGTYPES_4(begin,end,...) begin __VA_ARGS__ class T1, class T2, class T3, class T4 end -#define CPP98VARIADICTEMPLATE_ARGTYPES_5(begin,end,...) begin __VA_ARGS__ class T1, class T2, class T3, class T4, class T5 end -#define CPP98VARIADICTEMPLATE_ARGTYPES_6(begin,end,...) begin __VA_ARGS__ class T1, class T2, class T3, class T4, class T5, class T6 end -#define CPP98VARIADICTEMPLATE_ARGTYPES_7(begin,end,...) begin __VA_ARGS__ class T1, class T2, class T3, class T4, class T5, class T6, class T7 end -#define CPP98VARIADICTEMPLATE_ARGTYPES_8(begin,end,...) begin __VA_ARGS__ class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8 end -#define CPP98VARIADICTEMPLATE_ARGTYPES_9(begin,end,...) begin __VA_ARGS__ class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9 end -#define CPP98VARIADICTEMPLATE_ARGTYPES_10(begin,end,...) begin __VA_ARGS__ class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10 end -#define CPP98VARIADICTEMPLATE_ARGTYPES_11(begin,end,...) begin __VA_ARGS__ class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11 end -#define CPP98VARIADICTEMPLATE_ARGTYPES_12(begin,end,...) begin __VA_ARGS__ class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12 end -#define CPP98VARIADICTEMPLATE_ARGTYPES_13(begin,end,...) begin __VA_ARGS__ class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13 end -#define CPP98VARIADICTEMPLATE_ARGTYPES_14(begin,end,...) begin __VA_ARGS__ class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14 end -#define CPP98VARIADICTEMPLATE_ARGTYPES_15(begin,end,...) begin __VA_ARGS__ class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15 end -#define CPP98VARIADICTEMPLATE_ARGTYPES_16(begin,end,...) begin __VA_ARGS__ class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16 end - -#define CPP98VARIADICTEMPLATE_VARARGS_0(...) -#define CPP98VARIADICTEMPLATE_VARARGS_1(...) __VA_ARGS__ const T1& v1 -#define CPP98VARIADICTEMPLATE_VARARGS_2(...) __VA_ARGS__ const T1& v1, const T2& v2 -#define CPP98VARIADICTEMPLATE_VARARGS_3(...) __VA_ARGS__ const T1& v1, const T2& v2, const T3& v3 -#define CPP98VARIADICTEMPLATE_VARARGS_4(...) __VA_ARGS__ const T1& v1, const T2& v2, const T3& v3, const T4& v4 -#define CPP98VARIADICTEMPLATE_VARARGS_5(...) __VA_ARGS__ const T1& v1, const T2& v2, const T3& v3, const T4& v4, const T5& v5 -#define CPP98VARIADICTEMPLATE_VARARGS_6(...) __VA_ARGS__ const T1& v1, const T2& v2, const T3& v3, const T4& v4, const T5& v5, const T6& v6 -#define CPP98VARIADICTEMPLATE_VARARGS_7(...) __VA_ARGS__ const T1& v1, const T2& v2, const T3& v3, const T4& v4, const T5& v5, const T6& v6, const T7& v7 -#define CPP98VARIADICTEMPLATE_VARARGS_8(...) __VA_ARGS__ const T1& v1, const T2& v2, const T3& v3, const T4& v4, const T5& v5, const T6& v6, const T7& v7, const T8& v8 -#define CPP98VARIADICTEMPLATE_VARARGS_9(...) __VA_ARGS__ const T1& v1, const T2& v2, const T3& v3, const T4& v4, const T5& v5, const T6& v6, const T7& v7, const T8& v8, const T9& v9 -#define CPP98VARIADICTEMPLATE_VARARGS_10(...) __VA_ARGS__ const T1& v1, const T2& v2, const T3& v3, const T4& v4, const T5& v5, const T6& v6, const T7& v7, const T8& v8, const T9& v9, const T10& v10 -#define CPP98VARIADICTEMPLATE_VARARGS_11(...) __VA_ARGS__ const T1& v1, const T2& v2, const T3& v3, const T4& v4, const T5& v5, const T6& v6, const T7& v7, const T8& v8, const T9& v9, const T10& v10, const T11& v11 -#define CPP98VARIADICTEMPLATE_VARARGS_12(...) __VA_ARGS__ const T1& v1, const T2& v2, const T3& v3, const T4& v4, const T5& v5, const T6& v6, const T7& v7, const T8& v8, const T9& v9, const T10& v10, const T11& v11, const T12& v12 -#define CPP98VARIADICTEMPLATE_VARARGS_13(...) __VA_ARGS__ const T1& v1, const T2& v2, const T3& v3, const T4& v4, const T5& v5, const T6& v6, const T7& v7, const T8& v8, const T9& v9, const T10& v10, const T11& v11, const T12& v12, const T13& v13 -#define CPP98VARIADICTEMPLATE_VARARGS_14(...) __VA_ARGS__ const T1& v1, const T2& v2, const T3& v3, const T4& v4, const T5& v5, const T6& v6, const T7& v7, const T8& v8, const T9& v9, const T10& v10, const T11& v11, const T12& v12, const T13& v13, const T14& v14 -#define CPP98VARIADICTEMPLATE_VARARGS_15(...) __VA_ARGS__ const T1& v1, const T2& v2, const T3& v3, const T4& v4, const T5& v5, const T6& v6, const T7& v7, const T8& v8, const T9& v9, const T10& v10, const T11& v11, const T12& v12, const T13& v13, const T14& v14, const T15& v15 -#define CPP98VARIADICTEMPLATE_VARARGS_16(...) __VA_ARGS__ const T1& v1, const T2& v2, const T3& v3, const T4& v4, const T5& v5, const T6& v6, const T7& v7, const T8& v8, const T9& v9, const T10& v10, const T11& v11, const T12& v12, const T13& v13, const T14& v14, const T15& v15, const T16& v16 - -#define CPP98VARIADICTEMPLATE_PASSARGS_0(...) -#define CPP98VARIADICTEMPLATE_PASSARGS_1(begin,end,...) __VA_ARGS__ begin v1 end -#define CPP98VARIADICTEMPLATE_PASSARGS_2(begin,end,...) __VA_ARGS__ begin v1 end, begin v2 end -#define CPP98VARIADICTEMPLATE_PASSARGS_3(begin,end,...) __VA_ARGS__ begin v1 end, begin v2 end, begin v3 end -#define CPP98VARIADICTEMPLATE_PASSARGS_4(begin,end,...) __VA_ARGS__ begin v1 end, begin v2 end, begin v3 end, begin v4 end -#define CPP98VARIADICTEMPLATE_PASSARGS_5(begin,end,...) __VA_ARGS__ begin v1 end, begin v2 end, begin v3 end, begin v4 end, begin v5 end -#define CPP98VARIADICTEMPLATE_PASSARGS_6(begin,end,...) __VA_ARGS__ begin v1 end, begin v2 end, begin v3 end, begin v4 end, begin v5 end, begin v6 end -#define CPP98VARIADICTEMPLATE_PASSARGS_7(begin,end,...) __VA_ARGS__ begin v1 end, begin v2 end, begin v3 end, begin v4 end, begin v5 end, begin v6 end, begin v7 end -#define CPP98VARIADICTEMPLATE_PASSARGS_8(begin,end,...) __VA_ARGS__ begin v1 end, begin v2 end, begin v3 end, begin v4 end, begin v5 end, begin v6 end, begin v7 end, begin v8 end -#define CPP98VARIADICTEMPLATE_PASSARGS_9(begin,end,...) __VA_ARGS__ begin v1 end, begin v2 end, begin v3 end, begin v4 end, begin v5 end, begin v6 end, begin v7 end, begin v8 end, begin v9 end -#define CPP98VARIADICTEMPLATE_PASSARGS_10(begin,end,...) __VA_ARGS__ begin v1 end, begin v2 end, begin v3 end, begin v4 end, begin v5 end, begin v6 end, begin v7 end, begin v8 end, begin v9 end, begin v10 end -#define CPP98VARIADICTEMPLATE_PASSARGS_11(begin,end,...) __VA_ARGS__ begin v1 end, begin v2 end, begin v3 end, begin v4 end, begin v5 end, begin v6 end, begin v7 end, begin v8 end, begin v9 end, begin v10 end, begin v11 end -#define CPP98VARIADICTEMPLATE_PASSARGS_12(begin,end,...) __VA_ARGS__ begin v1 end, begin v2 end, begin v3 end, begin v4 end, begin v5 end, begin v6 end, begin v7 end, begin v8 end, begin v9 end, begin v10 end, begin v11 end, begin v12 end -#define CPP98VARIADICTEMPLATE_PASSARGS_13(begin,end,...) __VA_ARGS__ begin v1 end, begin v2 end, begin v3 end, begin v4 end, begin v5 end, begin v6 end, begin v7 end, begin v8 end, begin v9 end, begin v10 end, begin v11 end, begin v12 end, begin v13 end -#define CPP98VARIADICTEMPLATE_PASSARGS_14(begin,end,...) __VA_ARGS__ begin v1 end, begin v2 end, begin v3 end, begin v4 end, begin v5 end, begin v6 end, begin v7 end, begin v8 end, begin v9 end, begin v10 end, begin v11 end, begin v12 end, begin v13 end, begin v14 end -#define CPP98VARIADICTEMPLATE_PASSARGS_15(begin,end,...) __VA_ARGS__ begin v1 end, begin v2 end, begin v3 end, begin v4 end, begin v5 end, begin v6 end, begin v7 end, begin v8 end, begin v9 end, begin v10 end, begin v11 end, begin v12 end, begin v13 end, begin v14 end, begin v15 end -#define CPP98VARIADICTEMPLATE_PASSARGS_16(begin,end,...) __VA_ARGS__ begin v1 end, begin v2 end, begin v3 end, begin v4 end, begin v5 end, begin v6 end, begin v7 end, begin v8 end, begin v9 end, begin v10 end, begin v11 end, begin v12 end, begin v13 end, begin v14 end, begin v15 end, begin v16 end + +#define CPP98VARIADICTEMPLATE_ARGTYPES_1 typename T1 +#define CPP98VARIADICTEMPLATE_ARGTYPES_2 CPP98VARIADICTEMPLATE_ARGTYPES_1, typename T2 +#define CPP98VARIADICTEMPLATE_ARGTYPES_3 CPP98VARIADICTEMPLATE_ARGTYPES_2, typename T3 +#define CPP98VARIADICTEMPLATE_ARGTYPES_4 CPP98VARIADICTEMPLATE_ARGTYPES_3, typename T4 +#define CPP98VARIADICTEMPLATE_ARGTYPES_5 CPP98VARIADICTEMPLATE_ARGTYPES_4, typename T5 +#define CPP98VARIADICTEMPLATE_ARGTYPES_6 CPP98VARIADICTEMPLATE_ARGTYPES_5, typename T6 +#define CPP98VARIADICTEMPLATE_ARGTYPES_7 CPP98VARIADICTEMPLATE_ARGTYPES_6, typename T7 +#define CPP98VARIADICTEMPLATE_ARGTYPES_8 CPP98VARIADICTEMPLATE_ARGTYPES_7, typename T8 +#define CPP98VARIADICTEMPLATE_ARGTYPES_9 CPP98VARIADICTEMPLATE_ARGTYPES_8, typename T9 +#define CPP98VARIADICTEMPLATE_ARGTYPES_10 CPP98VARIADICTEMPLATE_ARGTYPES_9, typename T10 +#define CPP98VARIADICTEMPLATE_ARGTYPES_11 CPP98VARIADICTEMPLATE_ARGTYPES_10, typename T11 +#define CPP98VARIADICTEMPLATE_ARGTYPES_12 CPP98VARIADICTEMPLATE_ARGTYPES_11, typename T12 +#define CPP98VARIADICTEMPLATE_ARGTYPES_13 CPP98VARIADICTEMPLATE_ARGTYPES_12, typename T13 +#define CPP98VARIADICTEMPLATE_ARGTYPES_14 CPP98VARIADICTEMPLATE_ARGTYPES_13, typename T14 +#define CPP98VARIADICTEMPLATE_ARGTYPES_15 CPP98VARIADICTEMPLATE_ARGTYPES_14, typename T15 +#define CPP98VARIADICTEMPLATE_ARGTYPES_16 CPP98VARIADICTEMPLATE_ARGTYPES_15, typename T16 +#define CPP98VARIADICTEMPLATE_ARGTYPES_17 CPP98VARIADICTEMPLATE_ARGTYPES_16, typename T17 +#define CPP98VARIADICTEMPLATE_ARGTYPES_18 CPP98VARIADICTEMPLATE_ARGTYPES_17, typename T18 +#define CPP98VARIADICTEMPLATE_ARGTYPES_19 CPP98VARIADICTEMPLATE_ARGTYPES_18, typename T19 +#define CPP98VARIADICTEMPLATE_ARGTYPES_20 CPP98VARIADICTEMPLATE_ARGTYPES_19, typename T20 +#define CPP98VARIADICTEMPLATE_ARGTYPES_21 CPP98VARIADICTEMPLATE_ARGTYPES_20, typename T21 +#define CPP98VARIADICTEMPLATE_ARGTYPES_22 CPP98VARIADICTEMPLATE_ARGTYPES_21, typename T22 +#define CPP98VARIADICTEMPLATE_ARGTYPES_23 CPP98VARIADICTEMPLATE_ARGTYPES_22, typename T23 +#define CPP98VARIADICTEMPLATE_ARGTYPES_24 CPP98VARIADICTEMPLATE_ARGTYPES_23, typename T24 + +#define CPP98VARIADICTEMPLATE_ARGTYPES_CALL_0(...) +#define CPP98VARIADICTEMPLATE_ARGTYPES_CALL_1(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_ARGTYPES_1 end +#define CPP98VARIADICTEMPLATE_ARGTYPES_CALL_2(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_ARGTYPES_2 end +#define CPP98VARIADICTEMPLATE_ARGTYPES_CALL_3(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_ARGTYPES_3 end +#define CPP98VARIADICTEMPLATE_ARGTYPES_CALL_4(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_ARGTYPES_4 end +#define CPP98VARIADICTEMPLATE_ARGTYPES_CALL_5(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_ARGTYPES_5 end +#define CPP98VARIADICTEMPLATE_ARGTYPES_CALL_6(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_ARGTYPES_6 end +#define CPP98VARIADICTEMPLATE_ARGTYPES_CALL_7(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_ARGTYPES_7 end +#define CPP98VARIADICTEMPLATE_ARGTYPES_CALL_8(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_ARGTYPES_8 end +#define CPP98VARIADICTEMPLATE_ARGTYPES_CALL_9(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_ARGTYPES_9 end +#define CPP98VARIADICTEMPLATE_ARGTYPES_CALL_10(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_ARGTYPES_10 end +#define CPP98VARIADICTEMPLATE_ARGTYPES_CALL_11(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_ARGTYPES_11 end +#define CPP98VARIADICTEMPLATE_ARGTYPES_CALL_12(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_ARGTYPES_12 end +#define CPP98VARIADICTEMPLATE_ARGTYPES_CALL_13(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_ARGTYPES_13 end +#define CPP98VARIADICTEMPLATE_ARGTYPES_CALL_14(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_ARGTYPES_14 end +#define CPP98VARIADICTEMPLATE_ARGTYPES_CALL_15(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_ARGTYPES_15 end +#define CPP98VARIADICTEMPLATE_ARGTYPES_CALL_16(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_ARGTYPES_16 end +#define CPP98VARIADICTEMPLATE_ARGTYPES_CALL_17(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_ARGTYPES_17 end +#define CPP98VARIADICTEMPLATE_ARGTYPES_CALL_18(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_ARGTYPES_18 end +#define CPP98VARIADICTEMPLATE_ARGTYPES_CALL_19(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_ARGTYPES_19 end +#define CPP98VARIADICTEMPLATE_ARGTYPES_CALL_20(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_ARGTYPES_20 end +#define CPP98VARIADICTEMPLATE_ARGTYPES_CALL_21(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_ARGTYPES_21 end +#define CPP98VARIADICTEMPLATE_ARGTYPES_CALL_22(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_ARGTYPES_22 end +#define CPP98VARIADICTEMPLATE_ARGTYPES_CALL_23(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_ARGTYPES_23 end +#define CPP98VARIADICTEMPLATE_ARGTYPES_CALL_24(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_ARGTYPES_24 end + +#define CPP98VARIADICTEMPLATE_VARARGS_1 const T1& v1 +#define CPP98VARIADICTEMPLATE_VARARGS_2 CPP98VARIADICTEMPLATE_VARARGS_1, const T2& v2 +#define CPP98VARIADICTEMPLATE_VARARGS_3 CPP98VARIADICTEMPLATE_VARARGS_2, const T3& v3 +#define CPP98VARIADICTEMPLATE_VARARGS_4 CPP98VARIADICTEMPLATE_VARARGS_3, const T4& v4 +#define CPP98VARIADICTEMPLATE_VARARGS_5 CPP98VARIADICTEMPLATE_VARARGS_4, const T5& v5 +#define CPP98VARIADICTEMPLATE_VARARGS_6 CPP98VARIADICTEMPLATE_VARARGS_5, const T6& v6 +#define CPP98VARIADICTEMPLATE_VARARGS_7 CPP98VARIADICTEMPLATE_VARARGS_6, const T7& v7 +#define CPP98VARIADICTEMPLATE_VARARGS_8 CPP98VARIADICTEMPLATE_VARARGS_7, const T8& v8 +#define CPP98VARIADICTEMPLATE_VARARGS_9 CPP98VARIADICTEMPLATE_VARARGS_8, const T9& v9 +#define CPP98VARIADICTEMPLATE_VARARGS_10 CPP98VARIADICTEMPLATE_VARARGS_9, const T10& v10 +#define CPP98VARIADICTEMPLATE_VARARGS_11 CPP98VARIADICTEMPLATE_VARARGS_10, const T11& v11 +#define CPP98VARIADICTEMPLATE_VARARGS_12 CPP98VARIADICTEMPLATE_VARARGS_11, const T12& v12 +#define CPP98VARIADICTEMPLATE_VARARGS_13 CPP98VARIADICTEMPLATE_VARARGS_12, const T13& v13 +#define CPP98VARIADICTEMPLATE_VARARGS_14 CPP98VARIADICTEMPLATE_VARARGS_13, const T14& v14 +#define CPP98VARIADICTEMPLATE_VARARGS_15 CPP98VARIADICTEMPLATE_VARARGS_14, const T15& v15 +#define CPP98VARIADICTEMPLATE_VARARGS_16 CPP98VARIADICTEMPLATE_VARARGS_15, const T16& v16 +#define CPP98VARIADICTEMPLATE_VARARGS_17 CPP98VARIADICTEMPLATE_VARARGS_16, const T17& v17 +#define CPP98VARIADICTEMPLATE_VARARGS_18 CPP98VARIADICTEMPLATE_VARARGS_17, const T18& v18 +#define CPP98VARIADICTEMPLATE_VARARGS_19 CPP98VARIADICTEMPLATE_VARARGS_18, const T19& v19 +#define CPP98VARIADICTEMPLATE_VARARGS_20 CPP98VARIADICTEMPLATE_VARARGS_19, const T20& v20 +#define CPP98VARIADICTEMPLATE_VARARGS_21 CPP98VARIADICTEMPLATE_VARARGS_20, const T21& v21 +#define CPP98VARIADICTEMPLATE_VARARGS_22 CPP98VARIADICTEMPLATE_VARARGS_21, const T22& v22 +#define CPP98VARIADICTEMPLATE_VARARGS_23 CPP98VARIADICTEMPLATE_VARARGS_22, const T23& v23 +#define CPP98VARIADICTEMPLATE_VARARGS_24 CPP98VARIADICTEMPLATE_VARARGS_23, const T24& v24 + +#define CPP98VARIADICTEMPLATE_VARARGS_CALL_0(...) +#define CPP98VARIADICTEMPLATE_VARARGS_CALL_1(...) __VA_ARGS__ CPP98VARIADICTEMPLATE_VARARGS_1 +#define CPP98VARIADICTEMPLATE_VARARGS_CALL_2(...) __VA_ARGS__ CPP98VARIADICTEMPLATE_VARARGS_2 +#define CPP98VARIADICTEMPLATE_VARARGS_CALL_3(...) __VA_ARGS__ CPP98VARIADICTEMPLATE_VARARGS_3 +#define CPP98VARIADICTEMPLATE_VARARGS_CALL_4(...) __VA_ARGS__ CPP98VARIADICTEMPLATE_VARARGS_4 +#define CPP98VARIADICTEMPLATE_VARARGS_CALL_5(...) __VA_ARGS__ CPP98VARIADICTEMPLATE_VARARGS_5 +#define CPP98VARIADICTEMPLATE_VARARGS_CALL_6(...) __VA_ARGS__ CPP98VARIADICTEMPLATE_VARARGS_6 +#define CPP98VARIADICTEMPLATE_VARARGS_CALL_7(...) __VA_ARGS__ CPP98VARIADICTEMPLATE_VARARGS_7 +#define CPP98VARIADICTEMPLATE_VARARGS_CALL_8(...) __VA_ARGS__ CPP98VARIADICTEMPLATE_VARARGS_8 +#define CPP98VARIADICTEMPLATE_VARARGS_CALL_9(...) __VA_ARGS__ CPP98VARIADICTEMPLATE_VARARGS_9 +#define CPP98VARIADICTEMPLATE_VARARGS_CALL_10(...) __VA_ARGS__ CPP98VARIADICTEMPLATE_VARARGS_10 +#define CPP98VARIADICTEMPLATE_VARARGS_CALL_11(...) __VA_ARGS__ CPP98VARIADICTEMPLATE_VARARGS_11 +#define CPP98VARIADICTEMPLATE_VARARGS_CALL_12(...) __VA_ARGS__ CPP98VARIADICTEMPLATE_VARARGS_12 +#define CPP98VARIADICTEMPLATE_VARARGS_CALL_13(...) __VA_ARGS__ CPP98VARIADICTEMPLATE_VARARGS_13 +#define CPP98VARIADICTEMPLATE_VARARGS_CALL_14(...) __VA_ARGS__ CPP98VARIADICTEMPLATE_VARARGS_14 +#define CPP98VARIADICTEMPLATE_VARARGS_CALL_15(...) __VA_ARGS__ CPP98VARIADICTEMPLATE_VARARGS_15 +#define CPP98VARIADICTEMPLATE_VARARGS_CALL_16(...) __VA_ARGS__ CPP98VARIADICTEMPLATE_VARARGS_16 +#define CPP98VARIADICTEMPLATE_VARARGS_CALL_17(...) __VA_ARGS__ CPP98VARIADICTEMPLATE_VARARGS_17 +#define CPP98VARIADICTEMPLATE_VARARGS_CALL_18(...) __VA_ARGS__ CPP98VARIADICTEMPLATE_VARARGS_18 +#define CPP98VARIADICTEMPLATE_VARARGS_CALL_19(...) __VA_ARGS__ CPP98VARIADICTEMPLATE_VARARGS_19 +#define CPP98VARIADICTEMPLATE_VARARGS_CALL_20(...) __VA_ARGS__ CPP98VARIADICTEMPLATE_VARARGS_20 +#define CPP98VARIADICTEMPLATE_VARARGS_CALL_21(...) __VA_ARGS__ CPP98VARIADICTEMPLATE_VARARGS_21 +#define CPP98VARIADICTEMPLATE_VARARGS_CALL_22(...) __VA_ARGS__ CPP98VARIADICTEMPLATE_VARARGS_22 +#define CPP98VARIADICTEMPLATE_VARARGS_CALL_23(...) __VA_ARGS__ CPP98VARIADICTEMPLATE_VARARGS_23 +#define CPP98VARIADICTEMPLATE_VARARGS_CALL_24(...) __VA_ARGS__ CPP98VARIADICTEMPLATE_VARARGS_24 + +#define CPP98VARIADICTEMPLATE_PASSARGS_1 v1 +#define CPP98VARIADICTEMPLATE_PASSARGS_2 CPP98VARIADICTEMPLATE_PASSARGS_1, v2 +#define CPP98VARIADICTEMPLATE_PASSARGS_3 CPP98VARIADICTEMPLATE_PASSARGS_2, v3 +#define CPP98VARIADICTEMPLATE_PASSARGS_4 CPP98VARIADICTEMPLATE_PASSARGS_3, v4 +#define CPP98VARIADICTEMPLATE_PASSARGS_5 CPP98VARIADICTEMPLATE_PASSARGS_4, v5 +#define CPP98VARIADICTEMPLATE_PASSARGS_6 CPP98VARIADICTEMPLATE_PASSARGS_5, v6 +#define CPP98VARIADICTEMPLATE_PASSARGS_7 CPP98VARIADICTEMPLATE_PASSARGS_6, v7 +#define CPP98VARIADICTEMPLATE_PASSARGS_8 CPP98VARIADICTEMPLATE_PASSARGS_7, v8 +#define CPP98VARIADICTEMPLATE_PASSARGS_9 CPP98VARIADICTEMPLATE_PASSARGS_8, v9 +#define CPP98VARIADICTEMPLATE_PASSARGS_10 CPP98VARIADICTEMPLATE_PASSARGS_9, v10 +#define CPP98VARIADICTEMPLATE_PASSARGS_11 CPP98VARIADICTEMPLATE_PASSARGS_10, v11 +#define CPP98VARIADICTEMPLATE_PASSARGS_12 CPP98VARIADICTEMPLATE_PASSARGS_11, v12 +#define CPP98VARIADICTEMPLATE_PASSARGS_13 CPP98VARIADICTEMPLATE_PASSARGS_12, v13 +#define CPP98VARIADICTEMPLATE_PASSARGS_14 CPP98VARIADICTEMPLATE_PASSARGS_13, v14 +#define CPP98VARIADICTEMPLATE_PASSARGS_15 CPP98VARIADICTEMPLATE_PASSARGS_14, v15 +#define CPP98VARIADICTEMPLATE_PASSARGS_16 CPP98VARIADICTEMPLATE_PASSARGS_15, v16 +#define CPP98VARIADICTEMPLATE_PASSARGS_17 CPP98VARIADICTEMPLATE_PASSARGS_16, v17 +#define CPP98VARIADICTEMPLATE_PASSARGS_18 CPP98VARIADICTEMPLATE_PASSARGS_17, v18 +#define CPP98VARIADICTEMPLATE_PASSARGS_19 CPP98VARIADICTEMPLATE_PASSARGS_18, v19 +#define CPP98VARIADICTEMPLATE_PASSARGS_20 CPP98VARIADICTEMPLATE_PASSARGS_19, v20 +#define CPP98VARIADICTEMPLATE_PASSARGS_21 CPP98VARIADICTEMPLATE_PASSARGS_20, v21 +#define CPP98VARIADICTEMPLATE_PASSARGS_22 CPP98VARIADICTEMPLATE_PASSARGS_21, v22 +#define CPP98VARIADICTEMPLATE_PASSARGS_23 CPP98VARIADICTEMPLATE_PASSARGS_22, v23 +#define CPP98VARIADICTEMPLATE_PASSARGS_24 CPP98VARIADICTEMPLATE_PASSARGS_23, v24 + +#define CPP98VARIADICTEMPLATE_PASSARGS_CALL_0(...) +#define CPP98VARIADICTEMPLATE_PASSARGS_CALL_1(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_PASSARGS_1 end +#define CPP98VARIADICTEMPLATE_PASSARGS_CALL_2(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_PASSARGS_2 end +#define CPP98VARIADICTEMPLATE_PASSARGS_CALL_3(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_PASSARGS_3 end +#define CPP98VARIADICTEMPLATE_PASSARGS_CALL_4(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_PASSARGS_4 end +#define CPP98VARIADICTEMPLATE_PASSARGS_CALL_5(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_PASSARGS_5 end +#define CPP98VARIADICTEMPLATE_PASSARGS_CALL_6(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_PASSARGS_6 end +#define CPP98VARIADICTEMPLATE_PASSARGS_CALL_7(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_PASSARGS_7 end +#define CPP98VARIADICTEMPLATE_PASSARGS_CALL_8(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_PASSARGS_8 end +#define CPP98VARIADICTEMPLATE_PASSARGS_CALL_9(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_PASSARGS_9 end +#define CPP98VARIADICTEMPLATE_PASSARGS_CALL_10(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_PASSARGS_10 end +#define CPP98VARIADICTEMPLATE_PASSARGS_CALL_11(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_PASSARGS_11 end +#define CPP98VARIADICTEMPLATE_PASSARGS_CALL_12(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_PASSARGS_12 end +#define CPP98VARIADICTEMPLATE_PASSARGS_CALL_13(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_PASSARGS_13 end +#define CPP98VARIADICTEMPLATE_PASSARGS_CALL_14(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_PASSARGS_14 end +#define CPP98VARIADICTEMPLATE_PASSARGS_CALL_15(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_PASSARGS_15 end +#define CPP98VARIADICTEMPLATE_PASSARGS_CALL_16(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_PASSARGS_16 end +#define CPP98VARIADICTEMPLATE_PASSARGS_CALL_17(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_PASSARGS_17 end +#define CPP98VARIADICTEMPLATE_PASSARGS_CALL_18(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_PASSARGS_18 end +#define CPP98VARIADICTEMPLATE_PASSARGS_CALL_19(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_PASSARGS_19 end +#define CPP98VARIADICTEMPLATE_PASSARGS_CALL_20(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_PASSARGS_20 end +#define CPP98VARIADICTEMPLATE_PASSARGS_CALL_21(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_PASSARGS_21 end +#define CPP98VARIADICTEMPLATE_PASSARGS_CALL_22(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_PASSARGS_22 end +#define CPP98VARIADICTEMPLATE_PASSARGS_CALL_23(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_PASSARGS_23 end +#define CPP98VARIADICTEMPLATE_PASSARGS_CALL_24(begin,end,...) begin __VA_ARGS__ CPP98VARIADICTEMPLATE_PASSARGS_24 end #define CPP98VARIADICTEMPLATE_FOREACH_ARGNUM(m) \ - m(0) m(1) m(2) m(3) m(4) m(5) m(6) m(7) m(8) m(9) m(10) m(11) m(12) m(13) m(14) m(15) m(16) + m(0) m(1) m(2) m(3) m(4) m(5) m(6) m(7) m(8) m(9) m(10) m(11) m(12) m(13) m(14) \ + m(15) m(16) m(17) m(18) m(19) m(20) m(21) m(22) m(23) //[[[end]]]