}
case_mode;
+/* array_ordering ==
+ array_row_major: Arrays are in row major order
+ array_column_major: Arrays are in column major order.*/
+
+extern enum array_ordering
+ {
+ array_row_major, array_column_major
+ }
+array_ordering;
+
+
/* case_sensitivity ==
case_sensitive_on: Case sensitivity in name matching is used
case_sensitive_off: Case sensitivity in name matching is not used */
}
case_sensitivity;
\f
-/* Information for doing language dependent formatting of printed values. */
-
-struct language_format_info
- {
- /* The format that can be passed directly to standard C printf functions
- to generate a completely formatted value in the format appropriate for
- the language. */
-
- char *la_format;
-
- /* The prefix to be used when directly printing a value, or constructing
- a standard C printf format. This generally is everything up to the
- conversion specification (the part introduced by the '%' character
- and terminated by the conversion specifier character). */
-
- char *la_format_prefix;
-
- /* The conversion specifier. This is generally everything after the
- field width and precision, typically only a single character such
- as 'o' for octal format or 'x' for hexadecimal format. */
-
- char *la_format_specifier;
-
- /* The suffix to be used when directly printing a value, or constructing
- a standard C printf format. This generally is everything after the
- conversion specification (the part introduced by the '%' character
- and terminated by the conversion specifier character). */
-
- char *la_format_suffix; /* Suffix for custom format string */
- };
+/* Per architecture (OS/ABI) language information. */
+
+struct language_arch_info
+{
+ /* Its primitive types. This is a vector ended by a NULL pointer.
+ These types can be specified by name in parsing types in
+ expressions, regardless of whether the program being debugged
+ actually defines such a type. */
+ struct type **primitive_type_vector;
+ /* Type of elements of strings. */
+ struct type *string_char_type;
+};
+
+struct type *language_string_char_type (const struct language_defn *l,
+ struct gdbarch *gdbarch);
+
+struct type *language_lookup_primitive_type_by_name (const struct language_defn *l,
+ struct gdbarch *gdbarch,
+ const char *name);
/* Structure tying together assorted information about a language. */
/* Default case sensitivity */
enum case_sensitivity la_case_sensitivity;
+ /* Multi-dimensional array ordering */
+ enum array_ordering la_array_ordering;
+
/* Definitions related to expression printing, prefixifying, and
dumping */
void (*la_printchar) (int ch, struct ui_file * stream);
- void (*la_printstr) (struct ui_file * stream, char *string,
+ void (*la_printstr) (struct ui_file * stream, const bfd_byte *string,
unsigned int length, int width,
int force_ellipses);
/* Print a value using syntax appropriate for this language. */
- int (*la_val_print) (struct type *, char *, int, CORE_ADDR,
+ int (*la_val_print) (struct type *, const bfd_byte *, int, CORE_ADDR,
struct ui_file *, int, int, int,
enum val_prettyprint);
/* Return class name of a mangled method name or NULL. */
char *(*la_class_name_from_physname) (const char *physname);
- /* Base 2 (binary) formats. */
-
- struct language_format_info la_binary_format;
-
- /* Base 8 (octal) formats. */
-
- struct language_format_info la_octal_format;
-
- /* Base 10 (decimal) formats */
-
- struct language_format_info la_decimal_format;
-
- /* Base 16 (hexadecimal) formats */
-
- struct language_format_info la_hex_format;
-
/* Table for printing expressions */
const struct op_print *la_op_print_tab;
/* The list of characters forming word boundaries. */
char *(*la_word_break_characters) (void);
+ /* The per-architecture (OS/ABI) language information. */
+ void (*la_language_arch_info) (struct gdbarch *,
+ struct language_arch_info *);
+
/* Add fields above this point, so the magic number is always last. */
/* Magic number for compat checking */
#define LA_VALUE_PRINT(val,stream,fmt,pretty) \
(current_language->la_value_print(val,stream,fmt,pretty))
-/* Return a format string for printf that will print a number in one of
- the local (language-specific) formats. Result is static and is
- overwritten by the next call. Takes printf options like "08" or "l"
- (to produce e.g. %08x or %lx). */
-
-#define local_binary_format() \
- (current_language->la_binary_format.la_format)
-#define local_binary_format_prefix() \
- (current_language->la_binary_format.la_format_prefix)
-#define local_binary_format_specifier() \
- (current_language->la_binary_format.la_format_specifier)
-#define local_binary_format_suffix() \
- (current_language->la_binary_format.la_format_suffix)
-
-#define local_octal_format() \
- (current_language->la_octal_format.la_format)
-#define local_octal_format_prefix() \
- (current_language->la_octal_format.la_format_prefix)
-#define local_octal_format_specifier() \
- (current_language->la_octal_format.la_format_specifier)
-#define local_octal_format_suffix() \
- (current_language->la_octal_format.la_format_suffix)
-
-#define local_decimal_format() \
- (current_language->la_decimal_format.la_format)
-#define local_decimal_format_prefix() \
- (current_language->la_decimal_format.la_format_prefix)
-#define local_decimal_format_specifier() \
- (current_language->la_decimal_format.la_format_specifier)
-#define local_decimal_format_suffix() \
- (current_language->la_decimal_format.la_format_suffix)
-
-#define local_hex_format() \
- (current_language->la_hex_format.la_format)
-#define local_hex_format_prefix() \
- (current_language->la_hex_format.la_format_prefix)
-#define local_hex_format_specifier() \
- (current_language->la_hex_format.la_format_specifier)
-#define local_hex_format_suffix() \
- (current_language->la_hex_format.la_format_suffix)
-
#define LA_PRINT_CHAR(ch, stream) \
(current_language->la_printchar(ch, stream))
#define LA_PRINT_STRING(stream, string, length, width, force_ellipses) \
&& ((c) < 0x7F || (c) >= 0xA0) \
&& (!sevenbit_strings || (c) < 0x80))
-/* Return a format string for printf that will print a number in one of
- the local (language-specific) formats. Result is static and is
- overwritten by the next call. Takes printf options like "08" or "l"
- (to produce e.g. %08x or %lx). */
-
-extern char *local_decimal_format_custom (char *); /* language.c */
-
-extern char *local_octal_format_custom (char *); /* language.c */
-
-extern char *local_hex_format_custom (char *); /* language.c */
-
#if 0
/* FIXME: cagney/2000-03-04: This function does not appear to be used.
It can be deleted once 5.0 has been released. */
extern char *longest_raw_hex_string (LONGEST);
#endif
-/* Return a string that contains a number formatted in one of the local
- (language-specific) formats. Result is static and is overwritten by
- the next call. Takes printf options like "08l" or "l". */
-
-extern char *local_hex_string (LONGEST); /* language.c */
-
-extern char *local_hex_string_custom (LONGEST, char *); /* language.c */
-
/* Type predicates */
extern int simple_type (struct type *);