#ifndef MACROS_H #define MACROS_H #include struct macro_arg { char *name; struct token *toklist; struct macro_arg *next; }; struct macro { char *name; size_t namelen; int empty; int functionlike; int dontexpand; void *builtin; struct macro_arg *trailing_last; struct macro_arg *arglist; struct token *toklist; struct macro *next; }; struct macro *alloc_macro(); struct macro *lookup_macro(const char *name, size_t len); struct macro *put_macro(struct macro *m); int drop_macro(const char *name); struct token *builtin_to_tok(struct macro *mp, struct token **tail); struct token *skip_ws(struct token *); /* XXX token.c ... */ #endif