diff options
author | Fred Fish <fnf@specifix.com> | 1992-11-18 22:49:38 +0000 |
---|---|---|
committer | Fred Fish <fnf@specifix.com> | 1992-11-18 22:49:38 +0000 |
commit | 2e66cf7d6d84711159b3091ba693a969e6ecb50b (patch) | |
tree | e4f269dbd3e59bc665c00c9f4b073ebcd9cb352b /gdb/language.c | |
parent | e1b91f0b1afcb9f7263d4b45decc45ffd74b4bfe (diff) | |
download | gdb-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.c | 44 |
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 }; |