aboutsummaryrefslogtreecommitdiff
path: root/gcc/cpplib.h
diff options
context:
space:
mode:
authorNeil Booth <neil@daikokuya.demon.co.uk>2001-11-15 10:01:10 +0000
committerNeil Booth <neil@gcc.gnu.org>2001-11-15 10:01:10 +0000
commitf5e99456f19b80978984f781e1d847b90d09b30a (patch)
treecac90266aeb52525edc15fddc73e9428ce8a8556 /gcc/cpplib.h
parent87bc7fa6aab909eb842be0800e0284b0daa3de70 (diff)
downloadgcc-f5e99456f19b80978984f781e1d847b90d09b30a.zip
gcc-f5e99456f19b80978984f781e1d847b90d09b30a.tar.gz
gcc-f5e99456f19b80978984f781e1d847b90d09b30a.tar.bz2
c-common.c: Include c-lex.h.
* c-common.c: Include c-lex.h. (c_common_lang_init): Change prototype. Call init_c_lex and init_pragma from here. * c-common.h (c_common_lang_init): Change prototype. * c-decl.c (init_decl_processing): Rename. Call c_parse_init. * c-lang.c (c_init): Change prototype. Update. (c_init_options): Update. * c-lex.c (cpp_filename): Remove. (init_c_lex): Update. Read the main file, and get the original file name. (yyparse): Finish the command line options. * c-parse.in (c_parse_init): Call init_reswords here. (init_parse): Remove. * c-tree.h (c_init_decl_processing): New. * cpphash.c (_cpp_init_hashtable): After initializing the hash table, populate it. * cppinit.c (read_original_filename, cpp_finish_options): New. (cpp_create_reader): New prototype. Defer hash table initialization. (cpp_start_read): Rename cpp_read_main_file. Initialize the hash table. Get the original filename. * cpplib.h (cpp_create_reader): Update. (cpp_start_read): Remove. (cpp_read_main_file, cpp_finish_options): New. * cppmain.c (main, do_preprocessing): Update. * langhooks.h (struct langhooks): Update init prototype. * toplev.c (general_init, parse_options_and_default_flags, process_options, lang_indpendent_init, lang_dependent_init, init_asm_output): New; perform the bulk of initialization. (compile_file): Move most of initialization to above functions. (debug_hooks): Initialize statically. (set_Wunused): Relocate. (toplev_main): Move most of initialization to other init functions. Have a clear logic flow. * tree.h (init_parse, init_decl_processing): Remove. ada: * misc.c (gnat_init): Change prototype. Include the functionality of the old init_parse and init_decl_processing. (gnat_init_decl_processing): New prototype. (init_parse): Remove. * utils.c (init_decl_processing): Rename gnat_init_decl_processing. cp: * cp-tree.h (init_reswords, cxx_init_decl_processing): New. (cxx_init): Update prototype. * decl.c (init_decl_processing): Rename. Move null node init to its creation time. * lex.c (cxx_init_options): Update. (cxx_init): Combine with old init_parse; also call cxx_init_decl_processing. f: * com.c (ffecom_init_decl_processing): Renamed from init_decl_processing. (init_parse): Move contents to ffe_init. (ffe_init): Update prototype. java: * decl.c (init_decl_processing): Rename java_init_decl_processing. * java-tree.h: New prototype. * lang.c (java_init): Update prototype. Combine with old init_parse. objc: * objc-act.c (objc_init): Update prototype, combine with old init_parse. (objc_init_options): Update. From-SVN: r47046
Diffstat (limited to 'gcc/cpplib.h')
-rw-r--r--gcc/cpplib.h43
1 files changed, 30 insertions, 13 deletions
diff --git a/gcc/cpplib.h b/gcc/cpplib.h
index 2ccac62..e9002fb 100644
--- a/gcc/cpplib.h
+++ b/gcc/cpplib.h
@@ -451,16 +451,8 @@ struct cpp_hashnode
} value;
};
-/* Call this first to get a handle to pass to other functions. If you
- want cpplib to manage its own hashtable, pass in a NULL pointer.
- Or you can pass in an initialised hash table that cpplib will use;
- this technique is used by the C front ends. */
-extern cpp_reader *cpp_create_reader PARAMS ((struct ht *,
- enum c_lang));
-
-/* Call this to release the handle. Any use of the handle after this
- function returns is invalid. Returns cpp_errors (pfile). */
-extern int cpp_destroy PARAMS ((cpp_reader *));
+/* Call this first to get a handle to pass to other functions. */
+extern cpp_reader *cpp_create_reader PARAMS ((enum c_lang));
/* Call these to get pointers to the options and callback structures
for a given reader. These pointers are good until you call
@@ -476,13 +468,39 @@ extern void cpp_set_callbacks PARAMS ((cpp_reader *, cpp_callbacks *));
return value is the number of arguments used. If
cpp_handle_options returns without using all arguments, it couldn't
understand the next switch. When there are no switches left, you
- must call cpp_post_options before calling cpp_start_read. Only
+ must call cpp_post_options before calling cpp_read_main_file. Only
after cpp_post_options are the contents of the cpp_options
- structure reliable. */
+ structure reliable. Options processing is not completed until you
+ call cpp_finish_options. */
extern int cpp_handle_options PARAMS ((cpp_reader *, int, char **));
extern int cpp_handle_option PARAMS ((cpp_reader *, int, char **));
extern void cpp_post_options PARAMS ((cpp_reader *));
+/* This function reads the file, but does not start preprocessing. It
+ returns the name of the original file; this is the same as the
+ input file, except for preprocessed input. This will generate at
+ least one file change callback, and possibly a line change callback
+ too. If there was an error opening the file, it returns NULL.
+
+ If you want cpplib to manage its own hashtable, pass in a NULL
+ pointer. Otherise you should pass in an initialised hash table
+ that cpplib will share; this technique is used by the C front
+ ends. */
+extern const char *cpp_read_main_file PARAMS ((cpp_reader *, const char *,
+ struct ht *));
+
+/* Deferred handling of command line options that can generate debug
+ callbacks, such as -D and -imacros. Call this after
+ cpp_read_main_file. The front ends need this separation so they
+ can initialize debug output with the original file name, returned
+ from cpp_read_main_file, before they get debug callbacks. */
+extern void cpp_finish_options PARAMS ((cpp_reader *));
+
+/* Call this to release the handle at the end of preprocessing. Any
+ use of the handle after this function returns is invalid. Returns
+ cpp_errors (pfile). */
+extern int cpp_destroy PARAMS ((cpp_reader *));
+
/* Error count. */
extern unsigned int cpp_errors PARAMS ((cpp_reader *));
@@ -495,7 +513,6 @@ extern void cpp_register_pragma PARAMS ((cpp_reader *,
const char *, const char *,
void (*) PARAMS ((cpp_reader *))));
-extern int cpp_start_read PARAMS ((cpp_reader *, const char *));
extern void cpp_finish PARAMS ((cpp_reader *));
extern int cpp_avoid_paste PARAMS ((cpp_reader *, const cpp_token *,
const cpp_token *));