Change compile_instance/compile_c_instance into classes
This patch changes structs compile_instance and compile_c_instance into classes. Because of the nature of the change, there are a number of unavoidably mechanical changes buried in here, such as turning variable access of the POD struct into method calls, removing the struct keyword, and changing access of the plugin from "c_plugin->operation()" to "plugin ().operation ()". There is one "non-trivial" change associated with this patch, though. The type cache and symbol error maps have been moved into the base class, believing these facilities would be used other language implementations. [They are indeed re-used by C++.] gdb/ChangeLog: * compile/compile-c-support.c (c_get_compile_context): Use `new' instead of `new_compile_instance'. * compile/compile-c-symbols.c (compile_instance::insert_symbol_error): Update description. If the symbol error map is not initialized, create it. (generate_c_for_for_one_symbol): Do not check/initialize the symbol error map. * compile/compile-c-types.c (compile_c_instance): Make a class. Update all callers. (compile_instance::compile_instance): Initialize the type cache. (get_cached_type): New function. (insert_type): Update description. (compile_c_instance::m_default_cflags): Define. (convert_type): Update description. Use get_cached_type. (delete_instance): Moved to destructor. (new_compile_instance): Moved to constructor. * compile/compile-c.h (compile_c_instance): Make class inheriting from compile_instance. <base>: Remove field. <type_map, symbol_err_map>: Move to base class. <c_plugin>: Rename to `m_plugin' and remove pointer type. * compile/compile-internal.h (compile_instance): Make class. <type_map_t, symbol_err_map_t>: Define. <fe>: Rename to `m_gcc_fe'. <scope, block, gcc_target_options>: Add `m_' prefix. <m_type_map, m_symbol_err_map>: New fields, moved from compile_c_instance. <destroy>: Remove. (convert_type, new_compile_instance): Remove. * compile/compile.c (cleanup_compile_instance): Remove. (compile_to_object): Use unique_ptr to eliminate cleanups. (compile_instance::set_print_callback, compile_instance::version) (compile_instance::set_verbose) (compile_instance::set_driver_filename) (compile_instance::set_triplet_regexp) (compile_instance::set_arguments) (compile_instance::set_source_file) (compile_instance::compile): Define.
This commit is contained in:
parent
18cdc6d8f8
commit
9cdfd9a26e
9 changed files with 428 additions and 260 deletions
|
@ -158,7 +158,7 @@ extern int c_textual_element_type (struct type *, char);
|
|||
exception on failure. This is suitable for use as the
|
||||
la_get_compile_instance language method. */
|
||||
|
||||
extern struct compile_instance *c_get_compile_context (void);
|
||||
extern compile_instance *c_get_compile_context (void);
|
||||
|
||||
/* This takes the user-supplied text and returns a new bit of code to
|
||||
compile.
|
||||
|
@ -166,7 +166,7 @@ extern struct compile_instance *c_get_compile_context (void);
|
|||
This is used as the la_compute_program language method; see that
|
||||
for a description of the arguments. */
|
||||
|
||||
extern std::string c_compute_program (struct compile_instance *inst,
|
||||
extern std::string c_compute_program (compile_instance *inst,
|
||||
const char *input,
|
||||
struct gdbarch *gdbarch,
|
||||
const struct block *expr_block,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue