#ifndef MACROS_H
#define MACROS_H

#include <stddef.h>

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



syntax highlighted by Code2HTML, v. 0.9.1