summaryrefslogtreecommitdiff
path: root/examples/stack_sep.m4
blob: 767d15e232c58ed8a5d13a3334ea797a23a58091 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
divert(`-1')
# stack_foreach_sep(macro, pre, post, sep)
# Invoke PRE`'defn`'POST with a single argument of each definition
# from the definition stack of MACRO, starting with the oldest, and
# separated by SEP between definitions.
define(`stack_foreach_sep',
`_stack_reverse_sep(`$1', `tmp-$1')'dnl
`_stack_reverse_sep(`tmp-$1', `$1', `$2`'defn(`$1')$3', `$4`'')')
# stack_foreach_sep_lifo(macro, pre, post, sep)
# Like stack_foreach_sep, but starting with the newest definition.
define(`stack_foreach_sep_lifo',
`_stack_reverse_sep(`$1', `tmp-$1', `$2`'defn(`$1')$3', `$4`'')'dnl
`_stack_reverse_sep(`tmp-$1', `$1')')
define(`_stack_reverse_sep',
`ifdef(`$1', `pushdef(`$2', defn(`$1'))$3`'popdef(`$1')$0(
  `$1', `$2', `$4$3')')')
divert`'dnl