/* Source-language-related definitions for GDB.
Copyright (C) 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000, 2003, 2004,
- 2007, 2008, 2009 Free Software Foundation, Inc.
+ 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
Contributed by the Department of Computer Science at the State University
of New York at Buffalo.
void (*la_printstr) (struct ui_file * stream, struct type *elttype,
const gdb_byte *string, unsigned int length,
- int force_ellipses,
+ const char *encoding, int force_ellipses,
const struct value_print_options *);
void (*la_emitchar) (int ch, struct type *chtype,
void (*la_print_typedef) (struct type *type, struct symbol *new_symbol,
struct ui_file *stream);
- /* Print a value using syntax appropriate for this language. */
+ /* Print a value using syntax appropriate for this language.
+
+ TYPE is the type of the sub-object to be printed.
- int (*la_val_print) (struct type *, const gdb_byte *, int, CORE_ADDR,
- struct ui_file *, int,
- const struct value_print_options *);
+ CONTENTS holds the bits of the value. This holds the entire
+ enclosing object.
+
+ EMBEDDED_OFFSET is the offset into the outermost object of the
+ sub-object represented by TYPE. This is the object which this
+ call should print. Note that the enclosing type is not
+ available.
+
+ ADDRESS is the address in the inferior of the enclosing object.
+
+ STREAM is the stream on which the value is to be printed.
+
+ RECURSE is the recursion depth. It is zero-based.
+
+ OPTIONS are the formatting options to be used when
+ printing. */
+
+ int (*la_val_print) (struct type *type,
+ const gdb_byte *contents,
+ int embedded_offset, CORE_ADDR address,
+ struct ui_file *stream, int recurse,
+ const struct value_print_options *options);
/* Print a top-level value using syntax appropriate for this language. */
variables. */
struct symbol *(*la_lookup_symbol_nonlocal) (const char *,
- const char *,
const struct block *,
const domain_enum);
/* "cast" really means conversion */
/* FIXME -- should be a setting in language_defn */
-#define CAST_IS_CONVERSION (current_language->la_language == language_c || \
- current_language->la_language == language_cplus || \
- current_language->la_language == language_objc)
+#define CAST_IS_CONVERSION(LANG) ((LANG)->la_language == language_c || \
+ (LANG)->la_language == language_cplus || \
+ (LANG)->la_language == language_objc)
extern void language_info (int);
#define LA_PRINT_CHAR(ch, type, stream) \
(current_language->la_printchar(ch, type, stream))
-#define LA_PRINT_STRING(stream, elttype, string, length, force_ellipses,options) \
+#define LA_PRINT_STRING(stream, elttype, string, length, encoding, force_ellipses,options) \
(current_language->la_printstr(stream, elttype, string, length, \
- force_ellipses,options))
+ encoding, force_ellipses,options))
#define LA_EMIT_CHAR(ch, type, stream, quoter) \
(current_language->la_emitchar(ch, type, stream, quoter))
#define LA_GET_STRING(value, buffer, length, chartype, encoding) \
/* Error messages */
-extern void type_error (const char *, ...) ATTR_FORMAT (printf, 1, 2);
+extern void type_error (const char *, ...) ATTRIBUTE_PRINTF (1, 2);
-extern void range_error (const char *, ...) ATTR_FORMAT (printf, 1, 2);
+extern void range_error (const char *, ...) ATTRIBUTE_PRINTF (1, 2);
/* Data: Does this value represent "truth" to the current language? */