diff options
Diffstat (limited to 'gdb/language.h')
-rw-r--r-- | gdb/language.h | 43 |
1 files changed, 26 insertions, 17 deletions
diff --git a/gdb/language.h b/gdb/language.h index 64ccfcc..34f5692 100644 --- a/gdb/language.h +++ b/gdb/language.h @@ -126,16 +126,6 @@ struct language_arch_info struct type *bool_type_default; }; -/* A pointer to a function expected to return nonzero if - SYMBOL_SEARCH_NAME matches the given LOOKUP_NAME. - - SYMBOL_SEARCH_NAME should be a symbol's "search" name. - LOOKUP_NAME should be the name of an entity after it has been - transformed for lookup. */ - -typedef int (*symbol_name_cmp_ftype) (const char *symbol_search_name, - const char *lookup_name); - /* Structure tying together assorted information about a language. */ struct language_defn @@ -331,6 +321,7 @@ struct language_defn void (*la_collect_symbol_completion_matches) (completion_tracker &tracker, complete_symbol_mode mode, + symbol_name_match_type match_type, const char *text, const char *word, enum type_code code); @@ -367,13 +358,18 @@ struct language_defn 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. This is mostly for languages - such as Ada where the matching algorithm depends on LOOKUP_NAME. + /* 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 strcmp_iw will be used - to perform the matching. */ - symbol_name_cmp_ftype (*la_get_symbol_name_cmp) (const char *lookup_name); + 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 &); /* Find all symbols in the current program space matching NAME in DOMAIN, according to this language's rules. @@ -389,7 +385,8 @@ struct language_defn special processing here, 'iterate_over_symbols' should be used as the definition. */ void (*la_iterate_over_symbols) - (const struct block *block, const char *name, domain_enum domain, + (const struct block *block, const lookup_name_info &name, + domain_enum domain, gdb::function_view<symbol_found_callback_ftype> callback); /* Hash the given symbol search name. Use @@ -627,6 +624,18 @@ extern unsigned int default_search_name_hash (const char *search_name); void c_get_string (struct value *value, gdb_byte **buffer, 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 *match); + +/* Get LANG's symbol_name_matcher method for LOOKUP_NAME. Returns + default_symbol_name_matcher if not set. */ +symbol_name_matcher_ftype *language_get_symbol_name_matcher + (const language_defn *lang, const lookup_name_info &lookup_name); + /* The languages supported by GDB. */ extern const struct language_defn auto_language_defn; |