summaryrefslogtreecommitdiff
path: root/doc/examples/forloop2.m4
diff options
context:
space:
mode:
authorGary V. Vaughan <gary@gnu.org>2013-09-22 09:49:06 +0700
committerGary V. Vaughan <gary@gnu.org>2013-09-22 09:49:06 +0700
commit578bd023ea85d57d8488b8cb88265fbe3a3071e4 (patch)
treecc5a6088277c1a747041f5969cf21d7fca2ca4f1 /doc/examples/forloop2.m4
parent1eacf10370529972a7407bdbb368f5f69f87a1b8 (diff)
downloadm4-578bd023ea85d57d8488b8cb88265fbe3a3071e4.tar.gz
configury: move usage examples into doc subdirectory.
* examples: Move from here... * doc/examples: ...to here. * Makefile.am (EXTRA_DIST, dist_pkgdata_DATA): Adjust. * README, doc/m4.texi, tests/builtins.at, tests/generate.awk, tests/others.at: Likewise. Signed-off-by: Gary V. Vaughan <gary@gnu.org>
Diffstat (limited to 'doc/examples/forloop2.m4')
-rw-r--r--doc/examples/forloop2.m412
1 files changed, 12 insertions, 0 deletions
diff --git a/doc/examples/forloop2.m4 b/doc/examples/forloop2.m4
new file mode 100644
index 00000000..b7154e86
--- /dev/null
+++ b/doc/examples/forloop2.m4
@@ -0,0 +1,12 @@
+divert(`-1')
+# forloop(var, from, to, stmt) - improved version:
+# works even if VAR is not a strict macro name
+# performs sanity check that FROM is larger than TO
+# allows complex numerical expressions in TO and FROM
+define(`forloop', `ifelse(eval(`($2) <= ($3)'), `1',
+ `pushdef(`$1')_$0(`$1', eval(`$2'),
+ eval(`$3'), `$4')popdef(`$1')')')
+define(`_forloop',
+ `define(`$1', `$2')$4`'ifelse(`$2', `$3', `',
+ `$0(`$1', incr(`$2'), `$3', `$4')')')
+divert`'dnl