Rewrite c_value_print_inner

This rewrites c_value_print_inner, copying in the body of
c_val_print_inner and adusting as needed.  This will form the base of
future changes to fully convert this to using the value-based API

gdb/ChangeLog
2020-03-13  Tom Tromey  <tom@tromey.com>

	* c-valprint.c (c_value_print_inner): Rewrite.
This commit is contained in:
Tom Tromey
2020-03-13 17:39:52 -06:00
parent 4f412b6e31
commit 5083623134
2 changed files with 65 additions and 2 deletions

View File

@@ -564,8 +564,67 @@ void
c_value_print_inner (struct value *val, struct ui_file *stream, int recurse,
const struct value_print_options *options)
{
c_val_print (value_type (val), value_embedded_offset (val),
value_address (val), stream, recurse, val, options);
struct type *type = value_type (val);
struct type *unresolved_type = type;
CORE_ADDR address = value_address (val);
const gdb_byte *valaddr = value_contents_for_printing (val);
type = check_typedef (type);
switch (TYPE_CODE (type))
{
case TYPE_CODE_ARRAY:
c_val_print_array (type, valaddr, 0, address, stream,
recurse, val, options);
break;
case TYPE_CODE_METHODPTR:
cplus_print_method_ptr (valaddr, type, stream);
break;
case TYPE_CODE_PTR:
c_val_print_ptr (type, valaddr, 0, stream, recurse,
val, options);
break;
case TYPE_CODE_UNION:
c_val_print_union (type, valaddr, 0, address, stream,
recurse, val, options);
break;
case TYPE_CODE_STRUCT:
c_val_print_struct (type, valaddr, 0, address, stream,
recurse, val, options);
break;
case TYPE_CODE_INT:
c_val_print_int (type, unresolved_type, valaddr, 0, stream,
val, options);
break;
case TYPE_CODE_MEMBERPTR:
c_val_print_memberptr (type, valaddr, 0, address, stream,
recurse, val, options);
break;
case TYPE_CODE_REF:
case TYPE_CODE_RVALUE_REF:
case TYPE_CODE_ENUM:
case TYPE_CODE_FLAGS:
case TYPE_CODE_FUNC:
case TYPE_CODE_METHOD:
case TYPE_CODE_BOOL:
case TYPE_CODE_RANGE:
case TYPE_CODE_FLT:
case TYPE_CODE_DECFLOAT:
case TYPE_CODE_VOID:
case TYPE_CODE_ERROR:
case TYPE_CODE_UNDEF:
case TYPE_CODE_COMPLEX:
case TYPE_CODE_CHAR:
default:
generic_value_print (val, stream, recurse, options, &c_decorations);
break;
}
}