2008-09-03 Angela Marie Thomas <angela@releasedominatrix.com>
[deliverable/binutils-gdb.git] / gdb / language.h
index e6dc5447ccaab91ff45665058ded3427f56a7af8..8bdc212a81df331fdb6a9d61204ccb5cbd38d351 100644 (file)
@@ -1,7 +1,7 @@
 /* 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.
@@ -31,8 +31,6 @@ struct frame_info;
 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" */
@@ -129,13 +127,6 @@ struct language_arch_info
   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
@@ -148,13 +139,6 @@ 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;
@@ -198,8 +182,6 @@ struct language_defn
 
     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,
@@ -224,14 +206,10 @@ struct language_defn
 
     /* 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
@@ -240,8 +218,7 @@ struct language_defn
     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 *);
@@ -264,12 +241,14 @@ struct language_defn
     /* 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 *);
@@ -280,6 +259,10 @@ struct language_defn
                                   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 */
 
@@ -322,6 +305,14 @@ extern enum language_mode
     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.  */
@@ -348,9 +339,6 @@ extern enum language set_language (enum language);
    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))
 
@@ -420,9 +408,6 @@ extern void binop_type_check (struct value *, struct value *, int);
 
 /* 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);
@@ -471,4 +456,13 @@ extern void default_print_array_index (struct value *index_value,
                                        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) */
This page took 0.026119 seconds and 4 git commands to generate.