/* 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.
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
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. */
- 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,
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.
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,
- int (*callback) (struct symbol *, void *),
+ symbol_found_callback_ftype *callback,
void *data);
/* Add fields above this point, so the magic number is always last. */
/* 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 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))