summaryrefslogtreecommitdiff
path: root/examples/forloop3.m4
diff options
context:
space:
mode:
Diffstat (limited to 'examples/forloop3.m4')
-rw-r--r--examples/forloop3.m413
1 files changed, 13 insertions, 0 deletions
diff --git a/examples/forloop3.m4 b/examples/forloop3.m4
new file mode 100644
index 0000000..98db20f
--- /dev/null
+++ b/examples/forloop3.m4
@@ -0,0 +1,13 @@
+divert(`-1')
+# forloop_arg(from, to, macro) - invoke MACRO(value) for
+# each value between FROM and TO, without define overhead
+define(`forloop_arg', `ifelse(eval(`($1) <= ($2)'), `1',
+ `_forloop(`$1', eval(`$2'), `$3(', `)')')')
+# forloop(var, from, to, stmt) - refactored to share code
+define(`forloop', `ifelse(eval(`($2) <= ($3)'), `1',
+ `pushdef(`$1')_forloop(eval(`$2'), eval(`$3'),
+ `define(`$1',', `)$4')popdef(`$1')')')
+define(`_forloop',
+ `$3`$1'$4`'ifelse(`$1', `$2', `',
+ `$0(incr(`$1'), `$2', `$3', `$4')')')
+divert`'dnl