summaryrefslogtreecommitdiff
path: root/examples/stack.m4
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@baserock.org>2013-09-22 07:04:10 +0000
committer <>2015-02-02 12:02:31 +0000
commit23c11479b3ad787adc7a651ee0c4347839e47723 (patch)
tree3aa9e1125da84f7e3bd764bbff577c42a766508b /examples/stack.m4
downloadm4-tarball-master.tar.gz
Imported from /home/lorry/working-area/delta_m4-tarball/m4-1.4.17.tar.xz.HEADm4-1.4.17master
Diffstat (limited to 'examples/stack.m4')
-rw-r--r--examples/stack.m416
1 files changed, 16 insertions, 0 deletions
diff --git a/examples/stack.m4 b/examples/stack.m4
new file mode 100644
index 0000000..c1b9833
--- /dev/null
+++ b/examples/stack.m4
@@ -0,0 +1,16 @@
+divert(`-1')
+# stack_foreach(macro, action)
+# Invoke ACTION with a single argument of each definition
+# from the definition stack of MACRO, starting with the oldest.
+define(`stack_foreach',
+`_stack_reverse(`$1', `tmp-$1')'dnl
+`_stack_reverse(`tmp-$1', `$1', `$2(defn(`$1'))')')
+# stack_foreach_lifo(macro, action)
+# Invoke ACTION with a single argument of each definition
+# from the definition stack of MACRO, starting with the newest.
+define(`stack_foreach_lifo',
+`_stack_reverse(`$1', `tmp-$1', `$2(defn(`$1'))')'dnl
+`_stack_reverse(`tmp-$1', `$1')')
+define(`_stack_reverse',
+`ifdef(`$1', `pushdef(`$2', defn(`$1'))$3`'popdef(`$1')$0($@)')')
+divert`'dnl