[42/55] Introduce c_value_print_memberptr
Commit Message
This adds c_value_print_memberptr, a value-based analogue of
c_val_print_memberptr.
gdb/ChangeLog
2019-12-08 Tom Tromey <tom@tromey.com>
* c-valprint.c (c_value_print_memberptr): New function.
(c_value_print_inner): Use it.
Change-Id: I44e28c6c7d352eb91f8c94a232d65c9dda87f461
---
gdb/ChangeLog | 5 +++++
gdb/c-valprint.c | 20 ++++++++++++++++++--
2 files changed, 23 insertions(+), 2 deletions(-)
@@ -553,6 +553,23 @@ c_val_print_memberptr (struct type *type, const gdb_byte *valaddr,
}
}
+/* c_value_print helper for TYPE_CODE_MEMBERPTR. */
+
+static void
+c_value_print_memberptr (struct value *val, struct ui_file *stream,
+ int recurse,
+ const struct value_print_options *options)
+{
+ if (!options->format)
+ {
+ struct type *type = check_typedef (value_type (val));
+ const gdb_byte *valaddr = value_contents_for_printing (val);
+ cp_print_class_member (valaddr, type, stream, "&");
+ }
+ else
+ generic_value_print (val, stream, recurse, options, &c_decorations);
+}
+
/* See val_print for a description of the various parameters of this
function; they are identical. */
@@ -667,8 +684,7 @@ c_value_print_inner (struct value *val, struct ui_file *stream, int recurse,
break;
case TYPE_CODE_MEMBERPTR:
- c_val_print_memberptr (type, valaddr, 0, address, stream,
- recurse, val, options);
+ c_value_print_memberptr (val, stream, recurse, options);
break;
case TYPE_CODE_REF: