]> Savannah Git Hosting - m4.git/commitdiff

Savannah Git Hosting - m4.git/commitdiff

git git@sv / m4.git / commitdiff
? search:
summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 14b2ffb)
Stage 2: use accessors, not direct reference, into argv.
2007年11月27日 17:15:48 +0000 (10:15 -0700)
2007年11月28日 02:10:43 +0000 (19:10 -0700)
* 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>

diff --git a/ChangeLog b/ChangeLog
index 2fbe4ee2e8ba8ba9185d14d54b39e0ba599765aa..7cdf53b2026d8f1e34c48d74de824865313c5545 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,28 @@
+2007年11月27日 Eric Blake <ebb9@byu.net>
+
+ 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.
+
2007年11月24日 Eric Blake <ebb9@byu.net>
Stage 1: convert m4_symbol_value** into new object.
diff --git a/m4/m4module.h b/m4/m4module.h
index 3f60cba05385a544f1de1fe6192c42a895f74595..b0e9405c59416ca8138a8bd411884086baa0683e 100644 (file)
--- a/m4/m4module.h
+++ b/m4/m4module.h
@@ -41,7 +41,8 @@ typedef struct m4_macro_args m4_macro_args;
typedef struct obstack m4_obstack;
-typedef void m4_builtin_func (m4 *, m4_obstack *, int, m4_macro_args *);
+typedef void m4_builtin_func (m4 *, m4_obstack *, unsigned int,
+ m4_macro_args *);
/* The value of m4_builtin flags is built from these: */
enum {
@@ -97,11 +98,11 @@ struct m4_macro_args
#define M4BUILTIN(name) \
static void CONC (builtin_, name) \
- (m4 *context, m4_obstack *obs, int argc, m4_macro_args *argv);
+ (m4 *context, m4_obstack *obs, unsigned int argc, m4_macro_args *argv);
#define M4BUILTIN_HANDLER(name) \
static void CONC (builtin_, name) \
- (m4 *context, m4_obstack *obs, int argc, m4_macro_args *argv)
+ (m4 *context, m4_obstack *obs, unsigned int argc, m4_macro_args *argv)
#define M4INIT_HANDLER(name) \
void CONC (name, CONC (_LTX_, m4_init_module)) \
@@ -119,14 +120,14 @@ struct m4_macro_args
CONC (S, _func) *S = (CONC (S, _func) *) \
m4_module_import (context, STR (M), STR (S), obs)
-#define M4ARG(i) \
- ((i) == 0 ? argv->argv0 \
- : argv->argc > (i) ? m4_get_symbol_value_text (argv->array[(i) - 1]) : "")
+/* Grab the text contents of argument I, or abort if the argument is
+ not text. Assumes that `m4_macro_args *argv' is in scope. */
+#define M4ARG(i) m4_arg_text (argv, i)
extern bool m4_bad_argc (m4 *, int, const char *,
unsigned int, unsigned int, bool);
extern bool m4_numeric_arg (m4 *, const char *, const char *, int *);
-extern void m4_dump_args (m4 *, m4_obstack *, int,
+extern void m4_dump_args (m4 *, m4_obstack *, unsigned int,
m4_macro_args *, const char *, bool);
extern bool m4_parse_truth_arg (m4 *, const char *, const char *, bool);
@@ -306,10 +307,17 @@ extern const m4_builtin *m4_builtin_find_by_func (m4_module *,
\f
/* --- MACRO MANAGEMENT --- */
-extern void m4_macro_expand_input (m4 *);
-extern void m4_macro_call (m4 *, m4_symbol_value *,
- m4_obstack *, int, m4_macro_args *);
-
+extern void m4_macro_expand_input (m4 *);
+extern void m4_macro_call (m4 *, m4_symbol_value *,
+ m4_obstack *, unsigned int,
+ m4_macro_args *);
+extern unsigned int m4_arg_argc (m4_macro_args *);
+extern m4_symbol_value *m4_arg_symbol (m4_macro_args *, unsigned int);
+extern bool m4_is_arg_text (m4_macro_args *, unsigned int);
+extern bool m4_is_arg_func (m4_macro_args *, unsigned int);
+extern const char *m4_arg_text (m4_macro_args *, unsigned int);
+extern size_t m4_arg_len (m4_macro_args *, unsigned int);
+extern m4_builtin_func *m4_arg_func (m4_macro_args *, unsigned int);
\f
/* --- RUNTIME DEBUGGING --- */
diff --git a/m4/m4private.h b/m4/m4private.h
index 63a9bc4e77d03888c8d6b59e2f6ca0ec9dfa4266..10d82c94a31c22c5281673a85da5edc7b16d4273 100644 (file)
--- a/m4/m4private.h
+++ b/m4/m4private.h
@@ -346,24 +346,32 @@ struct m4_syntax_table {
#endif
\f
+/* --- MACRO MANAGEMENT --- */
+
/* Various different token types. */
typedef enum {
- M4_TOKEN_EOF, /* end of file */
- M4_TOKEN_NONE, /* discardable token */
- M4_TOKEN_STRING, /* a quoted string */
- M4_TOKEN_SPACE, /* whitespace */
- M4_TOKEN_WORD, /* an identifier */
- M4_TOKEN_OPEN, /* argument list start */
- M4_TOKEN_COMMA, /* argument separator */
- M4_TOKEN_CLOSE, /* argument list end */
- M4_TOKEN_SIMPLE, /* a single character */
- M4_TOKEN_MACDEF /* a macro's definition (see "defn") */
+ M4_TOKEN_EOF, /* End of file, M4_SYMBOL_VOID. */
+ M4_TOKEN_NONE, /* Discardable token, M4_SYMBOL_VOID. */
+ M4_TOKEN_STRING, /* Quoted string or comment, M4_SYMBOL_TEXT or
+ M4_SYMBOL_COMP. */
+ M4_TOKEN_SPACE, /* Whitespace, M4_SYMBOL_TEXT. */
+ M4_TOKEN_WORD, /* An identifier, M4_SYMBOL_TEXT. */
+ M4_TOKEN_OPEN, /* Argument list start, M4_SYMBOL_TEXT. */
+ M4_TOKEN_COMMA, /* Argument separator, M4_SYMBOL_TEXT. */
+ M4_TOKEN_CLOSE, /* Argument list end, M4_SYMBOL_TEXT. */
+ M4_TOKEN_SIMPLE, /* Single character, M4_SYMBOL_TEXT. */
+ M4_TOKEN_MACDEF /* Macro's definition (see "defn"), M4_SYMBOL_FUNC. */
} m4__token_type;
extern m4__token_type m4__next_token (m4 *, m4_symbol_value *, int *,
const char *);
extern bool m4__next_token_is_open (m4 *);
+/* Fast macro versions of macro argv accessor functions,
+ that also have an identically named function exported in m4module.h. */
+#ifdef NDEBUG
+# define m4_arg_argc(A) (A)->argc
+#endif /* NDEBUG */
\f
/* --- PATH MANAGEMENT --- */
diff --git a/m4/macro.c b/m4/macro.c
index c4ba1af3e6747cedbf07128580250aa217190887..449f160fa95f6d38fd788a054e18d9cd37cec2c6 100644 (file)
--- a/m4/macro.c
+++ b/m4/macro.c
@@ -42,9 +42,8 @@ static void process_macro (m4 *, m4_symbol_value *, m4_obstack *, int,
static void trace_prepre (m4 *, const char *, size_t,
m4_symbol_value *);
-static void trace_pre (m4 *, const char *, size_t, int,
- m4_macro_args *);
-static void trace_post (m4 *, const char *, size_t, int,
+static void trace_pre (m4 *, const char *, size_t, m4_macro_args *);
+static void trace_post (m4 *, const char *, size_t,
m4_macro_args *, m4_input_block *, bool);
static void trace_format (m4 *, const char *, ...)
@@ -250,7 +249,6 @@ expand_macro (m4 *context, const char *name, m4_symbol *symbol)
unsigned int argc_size; /* Size of argc_stack on entry. */
unsigned int argv_size; /* Size of argv_stack on entry. */
m4_macro_args *argv;
- int argc;
m4_obstack *expansion;
m4_input_block *expanded;
bool traced;
@@ -300,7 +298,6 @@ recursion limit of %zu exceeded, use -L<N> to change it"),
argv = collect_arguments (context, name, symbol, &argv_stack, argv_size,
&argc_stack);
- argc = argv->argc;
/* Calling collect_arguments invalidated name, but we copied it as
argv[0]. */
name = argv->argv0;
@@ -311,15 +308,14 @@ recursion limit of %zu exceeded, use -L<N> to change it"),
m4_set_current_line (context, loc_open_line);
if (traced)
- trace_pre (context, name, my_call_id, argc, argv);
+ trace_pre (context, name, my_call_id, argv);
expansion = m4_push_string_init (context);
- m4_macro_call (context, value, expansion, argc, argv);
+ m4_macro_call (context, value, expansion, argv->argc, argv);
expanded = m4_push_string_finish ();
if (traced)
- trace_post (context, name, my_call_id, argc, argv, expanded,
- trace_expansion);
+ trace_post (context, name, my_call_id, argv, expanded, trace_expansion);
m4_set_current_file (context, loc_close_file);
m4_set_current_line (context, loc_close_line);
@@ -344,7 +340,7 @@ recursion limit of %zu exceeded, use -L<N> to change it"),
Return the object describing all of the macro arguments. */
static m4_macro_args *
collect_arguments (m4 *context, const char *name, m4_symbol *symbol,
- m4_obstack *argptr, unsigned argv_base,
+ m4_obstack *argptr, unsigned int argv_base,
m4_obstack *arguments)
{
m4_symbol_value token;
@@ -398,7 +394,7 @@ collect_arguments (m4 *context, const char *name, m4_symbol *symbol,
the obstack EXPANSION. Macro tracing is also handled here. */
void
m4_macro_call (m4 *context, m4_symbol_value *value, m4_obstack *expansion,
- int argc, m4_macro_args *argv)
+ unsigned int argc, m4_macro_args *argv)
{
if (m4_bad_argc (context, argc, argv->argv0,
VALUE_MIN_ARGS (value), VALUE_MAX_ARGS (value),
@@ -653,15 +649,15 @@ trace_prepre (m4 *context, const char *name, size_t id, m4_symbol_value *value)
/* Format the parts of a trace line, that can be made before the macro is
actually expanded. Used from expand_macro (). */
static void
-trace_pre (m4 *context, const char *name, size_t id,
- int argc, m4_macro_args *argv)
+trace_pre (m4 *context, const char *name, size_t id, m4_macro_args *argv)
{
- int i;
+ unsigned int i;
+ unsigned int argc = m4_arg_argc (argv);
trace_header (context, id);
trace_format (context, "%s", name);
- if ((argc > 1) && m4_is_debug_bit (context, M4_DEBUG_TRACE_ARGS))
+ if (1 < argc && m4_is_debug_bit (context, M4_DEBUG_TRACE_ARGS))
{
bool quote = m4_is_debug_bit (context, M4_DEBUG_TRACE_QUOTE);
const char *lquote = m4_get_syntax_lquote (M4SYNTAX);
@@ -675,8 +671,9 @@ trace_pre (m4 *context, const char *name, size_t id,
if (i != 1)
trace_format (context, ", ");
- m4_symbol_value_print (argv->array[i - 1], &context->trace_messages,
- quote, lquote, rquote, arg_length, module);
+ m4_symbol_value_print (m4_arg_symbol (argv, i),
+ &context->trace_messages, quote, lquote,
+ rquote, arg_length, module);
}
trace_format (context, ")");
}
@@ -686,7 +683,7 @@ trace_pre (m4 *context, const char *name, size_t id,
expand_macro (). */
static void
trace_post (m4 *context, const char *name, size_t id,
- int argc, m4_macro_args *argv, m4_input_block *expanded,
+ m4_macro_args *argv, m4_input_block *expanded,
bool trace_expansion)
{
if (trace_expansion)
@@ -697,3 +694,89 @@ trace_post (m4 *context, const char *name, size_t id,
trace_flush (context);
}
+
+\f
+/* Accessors into m4_macro_args. */
+
+/* Given ARGV, return the symbol value at the specified INDEX, which
+ must be non-zero and less than argc. */
+m4_symbol_value *
+m4_arg_symbol (m4_macro_args *argv, unsigned int index)
+{
+ assert (index && index < argv->argc);
+ return argv->array[index - 1];
+}
+
+/* Given ARGV, return true if argument INDEX is text. Index 0 is
+ always text, as are indices beyond argc. */
+bool
+m4_is_arg_text (m4_macro_args *argv, unsigned int index)
+{
+ if (index == 0 || argv->argc <= index)
+ return true;
+ return m4_is_symbol_value_text (m4_arg_symbol (argv, index));
+}
+
+/* Given ARGV, return true if argument INDEX is a builtin function.
+ Only non-zero indices less than argc can return true. */
+bool
+m4_is_arg_func (m4_macro_args *argv, unsigned int index)
+{
+ if (index == 0 || argv->argc <= index)
+ return false;
+ return m4_is_symbol_value_func (m4_arg_symbol (argv, index));
+}
+
+/* Given ARGV, return the text at argument INDEX, or NULL if the
+ argument is not text. Index 0 is always text, and indices beyond
+ argc return the empty string. */
+const char *
+m4_arg_text (m4_macro_args *argv, unsigned int index)
+{
+ if (index == 0)
+ return argv->argv0;
+ if (argv->argc <= index)
+ return "";
+ if (!m4_is_symbol_value_text (argv->array[index - 1]))
+ return NULL;
+ return m4_get_symbol_value_text (argv->array[index - 1]);
+}
+
+/* Given ARGV, return the length of argument INDEX, or SIZE_MAX if the
+ argument is not text. Indices beyond argc return 0. */
+size_t
+m4_arg_len (m4_macro_args *argv, unsigned int index)
+{
+ /* TODO - update m4_macro_args to cache this. */
+ if (index == 0)
+ return strlen (argv->argv0);
+ if (argv->argc <= index)
+ return 0;
+ if (!m4_is_symbol_value_text (argv->array[index - 1]))
+ return SIZE_MAX;
+ return strlen (m4_get_symbol_value_text (argv->array[index - 1]));
+}
+
+/* Given ARGV, return the builtin function referenced by argument
+ INDEX, or NULL if it is not a builtin. Index 0, and indices beyond
+ argc, return NULL. */
+m4_builtin_func *
+m4_arg_func (m4_macro_args *argv, unsigned int index)
+{
+ if (index == 0 || argv->argc <= index
+ || !m4_is_symbol_value_func (argv->array[index - 1]))
+ return NULL;
+ return m4_get_symbol_value_func (argv->array[index - 1]);
+}
+
+/* Define these last, so that earlier uses can benefit from the macros
+ in m4private.h. */
+
+/* Given ARGV, return one greater than the number of arguments it
+ describes. */
+#undef m4_arg_argc
+unsigned int
+m4_arg_argc (m4_macro_args *argv)
+{
+ return argv->argc;
+}
diff --git a/m4/utility.c b/m4/utility.c
index 851da316fb7f6d84f9b337eb71e821237e3eed15..53d2a18c1d284e75d4955a19da8fa7e861b9a790 100644 (file)
--- a/m4/utility.c
+++ b/m4/utility.c
@@ -99,14 +99,15 @@ m4_numeric_arg (m4 *context, const char *caller, const char *arg, int *valuep)
index START, separated by SEP, and quoted by the current quotes, if
QUOTED is true. */
void
-m4_dump_args (m4 *context, m4_obstack *obs, int start,
+m4_dump_args (m4 *context, m4_obstack *obs, unsigned int start,
m4_macro_args *argv, const char *sep, bool quoted)
{
- int i;
+ unsigned int i;
size_t len = strlen (sep);
bool need_sep = false;
+ unsigned int argc = m4_arg_argc (argv);
- for (i = start; i < argv->argc; i++)
+ for (i = start; i < argc; i++)
{
if (need_sep)
obstack_grow (obs, sep, len);
diff --git a/modules/evalparse.c b/modules/evalparse.c
index 31e1e4b52fc51ad0c32a0561264fc1ae740f6eb4..e21a081faca7355c0216423213929a8d673b4fe8 100644 (file)
--- a/modules/evalparse.c
+++ b/modules/evalparse.c
@@ -885,7 +885,8 @@ simple_term (m4 *context, eval_token et, number *v1)
/* Main entry point, called from "eval" and "mpeval" builtins. */
void
-m4_evaluate (m4 *context, m4_obstack *obs, int argc, m4_macro_args *argv)
+m4_evaluate (m4 *context, m4_obstack *obs, unsigned int argc,
+ m4_macro_args *argv)
{
const char * me = M4ARG (0);
const char * str = M4ARG (1);
diff --git a/modules/gnu.c b/modules/gnu.c
index 6fd66234e54773d293ed879ac378d09bdc4dbb29..70c7cf6027ca52a75d3bc4210d4b2eb033852550 100644 (file)
--- 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);
diff --git a/modules/m4.c b/modules/m4.c
index 7c0d8ed0573439e544436e97513e1816afad973d..37497e64f63e1d1f9db20fb2fe609c3c5007d1d4 100644 (file)
--- a/modules/m4.c
+++ b/modules/m4.c
@@ -49,8 +49,9 @@
extern void m4_set_sysval (int value);
extern void m4_sysval_flush (m4 *context, bool report);
-extern void m4_dump_symbols (m4 *context, m4_dump_symbol_data *data, int argc,
- m4_macro_args *argv, bool complain);
+extern void m4_dump_symbols (m4 *context, m4_dump_symbol_data *data,
+ unsigned int argc, m4_macro_args *argv,
+ bool complain);
extern const char *m4_expand_ranges (const char *s, m4_obstack *obs);
extern void m4_make_temp (m4 *context, m4_obstack *obs, const char *macro,
const char *name, bool dir);
@@ -160,14 +161,14 @@ M4INIT_HANDLER (m4)
M4BUILTIN_HANDLER (define)
{
- if (m4_is_symbol_value_text (argv->array[1 - 1]))
+ if (m4_is_arg_text (argv, 1))
{
m4_symbol_value *value = m4_symbol_value_create ();
if (argc == 2)
m4_set_symbol_value_text (value, xstrdup (""));
else
- m4_symbol_value_copy (value, argv->array[2 - 1]);
+ m4_symbol_value_copy (value, m4_arg_symbol (argv, 2));
m4_symbol_define (M4SYMTAB, M4ARG (1), value);
}
@@ -177,7 +178,7 @@ M4BUILTIN_HANDLER (define)
M4BUILTIN_HANDLER (undefine)
{
- int i;
+ unsigned int i;
for (i = 1; i < argc; i++)
{
const char *name = M4ARG (i);
@@ -191,14 +192,14 @@ M4BUILTIN_HANDLER (undefine)
M4BUILTIN_HANDLER (pushdef)
{
- if (m4_is_symbol_value_text (argv->array[1 - 1]))
+ if (m4_is_arg_text (argv, 1))
{
m4_symbol_value *value = m4_symbol_value_create ();
if (argc == 2)
m4_set_symbol_value_text (value, xstrdup (""));
else
- m4_symbol_value_copy (value, argv->array[2 - 1]);
+ m4_symbol_value_copy (value, m4_arg_symbol (argv, 2));
m4_symbol_pushdef (M4SYMTAB, M4ARG (1), value);
}
@@ -208,7 +209,7 @@ M4BUILTIN_HANDLER (pushdef)
M4BUILTIN_HANDLER (popdef)
{
- int i;
+ unsigned int i;
for (i = 1; i < argc; i++)
{
const char *name = M4ARG (i);
@@ -248,7 +249,7 @@ M4BUILTIN_HANDLER (ifelse)
{
const char *me = M4ARG (0);
const char *result;
- int index;
+ unsigned int index;
/* The valid ranges of argc for ifelse is discontinuous, we cannot
rely on the regular mechanisms. */
@@ -327,7 +328,7 @@ dump_symbol_CB (m4_symbol_table *ignored, const char *name, m4_symbol *symbol,
/* If there are no arguments, build a sorted list of all defined
symbols, otherwise, only the specified symbols. */
void
-m4_dump_symbols (m4 *context, m4_dump_symbol_data *data, int argc,
+m4_dump_symbols (m4 *context, m4_dump_symbol_data *data, unsigned int argc,
m4_macro_args *argv, bool complain)
{
assert (obstack_object_size (data->obs) == 0);
@@ -337,7 +338,7 @@ m4_dump_symbols (m4 *context, m4_dump_symbol_data *data, int argc,
m4_symtab_apply (M4SYMTAB, false, dump_symbol_CB, data);
else
{
- int i;
+ unsigned int i;
m4_symbol *symbol;
for (i = 1; i < argc; i++)
@@ -396,7 +397,7 @@ M4BUILTIN_HANDLER (dumpdef)
M4BUILTIN_HANDLER (defn)
{
const char *me = M4ARG (0);
- int i;
+ unsigned int i;
for (i = 1; i < argc; i++)
{
@@ -602,7 +603,7 @@ M4BUILTIN_HANDLER (divnum)
M4BUILTIN_HANDLER (undivert)
{
- int i = 0;
+ unsigned int i = 0;
const char *me = M4ARG (0);
if (argc == 1)
@@ -874,7 +875,7 @@ M4BUILTIN_HANDLER (m4wrap)
M4BUILTIN_HANDLER (traceon)
{
- int i;
+ unsigned int i;
if (argc == 1)
m4_set_debug_level_opt (context, (m4_get_debug_level_opt (context)
@@ -887,7 +888,7 @@ M4BUILTIN_HANDLER (traceon)
/* Disable tracing of all specified macros, or all, if none is specified. */
M4BUILTIN_HANDLER (traceoff)
{
- int i;
+ unsigned int i;
if (argc == 1)
m4_set_debug_level_opt (context, (m4_get_debug_level_opt (context)
diff --git a/modules/m4.h b/modules/m4.h
index 4214aedafb7ed22a34e404d35bb0b66692966252..4783d0a429db829615a5a2c3b17ecedf28e9cf73 100644 (file)
--- a/modules/m4.h
+++ b/modules/m4.h
@@ -39,7 +39,7 @@ typedef struct
typedef void m4_sysval_flush_func (m4 *context, bool report);
typedef void m4_set_sysval_func (int value);
typedef void m4_dump_symbols_func (m4 *context, m4_dump_symbol_data *data,
- int argc, m4_macro_args *argv,
+ unsigned int argc, m4_macro_args *argv,
bool complain);
typedef const char *m4_expand_ranges_func (const char *s, m4_obstack *obs);
typedef void m4_make_temp_func (m4 *context, m4_obstack *obs,
diff --git a/modules/perl.c b/modules/perl.c
index 9c28b0aec14e3bc3ea550aec16957afbc7cf2a39..58161b17eee0f17e41ff1c913b6f5f3a6a638dc2 100644 (file)
--- a/modules/perl.c
+++ b/modules/perl.c
@@ -41,14 +41,14 @@
BUILTIN (perleval, false, false, false, 0, -1 ) \
-#define BUILTIN(handler, macros, blind, side, min, max) M4BUILTIN(handler)
+#define BUILTIN(handler, macros, blind, side, min, max) M4BUILTIN(handler)
builtin_functions
#undef BUILTIN
m4_builtin m4_builtin_table[] =
{
#define BUILTIN(handler, macros, blind, side, min, max) \
- { CONC(builtin_, handler), STR(handler), \
+ { CONC (builtin_, handler), STR (handler), \
((macros ? M4_BUILTIN_GROKS_MACRO : 0) \
| (blind ? M4_BUILTIN_BLIND : 0) \
| (side ? M4_BUILTIN_SIDE_EFFECT : 0)), \
@@ -114,15 +114,15 @@ M4FINISH_HANDLER (perl)
M4BUILTIN_HANDLER (perleval)
{
SV *val;
- int i;
+ unsigned int i;
for (i = 1; i < argc; i++)
{
if (i > 1)
obstack_1grow (obs, ',');
- val = perl_eval_pv(M4ARG(i), true);
+ val = perl_eval_pv (M4ARG (i), true);
- m4_shipout_string(context, obs, SvPV(val,PL_na), 0, false);
+ m4_shipout_string (context, obs, SvPV (val, PL_na), 0, false);
}
}
GNU M4 source repository
RSS Atom

AltStyle によって変換されたページ (->オリジナル) /