aboutsummaryrefslogtreecommitdiff
path: root/gdb/language.c
diff options
context:
space:
mode:
authorFred Fish <fnf@specifix.com>1992-11-18 22:49:38 +0000
committerFred Fish <fnf@specifix.com>1992-11-18 22:49:38 +0000
commit2e66cf7d6d84711159b3091ba693a969e6ecb50b (patch)
treee4f269dbd3e59bc665c00c9f4b073ebcd9cb352b /gdb/language.c
parente1b91f0b1afcb9f7263d4b45decc45ffd74b4bfe (diff)
downloadgdb-2e66cf7d6d84711159b3091ba693a969e6ecb50b.zip
gdb-2e66cf7d6d84711159b3091ba693a969e6ecb50b.tar.gz
gdb-2e66cf7d6d84711159b3091ba693a969e6ecb50b.tar.bz2
* language.h (language_format_info): New structure to bundle
local formatting information. * language.h (language_defn): Replace individual format info with language_format_info structs. * language.h (local_*_format, local_*_format_prefix, local_*_format_specifier, local_*_format_suffix): New macros for binary/octal/decimal/hex formats to access info elements. * c-exp.y (c_language_defn): Update for new format handling. * m2-exp.y (m2_language_defn): Update for new format handling. * dbxread.c (language.h): Include for partial-stab.h use. * defs.h (local_hex_format, local_hex_format_custom, local_hex_string, local_hex_string_custom): Move to language.h. * language.c (local_hex_format_custom, local_hex_string, local_hex_string_custom, local_octal_format_custom): Use new format handling. * language.c (unknown_language_defn, auto_language_defn, local_language_defn): Update for new format handling. * printcmd.c (print_scalar_formatted): Use new macros to access decimal and binary format info for printing. **** start-sanitize-chill **** * c-exp.y (chill_language_defn): Update for new format handling. * ch-exp.y (CHARACTER_LITERAL): Add support to yylex. * ch-exp.y (match_integer_literal): Add function. * ch-exp.y (builtin_type_chill_char): Add definition. * gdbtypes.h (builtin_type_chill_char): Add declaration. **** end-sanitize-chill ****
Diffstat (limited to 'gdb/language.c')
-rw-r--r--gdb/language.c44
1 files changed, 28 insertions, 16 deletions
diff --git a/gdb/language.c b/gdb/language.c
index afe0832..a20053c 100644
--- a/gdb/language.c
+++ b/gdb/language.c
@@ -483,9 +483,11 @@ local_hex_format_custom(pre)
{
static char form[50];
- strcpy (form, current_language->la_hex_format_pre);
+ strcpy (form, local_hex_format_prefix ());
+ strcat (form, "%");
strcat (form, pre);
- strcat (form, current_language->la_hex_format_suf);
+ strcat (form, local_hex_format_specifier ());
+ strcat (form, local_hex_format_suffix ());
return form;
}
@@ -497,7 +499,7 @@ local_hex_string (num)
{
static char res[50];
- sprintf (res, current_language->la_hex_format, num);
+ sprintf (res, local_hex_format(), num);
return res;
}
@@ -522,9 +524,11 @@ local_octal_format_custom(pre)
{
static char form[50];
- strcpy (form, current_language->la_octal_format_pre);
+ strcpy (form, local_octal_format_prefix ());
+ strcat (form, "%");
strcat (form, pre);
- strcat (form, current_language->la_octal_format_suf);
+ strcat (form, local_octal_format_specifier ());
+ strcat (form, local_octal_format_suffix ());
return form;
}
@@ -563,7 +567,10 @@ simple_type(type)
}
}
-/* Returns non-zero if its argument is of an ordered type. */
+/* Returns non-zero if its argument is of an ordered type.
+ An ordered type is one in which the elements can be tested for the
+ properties of "greater than", "less than", etc, or for which the
+ operations "increment" or "decrement" make sense. */
int
ordered_type (type)
struct type *type;
@@ -643,6 +650,9 @@ character_type (type)
{
switch(current_language->la_language)
{
+ /* start-sanitize-chill */
+ case language_chill:
+ /* end-sanitize-chill */
case language_m2:
return TYPE_CODE(type) != TYPE_CODE_CHAR ? 0 : 1;
@@ -651,10 +661,6 @@ character_type (type)
return (TYPE_CODE(type) == TYPE_CODE_INT) &&
TYPE_LENGTH(type) == sizeof(char)
? 1 : 0;
- /* start-sanitize-chill */
- case language_chill:
- error ("Missing Chill support in function character_type."); /*FIXME*/
- /* end-sanitize-chill */
default:
return (0);
}
@@ -1106,8 +1112,10 @@ const struct language_defn unknown_language_defn = {
&builtin_type_error, /* longest signed integral type */
&builtin_type_error, /* longest unsigned integral type */
&builtin_type_error, /* longest floating point type */
- "0x%x", "0x%", "x", /* Hex format, prefix, suffix */
- "0%o", "0%", "o", /* Octal format, prefix, suffix */
+ {"", "", "", ""}, /* Binary format info */
+ {"0%o", "0", "o", ""}, /* Octal format info */
+ {"%d", "", "d", ""}, /* Decimal format info */
+ {"0x%x", "0x", "x", ""}, /* Hex format info */
unk_op_print_tab, /* expression operators for printing */
LANG_MAGIC
};
@@ -1124,8 +1132,10 @@ const struct language_defn auto_language_defn = {
&builtin_type_error, /* longest signed integral type */
&builtin_type_error, /* longest unsigned integral type */
&builtin_type_error, /* longest floating point type */
- "0x%x", "0x%", "x", /* Hex format, prefix, suffix */
- "0%o", "0%", "o", /* Octal format, prefix, suffix */
+ {"", "", "", ""}, /* Binary format info */
+ {"0%o", "0", "o", ""}, /* Octal format info */
+ {"%d", "", "d", ""}, /* Decimal format info */
+ {"0x%x", "0x", "x", ""}, /* Hex format info */
unk_op_print_tab, /* expression operators for printing */
LANG_MAGIC
};
@@ -1141,8 +1151,10 @@ const struct language_defn local_language_defn = {
&builtin_type_error, /* longest signed integral type */
&builtin_type_error, /* longest unsigned integral type */
&builtin_type_error, /* longest floating point type */
- "0x%x", "0x%", "x", /* Hex format, prefix, suffix */
- "0%o", "0%", "o", /* Octal format, prefix, suffix */
+ {"", "", "", ""}, /* Binary format info */
+ {"0%o", "0", "o", ""}, /* Octal format info */
+ {"%d", "", "d", ""}, /* Decimal format info */
+ {"0x%x", "0x", "x", ""}, /* Hex format info */
unk_op_print_tab, /* expression operators for printing */
LANG_MAGIC
};