diff options
| author | cvs2svn <cvs2svn@FreeBSD.org> | 2000-05-27 02:25:29 +0000 | 
|---|---|---|
| committer | cvs2svn <cvs2svn@FreeBSD.org> | 2000-05-27 02:25:29 +0000 | 
| commit | 9bf6bc8933de87c41c8245b553f777a8bbdcab7f (patch) | |
| tree | 6bfb073c78cbdfdc5ca8e0b975d84e6be75f2c42 /contrib/gcc/cpplib.h | |
| parent | c6d2f3514a57725780ace95a120243815e145505 (diff) | |
Diffstat (limited to 'contrib/gcc/cpplib.h')
| -rw-r--r-- | contrib/gcc/cpplib.h | 770 | 
1 files changed, 0 insertions, 770 deletions
| diff --git a/contrib/gcc/cpplib.h b/contrib/gcc/cpplib.h deleted file mode 100644 index aadec44eb8657..0000000000000 --- a/contrib/gcc/cpplib.h +++ /dev/null @@ -1,770 +0,0 @@ -/* Definitions for CPP library. -   Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc. -   Written by Per Bothner, 1994-95. - -This program is free software; you can redistribute it and/or modify it -under the terms of the GNU General Public License as published by the -Free Software Foundation; either version 2, or (at your option) any -later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - - In other words, you are welcome to use, share and improve this program. - You are forbidden to forbid anyone else to use, share and improve - what you give them.   Help stamp out software-hoarding!  */ -#ifndef __GCC_CPPLIB__ -#define __GCC_CPPLIB__ - -#include <sys/types.h> - -#ifdef __cplusplus -extern "C" { -#endif - -typedef unsigned char U_CHAR; - -typedef struct cpp_reader cpp_reader; -typedef struct cpp_buffer cpp_buffer; -typedef struct cpp_options cpp_options; -typedef struct hashnode cpp_hashnode; - -enum cpp_token { -  CPP_EOF = -1, -  CPP_OTHER = 0, -  CPP_COMMENT = 1, -  CPP_HSPACE, -  CPP_VSPACE, /* newlines and #line directives */ -  CPP_NAME, -  CPP_NUMBER, -  CPP_CHAR, -  CPP_STRING, -  CPP_DIRECTIVE, -  CPP_LPAREN,   /* "(" */ -  CPP_RPAREN,   /* ")" */ -  CPP_LBRACE,   /* "{" */ -  CPP_RBRACE,   /* "}" */ -  CPP_COMMA,    /* "," */ -  CPP_SEMICOLON,/* ";" */ -  CPP_3DOTS,    /* "..." */ -#if 0 -  CPP_ANDAND, /* "&&" */ -  CPP_OROR,   /* "||" */ -  CPP_LSH,    /* "<<" */ -  CPP_RSH,    /* ">>" */ -  CPP_EQL,    /* "==" */ -  CPP_NEQ,    /* "!=" */ -  CPP_LEQ,    /* "<=" */ -  CPP_GEQ,    /* ">=" */ -  CPP_PLPL,   /* "++" */ -  CPP_MINMIN, /* "--" */ -#endif -  /* POP_TOKEN is returned when we've popped a cpp_buffer. */ -  CPP_POP -}; - -typedef enum cpp_token (*parse_underflow_t) PARAMS((cpp_reader *)); -typedef int (*parse_cleanup_t) PARAMS((cpp_buffer *, cpp_reader *)); - -extern void parse_set_mark	PARAMS ((cpp_reader *)); -extern void parse_clear_mark	PARAMS ((cpp_reader *)); -extern void parse_goto_mark	PARAMS ((cpp_reader *)); - -extern int cpp_handle_option PARAMS ((cpp_reader *, int, char **)); -extern int cpp_handle_options PARAMS ((cpp_reader *, int, char **)); -extern enum cpp_token cpp_get_token PARAMS ((cpp_reader *)); -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)); - -struct cpp_buffer -{ -  unsigned char *cur;	 /* current position */ -  unsigned char *rlimit; /* end of valid data */ -  unsigned char *buf;	 /* entire buffer */ -  unsigned char *alimit; /* end of allocated buffer */ -  unsigned char *line_base; /* start of current line */ - -  struct cpp_buffer *prev; - -  /* Real filename.  (Alias to ->ihash->fname, obsolete). */ -  char *fname; -  /* Filename specified with #line command.  */ -  char *nominal_fname; -  /* Last filename specified with #line command.  */ -  char *last_nominal_fname; -  /* Actual directory of this file, used only for "" includes */ -  struct file_name_list *actual_dir; - -  /* Pointer into the include hash table.  Used for include_next and -     to record control macros. */ -  struct include_hash *ihash; - -  long lineno; /* Line number at CPP_LINE_BASE. */ -  long colno; /* Column number at CPP_LINE_BASE. */ -  long mark;  /* Saved position for lengthy backtrack. */ -  parse_underflow_t underflow; -  parse_cleanup_t cleanup; -  void *data; -   -  /* Value of if_stack at start of this file. -     Used to prohibit unmatched #endif (etc) in an include file.  */ -  struct if_stack *if_stack; - -  /* True if this is a header file included using <FILENAME>.  */ -  char system_header_p; -  char seen_eof; - -  /* True if buffer contains escape sequences. -     Currently there are two kinds: -     "\r-" means following identifier should not be macro-expanded. -     "\r " means a token-separator.  This turns into " " in final output -          if not stringizing and needed to separate tokens; otherwise nothing. -     Any other two-character sequence beginning with \r is an error. - -     If this is NOT set, then \r is a one-character escape meaning backslash -     newline.  This is guaranteed not to occur in the middle of a token. -     The two interpretations of \r do not conflict, because the two-character -     escapes are used only in macro buffers, and backslash-newline is removed -     from macro expansion text in collect_expansion and/or macarg.  */ -  char has_escapes; -}; - -struct file_name_map_list; - -/* Maximum nesting of cpp_buffers.  We use a static limit, partly for -   efficiency, and partly to limit runaway recursion.  */ -#define CPP_STACK_MAX 200 - -/* 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 -{ -  parse_underflow_t get_token; -  cpp_buffer *buffer; -  cpp_options *opts; - -  /* A buffer used for both for cpp_get_token's output, and also internally. */ -  unsigned char *token_buffer; -  /* Allocated size of token_buffer.  CPP_RESERVE allocates space.  */ -  unsigned int token_buffer_size; -  /* End of the written part of token_buffer. */ -  unsigned char *limit; - -  /* Error counter for exit code */ -  int errors; - -  /* Line where a newline was first seen in a string constant.  */ -  int multiline_string_line; - -  /* Current depth in #include directives that use <...>.  */ -  int system_include_depth; - -  /* Current depth of buffer stack. */ -  int buffer_stack_depth; - -  /* Hash table of macros and assertions.  See cpphash.c */ -#define HASHSIZE 1403 -  struct hashnode **hashtab; -   -  /* Hash table of other included files.  See cppfiles.c */ -#define ALL_INCLUDE_HASHSIZE 71 -  struct include_hash *all_include_files[ALL_INCLUDE_HASHSIZE]; - -  /* Chain of `actual directory' file_name_list entries, -     for "" inclusion. */ -  struct file_name_list *actual_dirs; - -  /* Current maximum length of directory names in the search path -     for include files.  (Altered as we get more of them.)  */ -  unsigned int max_include_len; - -  struct if_stack *if_stack; - -  /* Nonzero means we are inside an IF during a -pcp run.  In this mode -     macro expansion is done, and preconditions are output for all macro -     uses requiring them. */ -  char pcp_inside_if; - -  /* Nonzero means we have printed (while error reporting) a list of -     containing files that matches the current status. */ -  char input_stack_listing_current; - -  /* If non-zero, macros are not expanded. */ -  char no_macro_expand; - -  /* Print column number in error messages. */ -  char show_column; - -  /* We're printed a warning recommending against using #import. */ -  char import_warning; - -  /* If true, character between '<' and '>' are a single (string) token. */ -  char parsing_include_directive; - -  /* True if escape sequences (as described for has_escapes in -     parse_buffer) should be emitted. */ -  char output_escapes; - -  /* 0: Have seen non-white-space on this line. -     1: Only seen white space so far on this line. -     2: Only seen white space so far in this file. */ -   char only_seen_white; - -  /* Nonzero means this file was included with a -imacros or -include -     command line and should not be recorded as an include file.  */ - -  int no_record_file; - -  long lineno; - -  struct tm *timebuf; - -  /* Buffer of -M output.  */ -  char *deps_buffer; - -  /* Number of bytes allocated in above.  */ -  int deps_allocated_size; - -  /* Number of bytes used.  */ -  int deps_size; - -  /* Number of bytes since the last newline.  */ -  int deps_column; - -  /* A buffer and a table, used only by read_and_prescan (in cppfiles.c) -     which are allocated once per cpp_reader object to keep them off the -     stack and avoid setup costs.  */ -  U_CHAR *input_buffer; -  U_CHAR *input_speccase; -  size_t input_buffer_len; -}; - -#define CPP_FATAL_LIMIT 1000 -/* True if we have seen a "fatal" error. */ -#define CPP_FATAL_ERRORS(READER) ((READER)->errors >= CPP_FATAL_LIMIT) - -#define CPP_BUF_PEEK(BUFFER) \ -  ((BUFFER)->cur < (BUFFER)->rlimit ? *(BUFFER)->cur : EOF) -#define CPP_BUF_GET(BUFFER) \ -  ((BUFFER)->cur < (BUFFER)->rlimit ? *(BUFFER)->cur++ : EOF) -#define CPP_FORWARD(BUFFER, N) ((BUFFER)->cur += (N)) - -/* Macros for manipulating the token_buffer. */ - -#define CPP_OUT_BUFFER(PFILE) ((PFILE)->token_buffer) - -/* Number of characters currently in PFILE's output buffer. */ -#define CPP_WRITTEN(PFILE) ((size_t)((PFILE)->limit - (PFILE)->token_buffer)) -#define CPP_PWRITTEN(PFILE) ((PFILE)->limit) - -/* Make sure PFILE->token_buffer has space for at least N more characters. */ -#define CPP_RESERVE(PFILE, N) \ -  (CPP_WRITTEN (PFILE) + (size_t)(N) > (PFILE)->token_buffer_size \ -   && (cpp_grow_buffer (PFILE, N), 0)) - -/* Append string STR (of length N) to PFILE's output buffer. -   Assume there is enough space. */ -#define CPP_PUTS_Q(PFILE, STR, N) \ -  (memcpy ((PFILE)->limit, STR, (N)), (PFILE)->limit += (N)) -/* Append string STR (of length N) to PFILE's output buffer.  Make space. */ -#define CPP_PUTS(PFILE, STR, N) CPP_RESERVE(PFILE, N), CPP_PUTS_Q(PFILE, STR,N) -/* Append character CH to PFILE's output buffer.  Assume sufficient space. */ -#define CPP_PUTC_Q(PFILE, CH) (*(PFILE)->limit++ = (CH)) -/* Append character CH to PFILE's output buffer.  Make space if need be. */ -#define CPP_PUTC(PFILE, CH) (CPP_RESERVE (PFILE, 1), CPP_PUTC_Q (PFILE, CH)) -/* Make sure PFILE->limit is followed by '\0'. */ -#define CPP_NUL_TERMINATE_Q(PFILE) (*(PFILE)->limit = 0) -#define CPP_NUL_TERMINATE(PFILE) (CPP_RESERVE(PFILE, 1), *(PFILE)->limit = 0) -#define CPP_ADJUST_WRITTEN(PFILE,DELTA) ((PFILE)->limit += (DELTA)) -#define CPP_SET_WRITTEN(PFILE,N) ((PFILE)->limit = (PFILE)->token_buffer + (N)) - -/* Advance the current line by one. */ -#define CPP_BUMP_BUFFER_LINE(PBUF) ((PBUF)->lineno++,\ -				    (PBUF)->line_base = (PBUF)->cur) -#define CPP_BUMP_LINE(PFILE) CPP_BUMP_BUFFER_LINE(CPP_BUFFER(PFILE)) - -#define CPP_OPTIONS(PFILE) ((PFILE)->opts) -#define CPP_BUFFER(PFILE) ((PFILE)->buffer) -#define CPP_PREV_BUFFER(BUFFER) ((BUFFER)->prev) -/* The bottom of the buffer stack. */ -#define CPP_NULL_BUFFER(PFILE) NULL - -/* The `pending' structure accumulates all the options that are not -   actually processed until we hit cpp_start_read.  It consists of -   several lists, one for each type of option.  We keep both head and -   tail pointers for quick insertion. */ -struct cpp_pending -{ -  struct pending_option *define_head, *define_tail; -  struct pending_option *assert_head, *assert_tail; - -  struct file_name_list *quote_head, *quote_tail; -  struct file_name_list *brack_head, *brack_tail; -  struct file_name_list *systm_head, *systm_tail; -  struct file_name_list *after_head, *after_tail; - -  struct pending_option *imacros_head, *imacros_tail; -  struct pending_option *include_head, *include_tail; -}; - -/* Pointed to by cpp_reader.opts. */ -struct cpp_options { -  char *in_fname; - -  /* Name of output file, for error messages.  */ -  char *out_fname; - -  struct file_name_map_list *map_list; - -  /* Non-0 means -v, so print the full set of include dirs.  */ -  char verbose; - -  /* Nonzero means use extra default include directories for C++.  */ - -  char cplusplus; - -  /* Nonzero means handle cplusplus style comments */ - -  char cplusplus_comments; - -  /* Nonzero means handle #import, for objective C.  */ - -  char objc; - -  /* Nonzero means this is an assembly file, and allow -     unknown directives, which could be comments.  */ - -  int lang_asm; - -  /* Nonzero means turn NOTREACHED into #pragma NOTREACHED etc */ - -  char for_lint; - -  /* Nonzero means handle CHILL comment syntax -     and output CHILL string delimiter for __DATE___ etc. */ - -  char chill; - -  /* Nonzero means copy comments into the output file.  */ - -  char put_out_comments; - -  /* Nonzero means process the ANSI trigraph sequences.  */ - -  char trigraphs; - -  /* Nonzero means print the names of included files rather than -     the preprocessed output.  1 means just the #include "...", -     2 means #include <...> as well.  */ - -  char print_deps; - -  /* Nonzero if missing .h files in -M output are assumed to be generated -     files and not errors.  */ - -  char print_deps_missing_files; - -  /* If true, fopen (deps_file, "a") else fopen (deps_file, "w"). */ -  char print_deps_append; - -  /* Nonzero means print names of header files (-H).  */ - -  char print_include_names; - -  /* Nonzero means try to make failure to fit ANSI C an error.  */ - -  char pedantic_errors; - -  /* Nonzero means don't print warning messages.  -w.  */ - -  char inhibit_warnings; - -  /* Nonzero means warn if slash-star appears in a comment.  */ - -  char warn_comments; - -  /* Nonzero means warn if there are any trigraphs.  */ - -  char warn_trigraphs; - -  /* Nonzero means warn if #import is used.  */ - -  char warn_import; - -  /* Nonzero means warn if a macro argument is (or would be) -     stringified with -traditional.  */ - -  char warn_stringify; - -  /* Nonzero means turn warnings into errors.  */ - -  char warnings_are_errors; - -  /* Nonzero causes output not to be done, -     but directives such as #define that have side effects -     are still obeyed.  */ - -  char no_output; - -  /* Nonzero means we should look for header.gcc files that remap file -     names.  */ -  char remap; - -  /* Nonzero means don't output line number information.  */ - -  char no_line_commands; - -/* Nonzero means output the text in failing conditionals, -   inside #failed ... #endfailed.  */ - -  char output_conditionals; - -  /* Nonzero means -I- has been seen, -     so don't look for #include "foo" the source-file directory.  */ -  char ignore_srcdir; - -  /* Zero means dollar signs are punctuation. -     This used to be needed for conformance to the C Standard, -     before the C Standard was corrected.  */ -  char dollars_in_ident; - -  /* Nonzero means try to imitate old fashioned non-ANSI preprocessor.  */ -  char traditional; - -  /* Nonzero means warn if undefined identifiers are evaluated in an #if.  */ -  char warn_undef; - -  /* Nonzero for the 1989 C Standard, including corrigenda and amendments.  */ -  char c89; - -  /* Nonzero for the 199x C Standard, including corrigenda and amendments.  */ -  char c9x; -   -  /* Nonzero means give all the error messages the ANSI standard requires.  */ -  char pedantic; - -  char done_initializing; - -  /* Search paths for include files.  */ -  struct file_name_list *quote_include;	 /* First dir to search for "file" */ -  struct file_name_list *bracket_include;/* First dir to search for <file> */ - -  /* Directory prefix that should replace `/usr/lib/gcc-lib/TARGET/VERSION' -     in the standard include file directories.  */ -  char *include_prefix; -  int include_prefix_len; - -  char no_standard_includes; -  char no_standard_cplusplus_includes; - -/* dump_only means inhibit output of the preprocessed text -             and instead output the definitions of all user-defined -             macros in a form suitable for use as input to cccp. -   dump_names means pass #define and the macro name through to output. -   dump_definitions means pass the whole definition (plus #define) through -*/ - -  enum {dump_none = 0, dump_only, dump_names, dump_definitions} -     dump_macros; - -/* Nonzero means pass all #define and #undef directives which we actually -   process through to the output stream.  This feature is used primarily -   to allow cc1 to record the #defines and #undefs for the sake of -   debuggers which understand about preprocessor macros, but it may -   also be useful with -E to figure out how symbols are defined, and -   where they are defined.  */ -  int debug_output; - -  /* Nonzero means pass #include lines through to the output, -     even if they are ifdefed out.  */ -  int dump_includes; - -  /* Pending options - -D, -U, -A, -I, -ixxx. */ -  struct cpp_pending *pending; - -  /* File name which deps are being written to. -     This is 0 if deps are being written to stdout.  */ -  char *deps_file; - -  /* Target-name to write with the dependency information.  */ -  char *deps_target; -}; - -#define CPP_TRADITIONAL(PFILE) (CPP_OPTIONS(PFILE)-> traditional) -#define CPP_WARN_UNDEF(PFILE) (CPP_OPTIONS(PFILE)->warn_undef) -#define CPP_C89(PFILE) (CPP_OPTIONS(PFILE)->c89) -#define CPP_PEDANTIC(PFILE) (CPP_OPTIONS (PFILE)->pedantic) -#define CPP_PRINT_DEPS(PFILE) (CPP_OPTIONS (PFILE)->print_deps) - -/* List of directories to look for include files in. */ -struct file_name_list -{ -  struct file_name_list *next; -  struct file_name_list *alloc; /* for the cache of -				   current directory entries */ -  char *name; -  unsigned int nlen; -  /* We use these to tell if the directory mentioned here is a duplicate -     of an earlier directory on the search path. */ -  ino_t ino; -  dev_t dev; -  /* If the following is nonzero, it is a C-language system include -     directory.  */ -  int sysp; -  /* Mapping of file names for this directory. -     Only used on MS-DOS and related platforms. */ -  struct file_name_map *name_map; -}; -#define ABSOLUTE_PATH ((struct file_name_list *)-1) - -/* This structure is used for the table of all includes.  It is -   indexed by the `short name' (the name as it appeared in the -   #include statement) which is stored in *nshort.  */ -struct include_hash -{ -  struct include_hash *next; -  /* Next file with the same short name but a -     different (partial) pathname). */ -  struct include_hash *next_this_file; - -  /* Location of the file in the include search path. -     Used for include_next */ -  struct file_name_list *foundhere; -  char *name;		/* (partial) pathname of file */ -  char *nshort;		/* name of file as referenced in #include */ -  char *control_macro;	/* macro, if any, preventing reinclusion - see -			   redundant_include_p */ -  char *buf, *limit;	/* for file content cache, not yet implemented */ -}; - -/* Name under which this program was invoked.  */ - -extern char *progname; - -/* The structure of a node in the hash table.  The hash table -   has entries for all tokens defined by #define commands (type T_MACRO), -   plus some special tokens like __LINE__ (these each have their own -   type, and the appropriate code is run when that type of node is seen. -   It does not contain control words like "#define", which are recognized -   by a separate piece of code. */ - -/* different flavors of hash nodes --- also used in keyword table */ -enum node_type { - T_DEFINE = 1,	/* the `#define' keyword */ - T_INCLUDE,	/* the `#include' keyword */ - T_INCLUDE_NEXT, /* the `#include_next' keyword */ - T_IMPORT,      /* the `#import' keyword */ - T_IFDEF,	/* the `#ifdef' keyword */ - T_IFNDEF,	/* the `#ifndef' keyword */ - T_IF,		/* the `#if' keyword */ - T_ELSE,	/* `#else' */ - T_PRAGMA,	/* `#pragma' */ - T_ELIF,	/* `#elif' */ - T_UNDEF,	/* `#undef' */ - T_LINE,	/* `#line' */ - T_ERROR,	/* `#error' */ - T_WARNING,	/* `#warning' */ - T_ENDIF,	/* `#endif' */ - T_SCCS,	/* `#sccs', used on system V.  */ - T_IDENT,	/* `#ident', used on system V.  */ - T_ASSERT,	/* `#assert', taken from system V.  */ - T_UNASSERT,	/* `#unassert', taken from system V.  */ - T_SPECLINE,	/* special symbol `__LINE__' */ - T_DATE,	/* `__DATE__' */ - T_FILE,	/* `__FILE__' */ - T_BASE_FILE,	/* `__BASE_FILE__' */ - T_INCLUDE_LEVEL, /* `__INCLUDE_LEVEL__' */ - T_VERSION,	/* `__VERSION__' */ - T_TIME,	/* `__TIME__' */ - T_STDC,	/* `__STDC__' */ - T_CONST,	/* Constant string, used by `__SIZE_TYPE__' etc */ - T_MACRO,	/* macro defined by `#define' */ - T_DISABLED,	/* macro temporarily turned off for rescan */ - T_PCSTRING,	/* precompiled string (hashval is KEYDEF *) */ - T_UNUSED	/* Used for something not defined.  */ - }; - -/* Structure returned by create_definition */ -typedef struct macrodef MACRODEF; -struct macrodef -{ -  struct definition *defn; -  unsigned char *symnam; -  int symlen; -}; - -/* Structure allocated for every #define.  For a simple replacement -   such as -   	#define foo bar , -   nargs = -1, the `pattern' list is null, and the expansion is just -   the replacement text.  Nargs = 0 means a functionlike macro with no args, -   e.g., -       #define getchar() getc (stdin) . -   When there are args, the expansion is the replacement text with the -   args squashed out, and the reflist is a list describing how to -   build the output from the input: e.g., "3 chars, then the 1st arg, -   then 9 chars, then the 3rd arg, then 0 chars, then the 2nd arg". -   The chars here come from the expansion.  Whatever is left of the -   expansion after the last arg-occurrence is copied after that arg. -   Note that the reflist can be arbitrarily long--- -   its length depends on the number of times the arguments appear in -   the replacement text, not how many args there are.  Example: -   #define f(x) x+x+x+x+x+x+x would have replacement text "++++++" and -   pattern list -     { (0, 1), (1, 1), (1, 1), ..., (1, 1), NULL } -   where (x, y) means (nchars, argno). */ - -typedef struct definition DEFINITION; -struct definition { -  int nargs; -  int length;			/* length of expansion string */ -  int predefined;		/* True if the macro was builtin or */ -				/* came from the command line */ -  unsigned char *expansion; -  int line;			/* Line number of definition */ -  char *file;			/* File of definition */ -  char rest_args;		/* Nonzero if last arg. absorbs the rest */ -  struct reflist { -    struct reflist *next; -    char stringify;		/* nonzero if this arg was preceded by a -				   # operator. */ -    char raw_before;		/* Nonzero if a ## operator before arg. */ -    char raw_after;		/* Nonzero if a ## operator after arg. */ -    char rest_args;		/* Nonzero if this arg. absorbs the rest */ -    int nchars;			/* Number of literal chars to copy before -				   this arg occurrence.  */ -    int argno;			/* Number of arg to substitute (origin-0) */ -  } *pattern; -  union { -    /* Names of macro args, concatenated in reverse order -       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.  */ -    unsigned char *argnames; -  } args; -}; - -/* These tables are not really `const', but they are only modified at -   initialization time, in a separate translation unit from the rest -   of the library.  We let the rest of the library think they are `const' -   to get better code and some additional sanity checks.  */ -#ifndef FAKE_CONST -#define FAKE_CONST const -#endif -extern FAKE_CONST unsigned char is_idstart[256]; -extern FAKE_CONST unsigned char is_idchar[256]; -extern FAKE_CONST unsigned char is_hor_space[256]; -extern FAKE_CONST unsigned char is_space[256]; -extern FAKE_CONST unsigned char trigraph_table[256]; -#undef FAKE_CONST - -/* Stack of conditionals currently in progress -   (including both successful and failing conditionals).  */ - -struct if_stack { -  struct if_stack *next;	/* for chaining to the next stack frame */ -  char *fname;		/* copied from input when frame is made */ -  int lineno;			/* similarly */ -  int if_succeeded;		/* true if a leg of this if-group -				    has been passed through rescan */ -  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 */ -}; -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 *, unsigned char *)); -extern void cpp_assert PARAMS ((cpp_reader *, unsigned char *)); -extern void cpp_undef  PARAMS ((cpp_reader *, unsigned char *)); -extern void cpp_unassert PARAMS ((cpp_reader *, unsigned char *)); - -extern void cpp_error PVPROTO ((cpp_reader *, const char *, ...)) -  ATTRIBUTE_PRINTF_2; -extern void cpp_warning PVPROTO ((cpp_reader *, const char *, ...)) -  ATTRIBUTE_PRINTF_2; -extern void cpp_pedwarn PVPROTO ((cpp_reader *, const char *, ...)) -  ATTRIBUTE_PRINTF_2; -extern void cpp_error_with_line PVPROTO ((cpp_reader *, int, int, const char *, ...)) -  ATTRIBUTE_PRINTF_4; -extern void cpp_warning_with_line PVPROTO ((cpp_reader *, int, int, const char *, ...)) -  ATTRIBUTE_PRINTF_4; -extern void cpp_pedwarn_with_line PVPROTO ((cpp_reader *, int, int, const char *, ...)) -  ATTRIBUTE_PRINTF_4; -extern void cpp_pedwarn_with_file_and_line PVPROTO ((cpp_reader *, char *, int, const char *, ...)) -  ATTRIBUTE_PRINTF_4; -extern void cpp_message_from_errno PROTO ((cpp_reader *, int, const char *)); -extern void cpp_error_from_errno PROTO ((cpp_reader *, const char *)); -extern void cpp_perror_with_name PROTO ((cpp_reader *, const char *)); -extern void v_cpp_message PROTO ((cpp_reader *, int, const char *, va_list)); - -extern void cpp_grow_buffer PARAMS ((cpp_reader *, long)); -extern HOST_WIDEST_INT cpp_parse_escape PARAMS ((cpp_reader *, char **, HOST_WIDEST_INT)); -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 unsigned char *, -					 int, int)); -extern void cpp_reader_init PARAMS ((cpp_reader *)); -extern void cpp_options_init PARAMS ((cpp_options *)); -extern int cpp_start_read PARAMS ((cpp_reader *, char *)); -extern int cpp_read_check_assertion PARAMS ((cpp_reader *)); -extern int scan_decls PARAMS ((cpp_reader *, int, char **)); -extern void skip_rest_of_line PARAMS ((cpp_reader *)); -extern void cpp_finish PARAMS ((cpp_reader *)); - -extern void quote_string		PARAMS ((cpp_reader *, const char *)); -extern void cpp_expand_to_buffer	PARAMS ((cpp_reader *, U_CHAR *, int)); -extern void cpp_scan_buffer		PARAMS ((cpp_reader *)); -extern int check_macro_name		PARAMS ((cpp_reader *, U_CHAR *, int)); - -/* Last arg to output_line_command.  */ -enum file_change_code {same_file, enter_file, leave_file}; -extern void output_line_command		PARAMS ((cpp_reader *, -						 enum file_change_code)); - -/* From cpperror.c */ -extern void cpp_fatal PVPROTO ((cpp_reader *, const char *, ...)) -  ATTRIBUTE_PRINTF_2; -extern void cpp_message PVPROTO ((cpp_reader *, int, const char *, ...)) -  ATTRIBUTE_PRINTF_3; -extern void cpp_pfatal_with_name PROTO ((cpp_reader *, const char *)); -extern void cpp_file_line_for_message PROTO ((cpp_reader *, char *, int, int)); -extern void cpp_print_containing_files PROTO ((cpp_reader *)); -extern void cpp_notice PVPROTO ((const char *msgid, ...)) ATTRIBUTE_PRINTF_1; - -/* In cppfiles.c */ -extern void simplify_pathname		PROTO ((char *)); -extern void merge_include_chains	PROTO ((struct cpp_options *)); -extern int find_include_file		PROTO ((cpp_reader *, char *, -						struct file_name_list *, -						struct include_hash **, -						int *)); -extern int finclude			PROTO ((cpp_reader *, int, -					        struct include_hash *)); -extern void deps_output			PROTO ((cpp_reader *, char *, int)); -extern struct include_hash *include_hash PROTO ((cpp_reader *, char *, int)); - -#ifndef INCLUDE_LEN_FUDGE -#define INCLUDE_LEN_FUDGE 0 -#endif - -     -#ifdef __cplusplus -} -#endif -#endif /* __GCC_CPPLIB__ */ - | 
