2012-03-01 Pedro Alves <palves@redhat.com>
[deliverable/binutils-gdb.git] / gdb / language.h
index 65d55db8005cc20663eb59075f85af614bbdda96..76dad325b5b740a9c73fd007a5bb669db13d589d 100644 (file)
@@ -1,7 +1,7 @@
 /* Source-language-related definitions for GDB.
 
 /* Source-language-related definitions for GDB.
 
-   Copyright (C) 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000, 2003, 2004,
-   2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+   Copyright (C) 1991-1995, 1998-2000, 2003-2004, 2007-2012 Free
+   Software Foundation, Inc.
 
    Contributed by the Department of Computer Science at the State University
    of New York at Buffalo.
 
    Contributed by the Department of Computer Science at the State University
    of New York at Buffalo.
@@ -136,6 +136,16 @@ struct language_arch_info
   struct type *bool_type_default;
 };
 
   struct type *bool_type_default;
 };
 
+/* A pointer to a function expected to return nonzero if
+   SYMBOL_SEARCH_NAME matches the given LOOKUP_NAME.
+
+   SYMBOL_SEARCH_NAME should be a symbol's "search" name.
+   LOOKUP_NAME should be the name of an entity after it has been
+   transformed for lookup.  */
+
+typedef int (*symbol_name_cmp_ftype) (const char *symbol_search_name,
+                                         const char *lookup_name);
+
 /* Structure tying together assorted information about a language.  */
 
 struct language_defn
 /* Structure tying together assorted information about a language.  */
 
 struct language_defn
@@ -230,17 +240,17 @@ struct language_defn
        OPTIONS are the formatting options to be used when
        printing.  */
 
        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 *val,
-                        const struct value_print_options *options);
+    void (*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 *val,
+                         const struct value_print_options *options);
 
     /* Print a top-level value using syntax appropriate for this language.  */
 
 
     /* Print a top-level value using syntax appropriate for this language.  */
 
-    int (*la_value_print) (struct value *, struct ui_file *,
-                          const struct value_print_options *);
+    void (*la_value_print) (struct value *, struct ui_file *,
+                           const struct value_print_options *);
 
     /* PC is possibly an unknown languages trampoline.
        If that PC falls in a trampoline belonging to this language,
 
     /* PC is possibly an unknown languages trampoline.
        If that PC falls in a trampoline belonging to this language,
@@ -318,19 +328,13 @@ struct language_defn
     void (*la_get_string) (struct value *value, gdb_byte **buffer, int *length,
                           struct type **chartype, const char **charset);
 
     void (*la_get_string) (struct value *value, gdb_byte **buffer, int *length,
                           struct type **chartype, const char **charset);
 
-    /* Compare two symbol names according to language rules.  For
-       instance, in C++, we might want to ignore whitespaces in
-       the symbol name.  Or some case-insensitive language might
-       want to ignore casing during the match.
-
-       Both STR1 and STR2 are expected to be demangled name, except
-       for Ada, where STR1 and STR2 are expected to be encoded names.
-       The latter is because searches are performed using the encoded
-       name in Ada.
+    /* Return a pointer to the function that should be used to match
+       a symbol name against LOOKUP_NAME. This is mostly for languages
+       such as Ada where the matching algorithm depends on LOOKUP_NAME.
 
 
-       The return value follows the same spirit as strcmp.  */
-
-    int (*la_symbol_name_compare) (const char *str1, const char *str2);
+       This field may be NULL, in which case strcmp_iw will be used
+       to perform the matching.  */
+    symbol_name_cmp_ftype (*la_get_symbol_name_cmp) (const char *lookup_name);
 
     /* Find all symbols in the current program space matching NAME in
        DOMAIN, according to this language's rules.
 
     /* Find all symbols in the current program space matching NAME in
        DOMAIN, according to this language's rules.
@@ -343,13 +347,13 @@ struct language_defn
        argument.  If CALLBACK returns zero, the iteration ends at that
        point.
 
        argument.  If CALLBACK returns zero, the iteration ends at that
        point.
 
-       This field can be NULL, meaning that this language doesn't need
-       any special code aside from ordinary searches of the symbol
-       table.  */
+       This field may not be NULL.  If the language does not need any
+       special processing here, 'iterate_over_symbols' should be
+       used as the definition.  */
     void (*la_iterate_over_symbols) (const struct block *block,
                                     const char *name,
                                     domain_enum domain,
     void (*la_iterate_over_symbols) (const struct block *block,
                                     const char *name,
                                     domain_enum domain,
-                                    int (*callback) (struct symbol *, void *),
+                                    symbol_found_callback_ftype *callback,
                                     void *data);
 
     /* Add fields above this point, so the magic number is always last.  */
                                     void *data);
 
     /* Add fields above this point, so the magic number is always last.  */
@@ -473,26 +477,8 @@ extern enum language set_language (enum language);
 
 /* Type predicates */
 
 
 /* Type predicates */
 
-extern int simple_type (struct type *);
-
-extern int ordered_type (struct type *);
-
-extern int same_type (struct type *, struct type *);
-
-extern int integral_type (struct type *);
-
-extern int numeric_type (struct type *);
-
-extern int character_type (struct type *);
-
-extern int boolean_type (struct type *);
-
-extern int float_type (struct type *);
-
 extern int pointer_type (struct type *);
 
 extern int pointer_type (struct type *);
 
-extern int structured_type (struct type *);
-
 /* Checks Binary and Unary operations for semantic type correctness.  */
 /* FIXME:  Does not appear to be used.  */
 #define unop_type_check(v,o) binop_type_check((v),NULL,(o))
 /* Checks Binary and Unary operations for semantic type correctness.  */
 /* FIXME:  Does not appear to be used.  */
 #define unop_type_check(v,o) binop_type_check((v),NULL,(o))
This page took 0.025447 seconds and 4 git commands to generate.