From d6a44ffd0021ab0ca23e5e6243ecacb4e4b17ef1 Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Fri, 27 Jul 2012 13:47:24 +0200 Subject: [PATCH] skeletons: b4_dollar_pushdef and popdef to simpify complex definitions M4 is really making it uselessly hard to define macros that define macros. * data/c.m4 (b4_dollar_pushdef, b4_dollar_popdef): New. Use it. --- data/c.m4 | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/data/c.m4 b/data/c.m4 index 3954613b..12794e06 100644 --- a/data/c.m4 +++ b/data/c.m4 @@ -427,6 +427,21 @@ m4_define([b4_dollar_dollar_], [(*$1)])], [($1->$2)])]) +# b4_dollar_pushdef(VALUE, DEFAULT-FIELD, LOCATION) +# b4_dollar_popdef +# ------------------------------------------------- +# Define b4_dollar_dollar for VALUE and DEFAULT-FIELD, +# and b4_at_dollar for LOCATION. +m4_define([b4_dollar_pushdef], +[m4_pushdef([b4_dollar_dollar], + [b4_dollar_dollar_([$1], m4_dquote($][1), [$2])])dnl +m4_pushdef([b4_at_dollar], [(*yylocationp)])dnl +]) +m4_define([b4_dollar_popdef], +[m4_popdef([b4_at_dollar])dnl +m4_popdef([b4_dollar_dollar])dnl +]) + # b4_symbol_actions(FILENAME, LINENO, # SYMBOL-TAG, SYMBOL-NUM, @@ -437,16 +452,13 @@ m4_define([b4_dollar_dollar_], # Define b4_dollar_dollar([TYPE-NAME]), and b4_at_dollar, which are # invoked where $$ and @$ were specified by the user. m4_define([b4_symbol_actions], -[m4_pushdef([b4_dollar_dollar], - [b4_dollar_dollar_([yyvaluep], m4_dquote($][1), [$6])])dnl -m4_pushdef([b4_at_dollar], [(*yylocationp)])dnl +[b4_dollar_pushdef([yyvaluep], [$6], [(*yylocationp)])dnl case $4: /* $3 */ b4_syncline([$2], [$1]) $5; b4_syncline([@oline@], [@ofile@]) break; -m4_popdef([b4_at_dollar])dnl -m4_popdef([b4_dollar_dollar])dnl +b4_dollar_popdef[]dnl ]) -- 2.45.2