diff options
author | Eric Blake <ebb9@byu.net> | 2007-11-27 10:15:48 -0700 |
---|---|---|
committer | Eric Blake <ebb9@byu.net> | 2007-11-27 19:10:43 -0700 |
commit | 5d2ce0f461d5d77cf098fefddaa2ac9c15a95a4b (patch) | |
tree | afa5ab7eec0a35ddbc19d075727021ded759a14c /modules/gnu.c | |
parent | 14b2ffbb82eb22cd36b1703a5501ee87ea51c45c (diff) | |
download | m4-5d2ce0f461d5d77cf098fefddaa2ac9c15a95a4b.tar.gz |
Stage 2: use accessors, not direct reference, into argv.
* m4/m4private.h (m4_arg_argc): New fast accessor.
* m4/m4module.h (m4_arg_argc, m4_arg_symbol, m4_is_arg_text)
(m4_is_arg_func, m4_arg_text, m4_arg_len, m4_arg_func): New
prototypes.
(m4_builtin_func, M4BUILTIN, M4BUILTIN_HANDLER, m4_dump_args)
(m4_macro_call): Make argc unsigned.
(M4ARG): Use new accessors.
* modules/m4.c (define, pushdef): Likewise.
(undefine, popdef, ifelse, m4_dump_symbols, defn, undivert)
(traceon, traceoff): Make argc unsigned.
* modules/m4.h (m4_dump_symbols_func): Likewise.
* modules/evalparse.c (m4_evaluate): Likewise.
* modules/gnu.c (builtin, indir): Use new accessors.
(changesyntax): Make argc unsigned.
* modules/perl.c (perleval): Likewise.
* m4/utility.c (m4_dump_args): Use new accessors.
* m4/macro.c (trace_pre): Likewise.
(m4_arg_symbol, m4_arg_argc, m4_is_arg_text, m4_is_arg_func)
(m4_arg_text, m4_arg_len, m4_arg_func): New functions.
(expand_macro, trace_pre, trace_post, m4_macro_call): Update argc
usage.
Signed-off-by: Eric Blake <ebb9@byu.net>
Diffstat (limited to 'modules/gnu.c')
-rw-r--r-- | modules/gnu.c | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/modules/gnu.c b/modules/gnu.c index 6fd66234..70c7cf60 100644 --- a/modules/gnu.c +++ b/modules/gnu.c @@ -409,14 +409,14 @@ M4BUILTIN_HANDLER (builtin) const char *name; m4_symbol_value *value; - if (!m4_is_symbol_value_text (argv->array[1 - 1])) + if (!m4_is_arg_text (argv, 1)) { - if (m4_is_symbol_value_func (argv->array[1 - 1]) - && m4_get_symbol_value_func (argv->array[1 - 1]) == builtin_builtin) + assert (m4_is_arg_func (argv, 1)); + if (m4_arg_func (argv, 1) == builtin_builtin) { if (m4_bad_argc (context, argc, me, 2, 2, false)) return; - if (!m4_is_symbol_value_text (argv->array[2 - 1])) + if (!m4_is_arg_text (argv, 2)) { m4_warn (context, 0, me, _("invalid macro name ignored")); return; @@ -447,8 +447,9 @@ M4BUILTIN_HANDLER (builtin) bp->min_args, bp->max_args, (bp->flags & M4_BUILTIN_SIDE_EFFECT) != 0)) { - int i; - /* TODO - make use of $@ reference */ + unsigned int i; + /* TODO - make use of $@ reference. */ + /* TODO - add accessor that performs this construction. */ m4_macro_args *new_argv; new_argv = xmalloc (offsetof (m4_macro_args, array) + ((argc - 2) * sizeof (m4_symbol_value *))); @@ -460,8 +461,9 @@ M4BUILTIN_HANDLER (builtin) (argc - 2) * sizeof (m4_symbol_value *)); if ((bp->flags & M4_BUILTIN_GROKS_MACRO) == 0) for (i = 2; i < argc; i++) - if (!m4_is_symbol_value_text (argv->array[i - 1])) - m4_set_symbol_value_text (new_argv->array[i - 2], ""); + if (!m4_is_arg_text (argv, i)) + m4_set_symbol_value_text (m4_arg_symbol (new_argv, i - 1), + ""); bp->func (context, obs, argc - 1, new_argv); free (new_argv); } @@ -512,7 +514,7 @@ M4BUILTIN_HANDLER (changesyntax) if (m4_expand_ranges) { - int i; + unsigned int i; for (i = 1; i < argc; i++) { const char *spec = M4ARG (i); @@ -679,7 +681,7 @@ M4BUILTIN_HANDLER (format) M4BUILTIN_HANDLER (indir) { const char *me = M4ARG (0); - if (!m4_is_symbol_value_text (argv->array[1 - 1])) + if (!m4_is_arg_text (argv, 1)) m4_warn (context, 0, me, _("invalid macro name ignored")); else { @@ -690,8 +692,9 @@ M4BUILTIN_HANDLER (indir) m4_warn (context, 0, me, _("undefined macro `%s'"), name); else { - int i; - /* TODO - make use of $@ reference */ + unsigned int i; + /* TODO - make use of $@ reference. */ + /* TODO - add accessor that performs this construction. */ m4_macro_args *new_argv; new_argv = xmalloc (offsetof (m4_macro_args, array) + ((argc - 2) * sizeof (m4_symbol_value *))); @@ -703,8 +706,8 @@ M4BUILTIN_HANDLER (indir) (argc - 2) * sizeof (m4_symbol_value *)); if (!m4_symbol_groks_macro (symbol)) for (i = 2; i < argc; i++) - if (!m4_is_symbol_value_text (argv->array[i - 1])) - m4_set_symbol_value_text (new_argv->array[i - 2], ""); + if (!m4_is_arg_text (argv, i)) + m4_set_symbol_value_text (m4_arg_symbol (new_argv, i - 1), ""); m4_macro_call (context, m4_get_symbol_value (symbol), obs, argc - 1, new_argv); free (new_argv); |