gdb: Convert language la_get_symbol_name_matcher field to a method
This commit changes the language_data::la_get_symbol_name_matcher function pointer member variable into a member function of language_defn. There should be no user visible changes after this commit. Before this commit access to the la_get_symbol_name_matcher function pointer was through the get_symbol_name_matcher function, which looked something like this (is pseudo-code): <return-type> get_symbol_name_matcher (language_defn *lang, <other args>) { if (current_language == ada) current_language->la_get_symbol_name_matcher (<other args>); else lang->la_get_symbol_name_matcher (<other args>); } In this commit I moved the get_symbol_name_matcher as a non-virtual function in the language_defn base class, I then add a new virtual method that is only used from within get_symbol_name_matcher, this can then be overridden by specific languages as needed. So we now have: class language_defn { <return-type> get_symbol_name_matcher (<args>) { if (current_language == ada) return current_language->get_symbol_name_matcher_inner (<args>); else return this->get_symbol_name_matcher_inner (<args>); } virtual <return-type> get_symbol_name_matcher_inner (<args>) { .... } } gdb/ChangeLog: * ada-lang.c (ada_get_symbol_name_matcher): Update header comment. (ada_language_data): Delete la_get_symbol_name_matcher initializer. (language_defn::get_symbol_name_matcher_inner): New member function. * c-lang.c (c_language_data): Delete la_get_symbol_name_matcher initializer. (cplus_language_data): Likewise. (cplus_language::get_symbol_name_matcher_inner): New member function. (asm_language_data): Delete la_get_symbol_name_matcher initializer. (minimal_language_data): Likewise. * cp-support.h (cp_get_symbol_name_matcher): Update header comment. * d-lang.c (d_language_data): Delete la_get_symbol_name_matcher initializer. * dictionary.c (iter_match_first_hashed): Update call to get_symbol_name_matcher. (iter_match_next_hashed): Likewise. (iter_match_next_linear): Likewise. * dwarf2/read.c (dw2_expand_symtabs_matching_symbol): Likewise. * f-lang.c (f_language_data): Delete la_get_symbol_name_matcher initializer. (f_language::get_symbol_name_matcher_inner): New member function. * go-lang.c (go_language_data): Delete la_get_symbol_name_matcher initializer. * language.c (default_symbol_name_matcher): Update header comment, make static. (language_defn::get_symbol_name_matcher): New definition. (language_defn::get_symbol_name_matcher_inner): Likewise. (get_symbol_name_matcher): Delete. (unknown_language_data): Delete la_get_symbol_name_matcher initializer. (auto_language_data): Likewise. * language.h (language_data): Delete la_get_symbol_name_matcher field. (language_defn::get_symbol_name_matcher): New member function. (language_defn::get_symbol_name_matcher_inner): Likewise. (default_symbol_name_matcher): Delete declaration. * linespec.c (find_methods): Update call to get_symbol_name_matcher. * m2-lang.c (m2_language_data): Delete la_get_symbol_name_matcher initializer. * minsyms.c (lookup_minimal_symbol): Update call to get_symbol_name_matcher. (iterate_over_minimal_symbols): Likewise. * objc-lang.c (objc_language_data): Delete la_get_symbol_name_matcher initializer. * opencl-lang.c (opencl_language_data): Likewise. * p-lang.c (pascal_language_data): Likewise. * psymtab.c (psymbol_name_matches): Update call to get_symbol_name_matcher. * rust-lang.c (rust_language_data): Delete la_get_symbol_name_matcher initializer. * symtab.c (symbol_matches_search_name): Update call to get_symbol_name_matcher. (compare_symbol_name): Likewise.
This commit is contained in:
parent
9a49ad8c52
commit
c9debfb97e
20 changed files with 151 additions and 69 deletions
|
@ -338,19 +338,6 @@ struct language_data
|
|||
gdb::unique_xmalloc_ptr<char> (*la_watch_location_expression)
|
||||
(struct type *type, CORE_ADDR addr);
|
||||
|
||||
/* Return a pointer to the function that should be used to match a
|
||||
symbol name against LOOKUP_NAME, according to this language's
|
||||
rules. The matching algorithm depends on LOOKUP_NAME. For
|
||||
example, on Ada, the matching algorithm depends on the symbol
|
||||
name (wild/full/verbatim matching), and on whether we're doing
|
||||
a normal lookup or a completion match lookup.
|
||||
|
||||
This field may be NULL, in which case
|
||||
default_symbol_name_matcher is used to perform the
|
||||
matching. */
|
||||
symbol_name_matcher_ftype *(*la_get_symbol_name_matcher)
|
||||
(const lookup_name_info &);
|
||||
|
||||
/* Various operations on varobj. */
|
||||
const struct lang_varobj_ops *la_varobj_ops;
|
||||
|
||||
|
@ -443,6 +430,20 @@ struct language_defn : language_data
|
|||
return ::iterate_over_symbols (block, name, domain, callback);
|
||||
}
|
||||
|
||||
/* Return a pointer to the function that should be used to match a
|
||||
symbol name against LOOKUP_NAME, according to this language's
|
||||
rules. The matching algorithm depends on LOOKUP_NAME. For
|
||||
example, on Ada, the matching algorithm depends on the symbol
|
||||
name (wild/full/verbatim matching), and on whether we're doing
|
||||
a normal lookup or a completion match lookup.
|
||||
|
||||
As Ada wants to capture symbol matching for all languages in some
|
||||
cases, then this method is a non-overridable interface. Languages
|
||||
should override GET_SYMBOL_NAME_MATCHER_INNER if they need to. */
|
||||
|
||||
symbol_name_matcher_ftype *get_symbol_name_matcher
|
||||
(const lookup_name_info &lookup_name) const;
|
||||
|
||||
/* If this language allows compilation from the gdb command line, then
|
||||
this method will return an instance of struct gcc_context appropriate
|
||||
to the language. If compilation for this language is generally
|
||||
|
@ -530,6 +531,14 @@ struct language_defn : language_data
|
|||
|
||||
/* List of all known languages. */
|
||||
static const struct language_defn *languages[nr_languages];
|
||||
|
||||
protected:
|
||||
|
||||
/* This is the overridable part of the GET_SYMBOL_NAME_MATCHER method.
|
||||
See that method for a description of the arguments. */
|
||||
|
||||
virtual symbol_name_matcher_ftype *get_symbol_name_matcher_inner
|
||||
(const lookup_name_info &lookup_name) const;
|
||||
};
|
||||
|
||||
/* Pointer to the language_defn for our current language. This pointer
|
||||
|
@ -698,13 +707,6 @@ void c_get_string (struct value *value,
|
|||
int *length, struct type **char_type,
|
||||
const char **charset);
|
||||
|
||||
/* The default implementation of la_symbol_name_matcher. Matches with
|
||||
strncmp_iw. */
|
||||
extern bool default_symbol_name_matcher
|
||||
(const char *symbol_search_name,
|
||||
const lookup_name_info &lookup_name,
|
||||
completion_match_result *comp_match_res);
|
||||
|
||||
/* Get LANG's symbol_name_matcher method for LOOKUP_NAME. Returns
|
||||
default_symbol_name_matcher if not set. LANG is used as a hint;
|
||||
the function may ignore it depending on the current language and
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue