diff options
author | Tom Tromey <tromey@adacore.com> | 2023-09-05 13:08:29 -0600 |
---|---|---|
committer | Tom Tromey <tromey@adacore.com> | 2023-09-19 13:28:42 -0600 |
commit | 26733fc7477ac675df9215b46bf3f3af1dd80186 (patch) | |
tree | bcb9181bf1c84e5bc434a28b303a01107a59350e /gdb | |
parent | d948c67c5d6599581e5045f03e67dc90855efc87 (diff) | |
download | gdb-26733fc7477ac675df9215b46bf3f3af1dd80186.zip gdb-26733fc7477ac675df9215b46bf3f3af1dd80186.tar.gz gdb-26733fc7477ac675df9215b46bf3f3af1dd80186.tar.bz2 |
Add is_array_like and to_array to language_defn
This adds new is_array_like and to_array methods to language_defn.
This will be used in a subsequent patch that generalizes the new
Python array- and string-handling code.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ada-lang.c | 13 | ||||
-rw-r--r-- | gdb/language.h | 11 | ||||
-rw-r--r-- | gdb/rust-lang.h | 10 |
3 files changed, 34 insertions, 0 deletions
diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c index b9a271b..53d53e0 100644 --- a/gdb/ada-lang.c +++ b/gdb/ada-lang.c @@ -13830,6 +13830,19 @@ public: /* See language.h. */ + bool is_array_like (struct type *type) const override + { + return (ada_is_constrained_packed_array_type (type) + || ada_is_array_descriptor_type (type)); + } + + /* See language.h. */ + + struct value *to_array (struct value *val) const override + { return ada_coerce_to_simple_array (val); } + + /* See language.h. */ + const char *struct_too_deep_ellipsis () const override { return "(...)"; } diff --git a/gdb/language.h b/gdb/language.h index 9fd2fb6..6ee8f61 100644 --- a/gdb/language.h +++ b/gdb/language.h @@ -568,6 +568,17 @@ struct language_defn /* Return true if TYPE is a string type. */ virtual bool is_string_type_p (struct type *type) const; + /* Return true if TYPE is array-like. */ + virtual bool is_array_like (struct type *type) const + { return false; } + + /* Underlying implementation of value_to_array. Return a value of + array type that corresponds to VAL. The caller must ensure that + is_array_like is true for VAL's type. Return nullptr if the type + cannot be handled. */ + virtual struct value *to_array (struct value *val) const + { return nullptr; } + /* Return a string that 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. The default value here diff --git a/gdb/rust-lang.h b/gdb/rust-lang.h index 2c7ccb9..ce1dff2 100644 --- a/gdb/rust-lang.h +++ b/gdb/rust-lang.h @@ -196,6 +196,16 @@ public: /* See language.h. */ + bool is_array_like (struct type *type) const override + { return rust_slice_type_p (type); } + + /* See language.h. */ + + struct value *to_array (struct value *val) const override + { return rust_slice_to_array (val); } + + /* See language.h. */ + bool range_checking_on_by_default () const override { return true; } |