X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Flanguage.h;h=14d6fac30371313efc70c5c7316c751ff838b52a;hb=c1b5c1ebc938b6dc0277363b8c47d75b0b5a621f;hp=3e0bc9d0d462f1b223eee4a2496a389b584dc17a;hpb=62253a61473764b0d084b01eff06a93fb38bb2e3;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/language.h b/gdb/language.h index 3e0bc9d0d4..14d6fac303 100644 --- a/gdb/language.h +++ b/gdb/language.h @@ -24,7 +24,7 @@ #define LANGUAGE_H 1 #include "symtab.h" -#include "common/function-view.h" +#include "gdbsupport/function-view.h" #include "expression.h" /* Forward decls for prototypes. */ @@ -360,21 +360,6 @@ struct language_defn reference at the language level. */ int (*la_pass_by_reference) (struct type *type); - /* Obtain a string from the inferior, storing it in a newly allocated - buffer in BUFFER, which should be freed by the caller. If the - in- and out-parameter *LENGTH is specified at -1, the string is - read until a null character of the appropriate width is found - - otherwise the string is read to the length of characters specified. - On completion, *LENGTH will hold the size of the string in characters. - If a *LENGTH of -1 was specified it will count only actual - characters, excluding any eventual terminating null character. - Otherwise *LENGTH will include all characters - including any nulls. - CHARSET will hold the encoding used in the string. */ - void (*la_get_string) (struct value *value, - gdb::unique_xmalloc_ptr *buffer, - int *length, struct type **chartype, - const char **charset); - /* Return an expression that can be used for a location watchpoint. TYPE is a pointer type that points to the memory to watch, and ADDR is the address of the watched memory. */ @@ -407,7 +392,7 @@ struct language_defn 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) + bool (*la_iterate_over_symbols) (const struct block *block, const lookup_name_info &name, domain_enum domain, gdb::function_view callback); @@ -449,6 +434,15 @@ struct language_defn struct gdbarch *gdbarch, const struct block *expr_block, CORE_ADDR expr_pc); + + /* Return true if TYPE is a string type. */ + bool (*la_is_string_type_p) (struct type *type); + + /* This string is used by the 'set print max-depth' setting. When GDB + replaces a struct or union (during value printing) that is "too + deep" this string is displayed instead. */ + const char *la_struct_too_deep_ellipsis; + }; /* Pointer to the language_defn for our current language. This pointer @@ -474,6 +468,11 @@ extern const struct language_defn *current_language; extern const struct language_defn *expected_language; +/* Warning issued when current_language and the language of the current + frame do not match. */ + +extern const char lang_frame_mismatch_warn[]; + /* language_mode == language_mode_auto: current_language automatically set upon selection of scope (e.g. stack frame) @@ -545,8 +544,6 @@ extern enum language set_language (enum language); encoding, force_ellipses,options)) #define LA_EMIT_CHAR(ch, type, stream, quoter) \ (current_language->la_emitchar(ch, type, stream, quoter)) -#define LA_GET_STRING(value, buffer, length, chartype, encoding) \ - (current_language->la_get_string(value, buffer, length, chartype, encoding)) #define LA_PRINT_ARRAY_INDEX(index_value, stream, options) \ (current_language->la_print_array_index(index_value, stream, options)) @@ -569,6 +566,10 @@ extern enum language set_language (enum language); extern int pointer_type (struct type *); +/* Return true if TYPE is a string type, otherwise return false. This + default implementation only detects TYPE_CODE_STRING. */ +extern bool default_is_string_type_p (struct type *type); + /* Error messages */ extern void range_error (const char *, ...) ATTRIBUTE_PRINTF (1, 2); @@ -625,11 +626,6 @@ int default_pass_by_reference (struct type *type); void default_print_typedef (struct type *type, struct symbol *new_symbol, struct ui_file *stream); -void default_get_string (struct value *value, - gdb::unique_xmalloc_ptr *buffer, - int *length, struct type **char_type, - const char **charset); - /* Default name hashing function. */ /* Produce an unsigned hash value from SEARCH_NAME that is consistent @@ -719,7 +715,7 @@ public: { m_lang = current_language->la_language; m_switched = true; - set_language (SYMBOL_LANGUAGE (sym)); + set_language (sym->language ()); } else {