From: Akim Demaille Date: Thu, 12 Oct 2000 07:38:42 +0000 (+0000) Subject: * libm4.m4 (m4_dumpdefs, _m4_dumpdefs_up, _m4_dumpdefs_down): New X-Git-Tag: autoconf-2.50~587 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e2e7203a0a00f42e74626af21e1f95d86b5e15f0;p=thirdparty%2Fautoconf.git * libm4.m4 (m4_dumpdefs, _m4_dumpdefs_up, _m4_dumpdefs_down): New macros. --- diff --git a/ChangeLog b/ChangeLog index 42605526c..37fe6bc60 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2000-10-12 Akim Demaille + + * libm4.m4 (m4_dumpdefs, _m4_dumpdefs_up, _m4_dumpdefs_down): New + macros. + 2000-10-11 Pavel Roskin * tests/atgeneral.m4 (AT_CHECK): Make sure that $? is set to 0 diff --git a/libm4.m4 b/libm4.m4 index 8b6d31888..7fd7b813a 100644 --- a/libm4.m4 +++ b/libm4.m4 @@ -276,17 +276,46 @@ define([m4_match], regexp([$1], [$2]), -1, [m4_match([$1], m4_shiftn(3, $@))], [$3])]) + # m4_do(STRING, ...) # ------------------ # This macro invokes all its arguments (in sequence, of course). It is # useful for making your macros more structured and readable by dropping # unecessary dnl's and have the macros indented properly. - define([m4_do], [ifelse($#, 0, [], $#, 1, [$1], [$1[]m4_do(m4_shift($@))])]) + +# _m4_dumpdefs_up(NAME) +# --------------------- +define([_m4_dumpdefs_up], +[ifdef([$1], + [pushdef([_m4_dumpdefs], defn([$1]))dnl +dumpdef([$1])dnl +popdef([$1])dnl +_m4_dumpdefs_up([$1])])]) + + +# _m4_dumpdefs_down(NAME) +# ----------------------- +define([_m4_dumpdefs_down], +[ifdef([_m4_dumpdefs], + [pushdef([$1], defn([_m4_dumpdefs]))dnl +popdef([_m4_dumpdefs])dnl +_m4_dumpdefs_down([$1])])]) + + +# m4_dumpdefs(NAME) +# ----------------- +# Similar to `dumpdef(NAME)', but if NAME was pushdef'ed, display its +# value stack (most recent displayed first). +define([m4_dumpdefs], +[_m4_dumpdefs_up([$1])dnl +_m4_dumpdefs_down([$1])]) + + ## --------------------- ## ## Implementing m4 loops ## ## --------------------- ##