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