Factor out int printing code from c_val_print

gdb/ChangeLog:

	* c-valprint.c (c_val_print): Factor out int printing code to ...
	(c_val_print_int): ... this new function.
This commit is contained in:
Simon Marchi 2015-07-09 11:18:59 -04:00
parent 9e4f353ca9
commit 49f7fe2880
2 changed files with 41 additions and 24 deletions

View File

@ -1,3 +1,8 @@
2015-07-09 Simon Marchi <simon.marchi@ericsson.com>
* c-valprint.c (c_val_print): Factor out int printing code to ...
(c_val_print_int): ... this new function.
2015-07-09 Simon Marchi <simon.marchi@ericsson.com>
* c-valprint.c (c_val_print): Factor out struct and union

View File

@ -422,6 +422,40 @@ c_val_print_union (struct type *type, const gdb_byte *valaddr,
}
}
/* c_val_print helper for TYPE_CODE_INT. */
static void
c_val_print_int (struct type *type, struct type *unresolved_type,
const gdb_byte *valaddr, int embedded_offset,
struct ui_file *stream, const struct value *original_value,
const struct value_print_options *options)
{
if (options->format || options->output_format)
{
struct value_print_options opts = *options;
opts.format = (options->format ? options->format
: options->output_format);
val_print_scalar_formatted (type, valaddr, embedded_offset,
original_value, &opts, 0, stream);
}
else
{
val_print_type_code_int (type, valaddr + embedded_offset,
stream);
/* C and C++ has no single byte int type, char is used
instead. Since we don't know whether the value is really
intended to be used as an integer or a character, print
the character equivalent as well. */
if (c_textual_element_type (unresolved_type, options->format))
{
fputs_filtered (" ", stream);
LA_PRINT_CHAR (unpack_long (type, valaddr + embedded_offset),
unresolved_type, stream);
}
}
}
/* See val_print for a description of the various parameters of this
function; they are identical. */
@ -462,30 +496,8 @@ c_val_print (struct type *type, const gdb_byte *valaddr,
break;
case TYPE_CODE_INT:
if (options->format || options->output_format)
{
struct value_print_options opts = *options;
opts.format = (options->format ? options->format
: options->output_format);
val_print_scalar_formatted (type, valaddr, embedded_offset,
original_value, &opts, 0, stream);
}
else
{
val_print_type_code_int (type, valaddr + embedded_offset,
stream);
/* C and C++ has no single byte int type, char is used
instead. Since we don't know whether the value is really
intended to be used as an integer or a character, print
the character equivalent as well. */
if (c_textual_element_type (unresolved_type, options->format))
{
fputs_filtered (" ", stream);
LA_PRINT_CHAR (unpack_long (type, valaddr + embedded_offset),
unresolved_type, stream);
}
}
c_val_print_int (type, unresolved_type, valaddr, embedded_offset, stream,
original_value, options);
break;
case TYPE_CODE_MEMBERPTR: