* values.c allocate_repeat_value): Allocate an array type, and

a value of that type; use that instead of setting VALUE_REPEATED.
	* value.h (struct value):  Remove fields repetitions and repeated.
	(VALUE_REPEATED, VALUE_REPETITIONS):  Removed, no longer used.
	* c-valprint.c, ch-valprint.c, eval.c, printcmd.c, valops.c,
	value.h, values.c:  Simplify, since now VALUE_REPEATED is never used.
	* valprint.c (value_print_array_elemen):  Removed never-used function.
This commit is contained in:
Per Bothner
1995-10-06 00:37:40 +00:00
parent c700638ca7
commit 398f584f64
4 changed files with 74 additions and 125 deletions

View File

@@ -574,65 +574,42 @@ chill_value_print (val, stream, format, pretty)
int format;
enum val_prettyprint pretty;
{
/* A "repeated" value really contains several values in a row.
They are made by the @ operator.
Print such values as if they were arrays. */
struct type *type = VALUE_TYPE (val);
if (VALUE_REPEATED (val))
/* If it is a pointer, indicate what it points to.
Print type also if it is a reference.
C++: if it is a member pointer, we will take care
of that when we print it. */
if (TYPE_CODE (type) == TYPE_CODE_PTR ||
TYPE_CODE (type) == TYPE_CODE_REF)
{
register unsigned int n = VALUE_REPETITIONS (val);
register unsigned int typelen = TYPE_LENGTH (VALUE_TYPE (val));
fprintf_filtered (stream, "[");
/* Print arrays of characters using string syntax. */
if (typelen == 1 && TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_INT
&& format == 0)
LA_PRINT_STRING (stream, VALUE_CONTENTS (val), n, 0);
else
char *valaddr = VALUE_CONTENTS (val);
CORE_ADDR addr = unpack_pointer (type, valaddr);
if (TYPE_CODE (type) != TYPE_CODE_PTR || addr != 0)
{
value_print_array_elements (val, stream, format, pretty);
}
fprintf_filtered (stream, "]");
return (n * typelen);
}
else
{
struct type *type = VALUE_TYPE (val);
/* If it is a pointer, indicate what it points to.
Print type also if it is a reference.
C++: if it is a member pointer, we will take care
of that when we print it. */
if (TYPE_CODE (type) == TYPE_CODE_PTR ||
TYPE_CODE (type) == TYPE_CODE_REF)
{
char *valaddr = VALUE_CONTENTS (val);
CORE_ADDR addr = unpack_pointer (type, valaddr);
if (TYPE_CODE (type) != TYPE_CODE_PTR || addr != 0)
int i;
char *name = TYPE_NAME (type);
if (name)
fputs_filtered (name, stream);
else if (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_VOID)
fputs_filtered ("PTR", stream);
else
{
int i;
char *name = TYPE_NAME (type);
if (name)
fputs_filtered (name, stream);
else if (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_VOID)
fputs_filtered ("PTR", stream);
else
{
fprintf_filtered (stream, "(");
type_print (type, "", stream, -1);
fprintf_filtered (stream, ")");
}
fprintf_filtered (stream, "(");
i = val_print (type, valaddr, VALUE_ADDRESS (val),
stream, format, 1, 0, pretty);
type_print (type, "", stream, -1);
fprintf_filtered (stream, ")");
return i;
}
fprintf_filtered (stream, "(");
i = val_print (type, valaddr, VALUE_ADDRESS (val),
stream, format, 1, 0, pretty);
fprintf_filtered (stream, ")");
return i;
}
return (val_print (type, VALUE_CONTENTS (val),
VALUE_ADDRESS (val), stream, format, 1, 0, pretty));
}
return (val_print (type, VALUE_CONTENTS (val),
VALUE_ADDRESS (val), stream, format, 1, 0, pretty));
}