efficiency, and partly to limit runaway recursion. */
#define CPP_STACK_MAX 200
-/* A generic memory buffer. */
+/* A generic memory buffer, and operations on it. */
typedef struct _cpp_buff _cpp_buff;
struct _cpp_buff
extern void _cpp_free_buff PARAMS ((_cpp_buff *));
extern unsigned char *_cpp_aligned_alloc PARAMS ((cpp_reader *, size_t));
extern unsigned char *_cpp_unaligned_alloc PARAMS ((cpp_reader *, size_t));
+
#define BUFF_ROOM(BUFF) (size_t) ((BUFF)->limit - (BUFF)->cur)
#define BUFF_FRONT(BUFF) ((BUFF)->cur)
#define BUFF_LIMIT(BUFF) ((BUFF)->limit)
When the context is popped, the buffer is released. */
_cpp_buff *buff;
- /* For a macro context, these are the macro and its arguments. */
- cpp_macro *macro;
+ /* For a macro context, the macro node, otherwise NULL. */
+ cpp_hashnode *macro;
/* True if utoken element is token, else ptoken. */
bool direct_p;
cpp_hashnode *n_defined; /* defined operator */
cpp_hashnode *n_true; /* C++ keyword true */
cpp_hashnode *n_false; /* C++ keyword false */
- cpp_hashnode *n__Pragma; /* _Pragma operator */
cpp_hashnode *n__STRICT_ANSI__; /* STDC_0_IN_SYSTEM_HEADERS */
cpp_hashnode *n__CHAR_UNSIGNED__; /* plain char is unsigned */
cpp_hashnode *n__VA_ARGS__; /* C99 vararg macros */
struct cpp_buffer *prev;
- const unsigned char *buf; /* Entire buffer. */
+ const unsigned char *buf; /* Entire character buffer. */
/* Pointer into the include table; non-NULL if this is a file
buffer. Used for include_next and to record control macros. */