gdb: Convert language la_emitchar field to a method

This commit changes the language_data::la_emitchar function pointer
member variable into a member function of language_defn.

There should be no user visible changes after this commit.

gdb/ChangeLog:

	* ada-lang.c (emit_char): Renamed to ada_language::emitchar.
	(ada_language_data): Delete la_emitchar initializer.
	(ada_language::emitchar): New member function, implementation from
	emit_char.
	* c-lang.c (c_language_data): Delete la_emitchar initializer.
	(cplus_language_data): Likewise.
	(asm_language_data): Likewise.
	(minimal_language_data): Likewise.
	* d-lang.c (d_language_data): Likewise.
	* f-lang.c (f_emit_char): Rename to f_language::emitchar.
	(f_language_data): Delete la_emitchar initializer.
	(f_language::emitchar): New member function, implementation from
	f_emit_char.
	* go-lang.c (go_language_data): Delete la_emitchar initializer.
	* language.c (unk_lang_emit_char): Delete.
	(language_defn::emitchar): New member function definition.
	(unknown_language_data): Delete la_emitchar initializer.
	(unknown_language::emitchar): New member function.
	(auto_language_data): Delete la_emitchar initializer.
	(auto_language::emitchar): New member function.
	* language.h (language_data): Delete la_emitchar field.
	(language_defn::emitchar): New member field declaration.
	(LA_EMIT_CHAR): Update call to emitchar.
	* m2-lang.c (m2_emit_char): Rename to m2_language::emitchar.
	(m2_language_data): Delete la_emitchar initializer.
	(m2_language::emitchar): New member function, implementation from
	m2_emit_char.
	* objc-lang.c (objc_language_data): Delete la_emitchar
	initializer.
	* opencl-lang.c (opencl_language_data): Likewise.
	* p-lang.c (pascal_emit_char): Rename to pascal_language::emitchar.
	(pascal_language_data): Delete la_emitchar initializer.
	(pascal_language::emitchar): New member function, implementation
	from pascal_emit_char.
	* rust-lang.c (rust_emitchar): Rename to rust_language::emitchar.
	(rust_language_data): Delete la_emitchar initializer.
	(rust_language::emitchar): New member function, implementation
	from rust_emitchar.
This commit is contained in:
Andrew Burgess
2020-06-02 21:54:49 +01:00
parent 1bf9c36374
commit ec8cec5b96
13 changed files with 173 additions and 152 deletions

View File

@@ -281,32 +281,6 @@ rust_get_trait_object_pointer (struct value *value)
/* la_emitchar implementation for Rust. */
static void
rust_emitchar (int c, struct type *type, struct ui_file *stream, int quoter)
{
if (!rust_chartype_p (type))
generic_emit_char (c, type, stream, quoter,
target_charset (get_type_arch (type)));
else if (c == '\\' || c == quoter)
fprintf_filtered (stream, "\\%c", c);
else if (c == '\n')
fputs_filtered ("\\n", stream);
else if (c == '\r')
fputs_filtered ("\\r", stream);
else if (c == '\t')
fputs_filtered ("\\t", stream);
else if (c == '\0')
fputs_filtered ("\\0", stream);
else if (c >= 32 && c <= 127 && isprint (c))
fputc_filtered (c, stream);
else if (c <= 255)
fprintf_filtered (stream, "\\x%02x", c);
else
fprintf_filtered (stream, "\\u{%06x}", c);
}
/* la_printchar implementation for Rust. */
static void
@@ -1991,7 +1965,6 @@ extern const struct language_data rust_language_data =
&exp_descriptor_rust,
rust_printchar, /* Print a character constant */
rust_printstr, /* Function to print string constant */
rust_emitchar, /* Print a single char */
rust_print_typedef, /* Print a typedef using appropriate syntax */
NULL, /* name_of_this */
false, /* la_store_sym_names_in_linkage_form_p */
@@ -2147,6 +2120,32 @@ public:
{
return rust_parse (ps);
}
/* See language.h. */
void emitchar (int ch, struct type *chtype,
struct ui_file *stream, int quoter) const override
{
if (!rust_chartype_p (chtype))
generic_emit_char (ch, chtype, stream, quoter,
target_charset (get_type_arch (chtype)));
else if (ch == '\\' || ch == quoter)
fprintf_filtered (stream, "\\%c", ch);
else if (ch == '\n')
fputs_filtered ("\\n", stream);
else if (ch == '\r')
fputs_filtered ("\\r", stream);
else if (ch == '\t')
fputs_filtered ("\\t", stream);
else if (ch == '\0')
fputs_filtered ("\\0", stream);
else if (ch >= 32 && ch <= 127 && isprint (ch))
fputc_filtered (ch, stream);
else if (ch <= 255)
fprintf_filtered (stream, "\\x%02x", ch);
else
fprintf_filtered (stream, "\\u{%06x}", ch);
}
};
/* Single instance of the Rust language class. */