diff options
author | Per Bothner <bothner@gcc.gnu.org> | 1996-06-05 16:24:48 -0700 |
---|---|---|
committer | Per Bothner <bothner@gcc.gnu.org> | 1996-06-05 16:24:48 -0700 |
commit | af453bb064882fc999cd65f979b950e5d71f9373 (patch) | |
tree | 26e7bae77034fcbc204fb43474c77e1c848127f7 /gcc/cpplib.h | |
parent | c003becadac8ce151cfcca944bc317b51007ede1 (diff) | |
download | gcc-af453bb064882fc999cd65f979b950e5d71f9373.zip gcc-af453bb064882fc999cd65f979b950e5d71f9373.tar.gz gcc-af453bb064882fc999cd65f979b950e5d71f9373.tar.bz2 |
cpplib.h, cpplib.c: Remove support for !STATIC_BUFFERS.
* cpplib.h, cpplib.c: Remove support for !STATIC_BUFFERS.
* cpplib.h: Use unsigned char rather than U_CHAR.
* cpplib.h (cpp_reader): Add destructor #ifdef __cplusplus.
(cpp_cleanup): New prototype.
From-SVN: r12169
Diffstat (limited to 'gcc/cpplib.h')
-rw-r--r-- | gcc/cpplib.h | 52 |
1 files changed, 26 insertions, 26 deletions
diff --git a/gcc/cpplib.h b/gcc/cpplib.h index 3075b79..26171a3 100644 --- a/gcc/cpplib.h +++ b/gcc/cpplib.h @@ -27,8 +27,6 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. extern "C" { #endif -#define STATIC_BUFFERS - typedef unsigned char U_CHAR; struct parse_file; @@ -101,6 +99,8 @@ extern enum cpp_token cpp_get_token PARAMS ((struct parse_marker*)); extern void cpp_skip_hspace PARAMS((cpp_reader*)); extern enum cpp_token cpp_get_non_space_token PARAMS ((cpp_reader *)); +/* This frees resources used by PFILE. */ +extern void cpp_cleanup PARAMS ((cpp_reader* PFILE)); /* Maintain and search list of included files, for #import. */ @@ -134,9 +134,6 @@ struct cpp_buffer { long line_base; long lineno; /* Line number at CPP_LINE_BASE. */ long colno; /* Column number at CPP_LINE_BASE. */ -#ifndef STATIC_BUFFERS - cpp_buffer *chain; -#endif parse_underflow_t underflow; parse_cleanup_t cleanup; void *data; @@ -150,7 +147,7 @@ struct cpp_buffer { char seen_eof; /* True if buffer contains escape sequences. - Currently there are are only two kind: + Currently there are three kinds: "@-" means following identifier should not be macro-expanded. "@ " means a token-separator. This turns into " " in final output if not stringizing and needed to separate tokens; otherwise nothing. @@ -165,25 +162,28 @@ struct file_name_map_list; typedef struct assertion_hashnode ASSERTION_HASHNODE; #define ASSERTION_HASHSIZE 37 -#ifdef STATIC_BUFFERS /* Maximum nesting of cpp_buffers. We use a static limit, partly for efficiency, and partly to limit runaway recursion. */ #define CPP_STACK_MAX 200 -#endif + +/* A cpp_reader encapsulates the "state" of a pre-processor run. + Applying cpp_get_token repeatedly yields a stream of pre-processor + tokens. Usually, there is only one cpp_reader object active. */ struct cpp_reader { - unsigned char *limit; parse_underflow_t get_token; cpp_buffer *buffer; -#ifdef STATIC_BUFFERS cpp_buffer buffer_stack[CPP_STACK_MAX]; -#endif int errors; /* Error counter for exit code */ void *data; - U_CHAR *token_buffer; + /* A buffer used for both for cpp_get_token's output, and also internally. */ + unsigned char *token_buffer; + /* Alocated size of token_buffer. CPP_RESERVE allocates space. */ int token_buffer_size; + /* End of the written part of token_buffer. */ + unsigned char *limit; /* Line where a newline was first seen in a string constant. */ int multiline_string_line; @@ -260,6 +260,10 @@ struct cpp_reader { /* Number of bytes since the last newline. */ int deps_column; + +#ifdef __cplusplus + ~cpp_reader () { cpp_cleanup (this); } +#endif }; #define CPP_BUF_PEEK(BUFFER) \ @@ -295,15 +299,10 @@ struct cpp_reader { #define CPP_OPTIONS(PFILE) ((cpp_options*)(PFILE)->data) #define CPP_BUFFER(PFILE) ((PFILE)->buffer) -#ifdef STATIC_BUFFERS #define CPP_PREV_BUFFER(BUFFER) ((BUFFER)+1) #define CPP_NULL_BUFFER(PFILE) (&(PFILE)->buffer_stack[CPP_STACK_MAX]) -#else -#define CPP_PREV_BUFFER(BUFFER) ((BUFFER)->chain) -#define CPP_NULL_BUFFER(PFILE) ((cpp_buffer*)0) -#endif -/* Pointed to by parse_file::data. */ +/* Pointed to by cpp_reader::data. */ struct cpp_options { char *in_fname; @@ -551,7 +550,7 @@ typedef struct macrodef MACRODEF; struct macrodef { struct definition *defn; - U_CHAR *symnam; + unsigned char *symnam; int symlen; }; @@ -582,7 +581,7 @@ struct definition { int length; /* length of expansion string */ int predefined; /* True if the macro was builtin or */ /* came from the command line */ - U_CHAR *expansion; + unsigned char *expansion; int line; /* Line number of definition */ char *file; /* File of definition */ char rest_args; /* Nonzero if last arg. absorbs the rest */ @@ -602,11 +601,11 @@ struct definition { with comma-space between them. The only use of this is that we warn on redefinition if this differs between the old and new definitions. */ - U_CHAR *argnames; + unsigned char *argnames; } args; }; -extern U_CHAR is_idchar[256]; +extern unsigned char is_idchar[256]; /* Stack of conditionals currently in progress (including both successful and failing conditionals). */ @@ -617,7 +616,7 @@ struct if_stack { int lineno; /* similarly */ int if_succeeded; /* true if a leg of this if-group has been passed through rescan */ - U_CHAR *control_macro; /* For #ifndef at start of file, + unsigned char *control_macro; /* For #ifndef at start of file, this is the macro name tested. */ enum node_type type; /* type of last directive seen in this group */ }; @@ -625,7 +624,7 @@ typedef struct if_stack IF_STACK_FRAME; extern void cpp_buf_line_and_col PARAMS((cpp_buffer*, long*, long*)); extern cpp_buffer* cpp_file_buffer PARAMS((cpp_reader*)); -extern void cpp_define PARAMS ((cpp_reader*, U_CHAR*)); +extern void cpp_define PARAMS ((cpp_reader*, unsigned char*)); extern void cpp_error (); extern void cpp_warning (); @@ -640,10 +639,11 @@ extern void cpp_pfatal_with_name (); extern void cpp_grow_buffer PARAMS ((cpp_reader*, long)); extern int cpp_parse_escape PARAMS ((cpp_reader*, char**)); -extern cpp_buffer* cpp_push_buffer PARAMS ((cpp_reader *, U_CHAR*, long)); +extern cpp_buffer* cpp_push_buffer PARAMS ((cpp_reader *, + unsigned char*, long)); extern cpp_buffer* cpp_pop_buffer PARAMS ((cpp_reader *)); -extern cpp_hashnode* cpp_lookup PARAMS ((cpp_reader*, const U_CHAR*, +extern cpp_hashnode* cpp_lookup PARAMS ((cpp_reader*, const unsigned char*, int, int)); #ifdef __cplusplus |