diff options
author | Marc Espie <espie@cvs.openbsd.org> | 2000-09-12 19:13:03 +0000 |
---|---|---|
committer | Marc Espie <espie@cvs.openbsd.org> | 2000-09-12 19:13:03 +0000 |
commit | 1b50fce4c0ed748c156af3ac629e50cb5e4d0ef4 (patch) | |
tree | edee61faabd18b4a5d84e8cdb679d7a8d1fe171f /gnu/usr.bin/binutils/gas/macro.h | |
parent | 9f1193e30b5f04af9ea81c644eec79b7b535b890 (diff) |
Help stupid cvs fixing basic conflicts.
Diffstat (limited to 'gnu/usr.bin/binutils/gas/macro.h')
-rw-r--r-- | gnu/usr.bin/binutils/gas/macro.h | 42 |
1 files changed, 40 insertions, 2 deletions
diff --git a/gnu/usr.bin/binutils/gas/macro.h b/gnu/usr.bin/binutils/gas/macro.h index 12ed379caf5..815ab7cc47a 100644 --- a/gnu/usr.bin/binutils/gas/macro.h +++ b/gnu/usr.bin/binutils/gas/macro.h @@ -1,5 +1,5 @@ /* macro.h - header file for macro support for gas and gasp - Copyright (C) 1994, 1995 Free Software Foundation, Inc. + Copyright (C) 1994, 95, 96, 97, 1998 Free Software Foundation, Inc. Written by Steve and Judy Chamberlain of Cygnus Support, sac@cygnus.com @@ -28,6 +28,42 @@ #include "ansidecl.h" #include "sb.h" +/* Structures used to store macros. + + Each macro knows its name and included text. It gets built with a + list of formal arguments, and also keeps a hash table which points + into the list to speed up formal search. Each formal knows its + name and its default value. Each time the macro is expanded, the + formals get the actual values attatched to them. */ + +/* describe the formal arguments to a macro */ + +typedef struct formal_struct + { + struct formal_struct *next; /* next formal in list */ + sb name; /* name of the formal */ + sb def; /* the default value */ + sb actual; /* the actual argument (changed on each expansion) */ + int index; /* the index of the formal 0..formal_count-1 */ + } +formal_entry; + +/* Other values found in the index field of a formal_entry. */ +#define QUAL_INDEX (-1) +#define NARG_INDEX (-2) +#define LOCAL_INDEX (-3) + +/* describe the macro. */ + +typedef struct macro_struct + { + sb sub; /* substitution text. */ + int formal_count; /* number of formal args. */ + formal_entry *formals; /* pointer to list of formal_structs */ + struct hash_control *formal_hash; /* hash table of formals. */ + } +macro_entry; + /* Whether any macros have been defined. */ extern int macro_defined; @@ -37,10 +73,12 @@ extern int buffer_and_nest extern void macro_init PARAMS ((int alternate, int mri, int strip_at, int (*) PARAMS ((const char *, int, sb *, int *)))); +extern void macro_mri_mode PARAMS ((int)); extern const char *define_macro PARAMS ((int idx, sb *in, sb *label, int (*get_line) PARAMS ((sb *)), const char **namep)); -extern int check_macro PARAMS ((const char *, sb *, int, const char **)); +extern int check_macro PARAMS ((const char *, sb *, int, const char **, + macro_entry **)); extern void delete_macro PARAMS ((const char *)); extern const char *expand_irp PARAMS ((int, int, sb *, sb *, int (*) PARAMS ((sb *)), int)); |