/* Source-language-related definitions for GDB.
Copyright (C) 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000, 2003, 2004,
- 2007 Free Software Foundation, Inc.
+ 2007, 2008 Free Software Foundation, Inc.
Contributed by the Department of Computer Science at the State University
of New York at Buffalo.
struct expression;
struct ui_file;
-/* enum exp_opcode; ANSI's `wisdom' didn't include forward enum decls. */
-
/* This used to be included to configure GDB for one or more specific
languages. Now it is left out to configure for all of them. FIXME. */
/* #include "lang_def.h" */
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. */
struct language_defn
enum language la_language;
- /* Its builtin 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 **const *la_builtin_type_vector;
-
/* Default range checking */
enum range_check la_range_check;
void (*la_emitchar) (int ch, struct ui_file * stream, int quoter);
- struct type *(*la_fund_type) (struct objfile *, int);
-
/* Print a type using syntax appropriate for this language. */
void (*la_print_type) (struct type *, char *, struct ui_file *, int,
/* Now come some hooks for lookup_symbol. */
- /* If this is non-NULL, lookup_symbol will do the 'field_of_this'
- check, using this function to find the value of this. */
+ /* If this is non-NULL, specifies the name that of the implicit
+ local variable that refers to the current object instance. */
- /* FIXME: carlton/2003-05-19: Audit all the language_defn structs
- to make sure we're setting this appropriately: I'm sure it
- could be NULL in more languages. */
-
- struct value *(*la_value_of_this) (int complain);
+ char *la_name_of_this;
/* This is a function that lookup_symbol will call when it gets to
the part of symbol lookup where C looks up static and global
struct symbol *(*la_lookup_symbol_nonlocal) (const char *,
const char *,
const struct block *,
- const domain_enum,
- struct symtab **);
+ const domain_enum);
/* Find the definition of the type with the given name. */
struct type *(*la_lookup_transparent_type) (const char *);
/* Index to use for extracting the first element of a string. */
char string_lower_bound;
- /* Type of elements of strings. */
- struct type **string_char_type;
-
/* The list of characters forming word boundaries. */
char *(*la_word_break_characters) (void);
+ /* Should return a NULL terminated array of all symbols which
+ are possible completions for TEXT. WORD is the entire command
+ on which the completion is being made. */
+ char **(*la_make_symbol_completion_list) (char *text, char *word);
+
/* The per-architecture (OS/ABI) language information. */
void (*la_language_arch_info) (struct gdbarch *,
struct language_arch_info *);
int format,
enum val_prettyprint pretty);
+ /* Return non-zero if TYPE should be passed (and returned) by
+ reference at the language level. */
+ int (*la_pass_by_reference) (struct type *type);
+
/* Add fields above this point, so the magic number is always last. */
/* Magic number for compat checking */
language_mode_auto, language_mode_manual
}
language_mode;
+
+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);
+
\f
/* These macros define the behaviour of the expression
evaluator. */
the current setting of working_lang, which the user sets
with the "set language" command. */
-#define create_fundamental_type(objfile,typeid) \
- (current_language->la_fund_type(objfile, typeid))
-
#define LA_PRINT_TYPE(type,varstring,stream,show,level) \
(current_language->la_print_type(type,varstring,stream,show,level))
/* Error messages */
-extern void op_error (const char *lhs, enum exp_opcode,
- const char *rhs);
-
extern void type_error (const char *, ...) ATTR_FORMAT (printf, 1, 2);
extern void range_error (const char *, ...) ATTR_FORMAT (printf, 1, 2);
int format,
enum val_prettyprint pretty);
+/* Return non-zero if TYPE should be passed (and returned) by
+ reference at the language level. */
+int language_pass_by_reference (struct type *type);
+
+/* Return zero; by default, types are passed by value at the language
+ level. The target ABI may pass or return some structs by reference
+ independent of this. */
+int default_pass_by_reference (struct type *type);
+
#endif /* defined (LANGUAGE_H) */