X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=libcpp%2Finternal.h;h=555874c1d47bce6455e031ac9fae41dd3a3e8aaa;hb=2511f7808247c921b32ff73dbf82527b77f92215;hp=bf6c5f8c8d2e9ac8e4792fd8334fbcfe06c5826f;hpb=924bbf0237ffce7bd66e35cba2afbbe96bea0202;p=pf3gnuchains%2Fgcc-fork.git diff --git a/libcpp/internal.h b/libcpp/internal.h index bf6c5f8c8d2..555874c1d47 100644 --- a/libcpp/internal.h +++ b/libcpp/internal.h @@ -1,10 +1,10 @@ /* Part of CPP library. - Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007 - Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, + 2008, 2009 Free Software Foundation, Inc. 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 +Free Software Foundation; either version 3, or (at your option) any later version. This program is distributed in the hope that it will be useful, @@ -13,8 +13,8 @@ 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, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ +along with this program; see the file COPYING3. If not see +. */ /* This header defines all the internal data structures and functions that need to be visible across files. It should not be used outside @@ -26,10 +26,6 @@ Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include "symtab.h" #include "cpp-id-data.h" -#ifndef HAVE_ICONV_H -#undef HAVE_ICONV -#endif - #if HAVE_ICONV #include #else @@ -37,6 +33,10 @@ Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ typedef int iconv_t; /* dummy */ #endif +#ifdef __cplusplus +extern "C" { +#endif + struct directive; /* Deliberately incomplete. */ struct pending_option; struct op; @@ -68,7 +68,7 @@ struct cset_converter #define CPP_INCREMENT_LINE(PFILE, COLS_HINT) do { \ const struct line_maps *line_table = PFILE->line_table; \ const struct line_map *map = &line_table->maps[line_table->used-1]; \ - unsigned int line = SOURCE_LINE (map, line_table->highest_line); \ + linenum_type line = SOURCE_LINE (map, line_table->highest_line); \ linemap_line_start (PFILE->line_table, line + 1, COLS_HINT); \ } while (0) @@ -305,6 +305,16 @@ struct cpp_buffer struct cset_converter input_cset_desc; }; +/* The list of saved macros by push_macro pragma. */ +struct def_pragma_macro { + /* Chain element to previous saved macro. */ + struct def_pragma_macro *next; + /* Name of the macro. */ + char *name; + /* The stored macro content. */ + cpp_macro *value; +}; + /* 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. */ @@ -388,9 +398,6 @@ struct cpp_reader /* Nonzero prevents the lexer from re-using the token runs. */ unsigned int keep_tokens; - /* Error counter for exit code. */ - unsigned int errors; - /* Buffer to hold macro definition string. */ unsigned char *macro_buffer; unsigned int macro_buffer_len; @@ -400,6 +407,10 @@ struct cpp_reader struct cset_converter narrow_cset_desc; /* Descriptor for converting from the source character set to the + UTF-8 execution character set. */ + struct cset_converter utf8_cset_desc; + + /* Descriptor for converting from the source character set to the UTF-16 execution character set. */ struct cset_converter char16_cset_desc; @@ -471,6 +482,12 @@ struct cpp_reader /* Next value of __COUNTER__ macro. */ unsigned int counter; + + /* Table of comments, when state.save_comments is true. */ + cpp_comment_table comments; + + /* List of saved macros by push_macro. */ + struct def_pragma_macro *pushed_macros; }; /* Character classes. Based on the more primitive macros in safe-ctype.h. @@ -518,10 +535,6 @@ cpp_in_primary_file (cpp_reader *pfile) return pfile->line_table->depth == 1; } -/* In errors.c */ -extern int _cpp_begin_message (cpp_reader *, int, - source_location, unsigned int); - /* In macro.c */ extern void _cpp_free_definition (cpp_hashnode *); extern bool _cpp_create_definition (cpp_reader *, cpp_hashnode *); @@ -536,6 +549,7 @@ extern const unsigned char *_cpp_builtin_macro_text (cpp_reader *, extern int _cpp_warn_if_unused_macro (cpp_reader *, cpp_hashnode *, void *); extern void _cpp_push_token_context (cpp_reader *, cpp_hashnode *, const cpp_token *, unsigned int); +extern void _cpp_backup_tokens_direct (cpp_reader *, unsigned int); /* In identifiers.c */ extern void _cpp_init_hashtable (cpp_reader *, hash_table *); @@ -561,7 +575,7 @@ extern bool _cpp_read_file_entries (cpp_reader *, FILE *); extern struct stat *_cpp_get_file_stat (_cpp_file *); /* In expr.c */ -extern bool _cpp_parse_expr (cpp_reader *); +extern bool _cpp_parse_expr (cpp_reader *, bool); extern struct op *_cpp_expand_op_stack (cpp_reader *); /* In lex.c */ @@ -574,9 +588,11 @@ extern const cpp_token *_cpp_lex_token (cpp_reader *); extern cpp_token *_cpp_lex_direct (cpp_reader *); extern int _cpp_equiv_tokens (const cpp_token *, const cpp_token *); extern void _cpp_init_tokenrun (tokenrun *, unsigned int); +extern cpp_hashnode *_cpp_lex_identifier (cpp_reader *, const char *); /* In init.c. */ extern void _cpp_maybe_push_include_file (cpp_reader *); +extern const char *cpp_named_operator2name (enum cpp_ttype type); /* In directives.c */ extern int _cpp_test_assertion (cpp_reader *, unsigned int *); @@ -588,7 +604,7 @@ extern int _cpp_do__Pragma (cpp_reader *); extern void _cpp_init_directives (cpp_reader *); extern void _cpp_init_internal_pragmas (cpp_reader *); extern void _cpp_do_file_change (cpp_reader *, enum lc_reason, const char *, - unsigned int, unsigned int); + linenum_type, unsigned int); extern void _cpp_pop_buffer (cpp_reader *); /* In directives.c */ @@ -644,7 +660,7 @@ extern cppchar_t _cpp_valid_ucn (cpp_reader *, const unsigned char **, extern void _cpp_destroy_iconv (cpp_reader *); extern unsigned char *_cpp_convert_input (cpp_reader *, const char *, unsigned char *, size_t, size_t, - off_t *); + const unsigned char **, off_t *); extern const char *_cpp_default_encoding (void); extern cpp_hashnode * _cpp_interpret_identifier (cpp_reader *pfile, const unsigned char *id, @@ -708,4 +724,8 @@ ufputs (const unsigned char *s, FILE *f) return fputs ((const char *)s, f); } +#ifdef __cplusplus +} +#endif + #endif /* ! LIBCPP_INTERNAL_H */