summaryrefslogtreecommitdiff
path: root/examples/redis-unstable/utils/generate-fmtargs.py
diff options
context:
space:
mode:
Diffstat (limited to 'examples/redis-unstable/utils/generate-fmtargs.py')
-rwxr-xr-xexamples/redis-unstable/utils/generate-fmtargs.py22
1 files changed, 22 insertions, 0 deletions
diff --git a/examples/redis-unstable/utils/generate-fmtargs.py b/examples/redis-unstable/utils/generate-fmtargs.py
new file mode 100755
index 0000000..1eced02
--- /dev/null
+++ b/examples/redis-unstable/utils/generate-fmtargs.py
@@ -0,0 +1,22 @@
+#!/usr/bin/env python3
+
+# Outputs the generated part of src/fmtargs.h
+MAX_ARGS = 160
+
+import os
+print("/* Everything below this line is automatically generated by")
+print(" * %s. Do not manually edit. */\n" % os.path.basename(__file__))
+
+print('#define ARG_N(' + ', '.join(['_' + str(i) for i in range(1, MAX_ARGS + 1, 1)]) + ', N, ...) N')
+
+print('\n#define RSEQ_N() ' + ', '.join([str(i) for i in range(MAX_ARGS, -1, -1)]))
+
+print('\n#define COMPACT_FMT_2(fmt, value) fmt')
+for i in range(4, MAX_ARGS + 1, 2):
+ print('#define COMPACT_FMT_{}(fmt, value, ...) fmt COMPACT_FMT_{}(__VA_ARGS__)'.format(i, i - 2))
+
+print('\n#define COMPACT_VALUES_2(fmt, value) value')
+for i in range(4, MAX_ARGS + 1, 2):
+ print('#define COMPACT_VALUES_{}(fmt, value, ...) value, COMPACT_VALUES_{}(__VA_ARGS__)'.format(i, i - 2))
+
+print("\n#endif")