X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Flanguage.h;h=76dad325b5b740a9c73fd007a5bb669db13d589d;hb=33fbcbee30e6565db27a4c5076ff61c9fc8e0744;hp=2ea2dcab8a6490c5a4038c0fdde3d2937a492298;hpb=5953832c5aa030416ff8a3c29160f93826e47366;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/language.h b/gdb/language.h index 2ea2dcab8a..76dad325b5 100644 --- a/gdb/language.h +++ b/gdb/language.h @@ -136,6 +136,16 @@ 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 @@ -230,17 +240,17 @@ struct language_defn OPTIONS are the formatting options to be used when printing. */ - int (*la_val_print) (struct type *type, - const gdb_byte *contents, - int embedded_offset, CORE_ADDR address, - struct ui_file *stream, int recurse, - const struct value *val, - const struct value_print_options *options); + void (*la_val_print) (struct type *type, + const gdb_byte *contents, + int embedded_offset, CORE_ADDR address, + struct ui_file *stream, int recurse, + const struct value *val, + const struct value_print_options *options); /* Print a top-level value using syntax appropriate for this language. */ - int (*la_value_print) (struct value *, struct ui_file *, - const struct value_print_options *); + void (*la_value_print) (struct value *, struct ui_file *, + const struct value_print_options *); /* PC is possibly an unknown languages trampoline. If that PC falls in a trampoline belonging to this language, @@ -318,19 +328,13 @@ struct language_defn void (*la_get_string) (struct value *value, gdb_byte **buffer, int *length, struct type **chartype, const char **charset); - /* Compare two symbol names according to language rules. For - instance, in C++, we might want to ignore whitespaces in - the symbol name. Or some case-insensitive language might - want to ignore casing during the match. - - Both STR1 and STR2 are expected to be demangled name, except - for Ada, where STR1 and STR2 are expected to be encoded names. - The latter is because searches are performed using the encoded - name in Ada. - - The return value follows the same spirit as strcmp. */ + /* 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. - int (*la_symbol_name_compare) (const char *str1, const char *str2); + 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); /* Find all symbols in the current program space matching NAME in DOMAIN, according to this language's rules. @@ -343,13 +347,13 @@ struct language_defn argument. If CALLBACK returns zero, the iteration ends at that point. - This field can be NULL, meaning that this language doesn't need - any special code aside from ordinary searches of the symbol - table. */ + This field may not be NULL. If the language does not need any + 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, - int (*callback) (struct symbol *, void *), + symbol_found_callback_ftype *callback, void *data); /* Add fields above this point, so the magic number is always last. */