- if (is_pascal_string_type (type, &length_pos, &length_size,
- &string_pos, &char_type, NULL))
- {
- len = extract_unsigned_integer (valaddr + embedded_offset
- + length_pos, length_size,
- byte_order);
- LA_PRINT_STRING (stream, char_type,
- valaddr + embedded_offset + string_pos,
- len, NULL, 0, options);
- }
- else
- pascal_object_print_value_fields (type, valaddr, embedded_offset,
- address, stream, recurse,
- original_value, options,
- NULL, 0);
- }
- break;
-
- case TYPE_CODE_ENUM:
- if (options->format)
- {
- val_print_scalar_formatted (type, valaddr, embedded_offset,
- original_value, options, 0, stream);
- break;
- }
- len = TYPE_NFIELDS (type);
- val = unpack_long (type, valaddr + embedded_offset);
- for (i = 0; i < len; i++)
- {
- QUIT;
- if (val == TYPE_FIELD_BITPOS (type, i))
- {
- break;
- }
- }
- if (i < len)
- {
- fputs_filtered (TYPE_FIELD_NAME (type, i), stream);
- }
- else
- {
- print_longest (stream, 'd', 0, val);
- }
- break;
-
- case TYPE_CODE_FLAGS:
- if (options->format)
- val_print_scalar_formatted (type, valaddr, embedded_offset,
- original_value, options, 0, stream);
- else
- val_print_type_code_flags (type, valaddr + embedded_offset, stream);
- break;
-
- case TYPE_CODE_FUNC:
- if (options->format)
- {
- val_print_scalar_formatted (type, valaddr, embedded_offset,
- original_value, options, 0, stream);
- break;
- }
- /* FIXME, we should consider, at least for ANSI C language, eliminating
- the distinction made between FUNCs and POINTERs to FUNCs. */
- fprintf_filtered (stream, "{");
- type_print (type, "", stream, -1);
- fprintf_filtered (stream, "} ");
- /* Try to print what function it points to, and its address. */
- print_address_demangle (gdbarch, address, stream, demangle);
- break;
-
- case TYPE_CODE_BOOL:
- 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 = unpack_long (type, valaddr + embedded_offset);
- if (val == 0)
- fputs_filtered ("false", stream);
- else if (val == 1)
- fputs_filtered ("true", stream);
- else