* src/opcodes/dlx-dis.c (print_insn_dlx): Use dlx_insn type for
[deliverable/binutils-gdb.git] / gdb / language.h
index bd2a5a7818d649e92693b1ab2a4dae73f425c1bc..aa0523b4899b51ecab8ef7ab7f1d43cbee1f2ac8 100644 (file)
@@ -1,47 +1,48 @@
 /* Source-language-related definitions for GDB.
-   Copyright 1991, 1992 Free Software Foundation, Inc.
+
+   Copyright (C) 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000, 2003, 2004,
+   2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+
    Contributed by the Department of Computer Science at the State University
    of New York at Buffalo.
 
-This file is part of GDB.
+   This file is part of GDB.
 
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
 
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #if !defined (LANGUAGE_H)
 #define LANGUAGE_H 1
 
-#ifdef __STDC__                /* Forward decls for prototypes */
+/* Forward decls for prototypes */
 struct value;
 struct objfile;
-/* enum exp_opcode;    ANSI's `wisdom' didn't include forward enum decls. */
-#endif
-
-/* This used to be included to configure GDB for one or more specific
-   languages.  Now it is shortcutted to configure for all of them.  FIXME.  */
-/* #include "lang_def.h" */
-#define        _LANG_c
-#define        _LANG_m2
-/* start-sanitize-chill */
-#define        _LANG_chill
-/* end-sanitize-chill */
+struct frame_info;
+struct expression;
+struct ui_file;
+struct value_print_options;
+
+#define MAX_FORTRAN_DIMS  7    /* Maximum number of F77 array dims */
 
 /* range_mode ==
    range_mode_auto:   range_check set automatically to default of language.
    range_mode_manual: range_check set manually by user.  */
 
-extern enum range_mode {range_mode_auto, range_mode_manual} range_mode;
+extern enum range_mode
+  {
+    range_mode_auto, range_mode_manual
+  }
+range_mode;
 
 /* range_check ==
    range_check_on:    Ranges are checked in GDB expressions, producing errors.
@@ -49,13 +50,20 @@ extern enum range_mode {range_mode_auto, range_mode_manual} range_mode;
    range_check_off:   Ranges are not checked in GDB expressions.  */
 
 extern enum range_check
-  {range_check_off, range_check_warn, range_check_on} range_check;
+  {
+    range_check_off, range_check_warn, range_check_on
+  }
+range_check;
 
 /* type_mode ==
    type_mode_auto:   type_check set automatically to default of language
    type_mode_manual: type_check set manually by user. */
 
-extern enum type_mode {type_mode_auto, type_mode_manual} type_mode;
+extern enum type_mode
+  {
+    type_mode_auto, type_mode_manual
+  }
+type_mode;
 
 /* type_check ==
    type_check_on:    Types are checked in GDB expressions, producing errors.
@@ -63,131 +71,276 @@ extern enum type_mode {type_mode_auto, type_mode_manual} type_mode;
    type_check_off:   Types are not checked in GDB expressions.  */
 
 extern enum type_check
-  {type_check_off, type_check_warn, type_check_on} type_check;
-\f
-/* Information for doing language dependent formatting of printed values. */
+  {
+    type_check_off, type_check_warn, type_check_on
+  }
+type_check;
 
-struct language_format_info
-{
-  /* The format that can be passed directly to standard C printf functions
-     to generate a completely formatted value in the format appropriate for
-     the language. */
+/* case_mode ==
+   case_mode_auto:   case_sensitivity set upon selection of scope 
+   case_mode_manual: case_sensitivity set only by user.  */
+
+extern enum case_mode
+  {
+    case_mode_auto, case_mode_manual
+  }
+case_mode;
+
+/* array_ordering ==
+   array_row_major:     Arrays are in row major order
+   array_column_major:  Arrays are in column major order.*/
+
+extern enum array_ordering
+  {
+    array_row_major, array_column_major
+  } 
+array_ordering;
 
-  char *la_format;
 
-  /* The prefix to be used when directly printing a value, or constructing
-     a standard C printf format.  This generally is everything up to the
-     conversion specification (the part introduced by the '%' character
-     and terminated by the conversion specifier character). */
+/* case_sensitivity ==
+   case_sensitive_on:   Case sensitivity in name matching is used
+   case_sensitive_off:  Case sensitivity in name matching is not used  */
 
-  char *la_format_prefix;
+extern enum case_sensitivity
+  {
+    case_sensitive_on, case_sensitive_off
+  }
+case_sensitivity;
 
-  /* The conversion specifier.  This is generally everything after the
-     field width and precision, typically only a single character such
-     as 'o' for octal format or 'x' for hexadecimal format. */
 
-  char *la_format_specifier;
+/* macro_expansion ==
+   macro_expansion_no:  No macro expansion is available
+   macro_expansion_c:   C-like macro expansion is available  */
 
-  /* The suffix to be used when directly printing a value, or constructing
-     a standard C printf format.  This generally is everything after the
-     conversion specification (the part introduced by the '%' character
-     and terminated by the conversion specifier character). */
+enum macro_expansion
+  {
+    macro_expansion_no, macro_expansion_c
+  };
 
-  char *la_format_suffix;              /* Suffix for custom format string */
+\f
+/* Per architecture (OS/ABI) language information.  */
+
+struct language_arch_info
+{
+  /* Its primitive 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 **primitive_type_vector;
+  /* Type of elements of strings. */
+  struct type *string_char_type;
+
+  /* Symbol name of type to use as boolean type, if defined.  */
+  const char *bool_type_symbol;
+  /* Otherwise, this is the default boolean builtin type.  */
+  struct type *bool_type_default;
 };
 
 /* Structure tying together assorted information about a language.  */
 
 struct language_defn
-{
-  /* Name of the language */
-  
-  char *la_name;
+  {
+    /* Name of the language */
 
-  /* its symtab language-enum (defs.h) */
+    char *la_name;
 
-  enum language la_language;
+    /* its symtab language-enum (defs.h) */
 
-  /* Its builtin types */
+    enum language la_language;
 
-  struct type ** const *la_builtin_type_vector;
+    /* Default range checking */
 
-  /* Default range checking */
+    enum range_check la_range_check;
 
-  enum range_check la_range_check;
+    /* Default type checking */
 
-  /* Default type checking */
+    enum type_check la_type_check;
 
-  enum type_check la_type_check;
+    /* Default case sensitivity */
+    enum case_sensitivity la_case_sensitivity;
 
-  /* Parser function. */
-  
-  int (*la_parser) PARAMS((void));
+    /* Multi-dimensional array ordering */
+    enum array_ordering la_array_ordering;
 
-  /* Parser error function */
+    /* Style of macro expansion, if any, supported by this language.  */
+    enum macro_expansion la_macro_expansion;
 
-  void (*la_error) PARAMS ((char *));
+    /* Definitions related to expression printing, prefixifying, and
+       dumping */
 
-  void (*la_printchar) PARAMS ((int, FILE *));
+    const struct exp_descriptor *la_exp_desc;
 
-  void (*la_printstr) PARAMS ((FILE *, char *, unsigned int, int));
+    /* Parser function. */
 
-  struct type *(*la_fund_type) PARAMS ((struct objfile *, int));
+    int (*la_parser) (void);
 
-  /* Print a type using syntax appropriate for this language. */
+    /* Parser error function */
 
-  void (*la_print_type) PARAMS ((struct type *, char *, FILE *, int, int));
+    void (*la_error) (char *);
 
-  /* Print a value using syntax appropriate for this language. */
+    /* Given an expression *EXPP created by prefixifying the result of
+       la_parser, perform any remaining processing necessary to complete
+       its translation.  *EXPP may change; la_post_parser is responsible 
+       for releasing its previous contents, if necessary.  If 
+       VOID_CONTEXT_P, then no value is expected from the expression.  */
 
-  int (*la_val_print) PARAMS ((struct type *, char *,  CORE_ADDR, FILE *,
-                              int, int, int, enum val_prettyprint));
+    void (*la_post_parser) (struct expression ** expp, int void_context_p);
 
-  /* Longest signed integral type */
+    void (*la_printchar) (int ch, struct type *chtype, struct ui_file * stream);
 
-  struct type **la_longest_int;
+    void (*la_printstr) (struct ui_file * stream, struct type *elttype,
+                        const gdb_byte *string, unsigned int length,
+                        const char *encoding, int force_ellipses,
+                        const struct value_print_options *);
 
-  /* Longest unsigned integral type */
+    void (*la_emitchar) (int ch, struct type *chtype,
+                        struct ui_file * stream, int quoter);
 
-  struct type **la_longest_unsigned_int;
+    /* Print a type using syntax appropriate for this language. */
 
-  /* Longest floating point type */
+    void (*la_print_type) (struct type *, const char *, struct ui_file *, int,
+                          int);
 
-  struct type **la_longest_float;
+    /* Print a typedef using syntax appropriate for this language.
+       TYPE is the underlying type.  NEW_SYMBOL is the symbol naming
+       the type.  STREAM is the output stream on which to print.  */
 
-  /* Base 2 (binary) formats. */
+    void (*la_print_typedef) (struct type *type, struct symbol *new_symbol,
+                             struct ui_file *stream);
 
-  struct language_format_info la_binary_format;
+    /* Print a value using syntax appropriate for this language.
+       
+       TYPE is the type of the sub-object to be printed.
 
-  /* Base 8 (octal) formats. */
+       CONTENTS holds the bits of the value.  This holds the entire
+       enclosing object.
 
-  struct language_format_info la_octal_format;
+       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.
 
-  /* Base 10 (decimal) formats */
+       ADDRESS is the address in the inferior of the enclosing object.
 
-  struct language_format_info la_decimal_format;
+       STREAM is the stream on which the value is to be printed.
 
-  /* Base 16 (hexadecimal) formats */
+       RECURSE is the recursion depth.  It is zero-based.
 
-  struct language_format_info la_hex_format;
+       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);
 
-  /* Table for printing expressions */
+    /* Print a top-level value using syntax appropriate for this language. */
 
-  const struct op_print *la_op_print_tab;
+    int (*la_value_print) (struct value *, struct ui_file *,
+                          const struct value_print_options *);
 
-  /* Add fields above this point, so the magic number is always last. */
-  /* Magic number for compat checking */
+    /* PC is possibly an unknown languages trampoline.
+       If that PC falls in a trampoline belonging to this language,
+       return the address of the first pc in the real function, or 0
+       if it isn't a language tramp for this language.  */
+    CORE_ADDR (*skip_trampoline) (struct frame_info *, CORE_ADDR);
 
-  long la_magic;
+    /* Now come some hooks for lookup_symbol.  */
 
-};
+    /* If this is non-NULL, specifies the name that of the implicit
+       local variable that refers to the current object instance.  */
+
+    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
+       variables.  */
+
+    struct symbol *(*la_lookup_symbol_nonlocal) (const char *,
+                                                const struct block *,
+                                                const domain_enum);
+
+    /* Find the definition of the type with the given name.  */
+    struct type *(*la_lookup_transparent_type) (const char *);
+
+    /* Return demangled language symbol, or NULL.  */
+    char *(*la_demangle) (const char *mangled, int options);
+
+    /* Return class name of a mangled method name or NULL.  */
+    char *(*la_class_name_from_physname) (const char *physname);
+
+    /* Table for printing expressions */
+
+    const struct op_print *la_op_print_tab;
+
+    /* Zero if the language has first-class arrays.  True if there are no
+       array values, and array objects decay to pointers, as in C. */
+
+    char c_style_arrays;
+
+    /* Index to use for extracting the first element of a string. */
+    char string_lower_bound;
+
+    /* 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 *);
+
+    /* Print the index of an element of an array.  */
+    void (*la_print_array_index) (struct value *index_value,
+                                  struct ui_file *stream,
+                                  const struct value_print_options *options);
+
+    /* Return non-zero if TYPE should be passed (and returned) by
+       reference at the language level.  */
+    int (*la_pass_by_reference) (struct type *type);
+
+    /* Obtain a string from the inferior, storing it in a newly allocated
+       buffer in BUFFER, which should be freed by the caller.  If the
+       in- and out-parameter *LENGTH is specified at -1, the string is
+       read until a null character of the appropriate width is found -
+       otherwise the string is read to the length of characters specified.
+       On completion, *LENGTH will hold the size of the string in characters.
+       If a *LENGTH of -1 was specified it will count only actual
+       characters, excluding any eventual terminating null character.
+       Otherwise *LENGTH will include all characters - including any nulls.
+       CHARSET will hold the encoding used in the string.  */
+    void (*la_get_string) (struct value *value, gdb_byte **buffer, int *length,
+                          struct type **chartype, const char **charset);
+
+    /* Add fields above this point, so the magic number is always last. */
+    /* Magic number for compat checking */
+
+    long la_magic;
+
+  };
 
 #define LANG_MAGIC     910823L
 
 /* Pointer to the language_defn for our current language.  This pointer
    always points to *some* valid struct; it can be used without checking
-   it for validity.  */
+   it for validity.
+
+   The current language affects expression parsing and evaluation
+   (FIXME: it might be cleaner to make the evaluation-related stuff
+   separate exp_opcodes for each different set of semantics.  We
+   should at least think this through more clearly with respect to
+   what happens if the language is changed between parsing and
+   evaluation) and printing of things like types and arrays.  It does
+   *not* affect symbol-reading-- each source file in a symbol-file has
+   its own language and we should keep track of that regardless of the
+   language when symbols are read.  If we want some manual setting for
+   the language of symbol files (e.g. detecting when ".c" files are
+   C++), it should be a separate setting from the current_language.  */
 
 extern const struct language_defn *current_language;
 
@@ -198,11 +351,25 @@ extern const struct language_defn *expected_language;
 
 /* language_mode == 
    language_mode_auto:   current_language automatically set upon selection
-                        of scope (e.g. stack frame)
+   of scope (e.g. stack frame)
    language_mode_manual: current_language set only by user.  */
 
 extern enum language_mode
-  {language_mode_auto, language_mode_manual} language_mode;
+  {
+    language_mode_auto, language_mode_manual
+  }
+language_mode;
+
+struct type *language_bool_type (const struct language_defn *l,
+                                struct gdbarch *gdbarch);
+
+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.  */
@@ -215,81 +382,44 @@ extern enum language_mode
 
 /* "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)
+#define CAST_IS_CONVERSION(LANG) ((LANG)->la_language == language_c  || \
+                                 (LANG)->la_language == language_cplus || \
+                                 (LANG)->la_language == language_objc)
 
-extern void
-language_info PARAMS ((int));
-
-extern void
-set_language PARAMS ((enum language));
+extern void language_info (int);
 
+extern enum language set_language (enum language);
 \f
+
 /* This page contains functions that return things that are
    specific to languages.  Each of these functions is based on
    the current setting of working_lang, which the user sets
    with the "set language" command. */
 
-/* Returns some built-in types */
-#define        longest_int()           (*current_language->la_longest_int)
-#define        longest_unsigned_int()  (*current_language->la_longest_unsigned_int)
-#define        longest_float()         (*current_language->la_longest_float)
-
-#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))
 
-#define LA_VAL_PRINT(type,valaddr,addr,stream,fmt,deref,recurse,pretty) \
-  (current_language->la_val_print(type,valaddr,addr,stream,fmt,deref, \
-                                 recurse,pretty))
-
-/* Return a format string for printf that will print a number in one of
-   the local (language-specific) formats.  Result is static and is
-   overwritten by the next call.  Takes printf options like "08" or "l"
-   (to produce e.g. %08x or %lx).  */
-
-#define local_binary_format() \
-  (current_language->la_binary_format.la_format)
-#define local_binary_format_prefix() \
-  (current_language->la_binary_format.la_format_prefix)
-#define local_binary_format_specifier() \
-  (current_language->la_binary_format.la_format_specifier)
-#define local_binary_format_suffix() \
-  (current_language->la_binary_format.la_format_suffix)
-
-#define local_octal_format() \
-  (current_language->la_octal_format.la_format)
-#define local_octal_format_prefix() \
-  (current_language->la_octal_format.la_format_prefix)
-#define local_octal_format_specifier() \
-  (current_language->la_octal_format.la_format_specifier)
-#define local_octal_format_suffix() \
-  (current_language->la_octal_format.la_format_suffix)
-
-#define local_decimal_format() \
-  (current_language->la_decimal_format.la_format)
-#define local_decimal_format_prefix() \
-  (current_language->la_decimal_format.la_format_prefix)
-#define local_decimal_format_specifier() \
-  (current_language->la_decimal_format.la_format_specifier)
-#define local_decimal_format_suffix() \
-  (current_language->la_decimal_format.la_format_suffix)
-
-#define local_hex_format() \
-  (current_language->la_hex_format.la_format)
-#define local_hex_format_prefix() \
-  (current_language->la_hex_format.la_format_prefix)
-#define local_hex_format_specifier() \
-  (current_language->la_hex_format.la_format_specifier)
-#define local_hex_format_suffix() \
-  (current_language->la_hex_format.la_format_suffix)
-
-#define LA_PRINT_CHAR(ch, stream) \
-  (current_language->la_printchar(ch, stream))
-#define LA_PRINT_STRING(stream, string, length, force_ellipses) \
-  (current_language->la_printstr(stream, string, length, force_ellipses))
+#define LA_PRINT_TYPEDEF(type,new_symbol,stream) \
+  (current_language->la_print_typedef(type,new_symbol,stream))
+
+#define LA_VAL_PRINT(type,valaddr,offset,addr,stream,val,recurse,options) \
+  (current_language->la_val_print(type,valaddr,offset,addr,stream, \
+                                 val,recurse,options))
+#define LA_VALUE_PRINT(val,stream,options) \
+  (current_language->la_value_print(val,stream,options))
+
+#define LA_PRINT_CHAR(ch, type, stream) \
+  (current_language->la_printchar(ch, type, stream))
+#define LA_PRINT_STRING(stream, elttype, string, length, encoding, force_ellipses,options) \
+  (current_language->la_printstr(stream, elttype, string, length, \
+                                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) \
+  (current_language->la_get_string(value, buffer, length, chartype, encoding))
+
+#define LA_PRINT_ARRAY_INDEX(index_value, stream, optins) \
+  (current_language->la_print_array_index(index_value, stream, options))
 
 /* Test a character to decide whether it can be printed in literal form
    or needs to be printed in another representation.  For example,
@@ -297,113 +427,100 @@ set_language PARAMS ((enum language));
    and the "other representation" is '\141'.  The "other representation"
    is program language dependent. */
 
-#define PRINT_LITERAL_FORM(c) \
-  ((c)>=0x20 && ((c)<0x7F || (c)>=0xA0) && (!sevenbit_strings || (c)<0x80))
+#define PRINT_LITERAL_FORM(c)          \
+  ((c) >= 0x20                         \
+   && ((c) < 0x7F || (c) >= 0xA0)      \
+   && (!sevenbit_strings || (c) < 0x80))
 
-/* Return a format string for printf that will print a number in one of
-   the local (language-specific) formats.  Result is static and is
-   overwritten by the next call.  Takes printf options like "08" or "l"
-   (to produce e.g. %08x or %lx).  */
+/* Type predicates */
 
-extern char *
-local_decimal_format_custom PARAMS ((char *)); /* language.c */
+extern int simple_type (struct type *);
 
-extern char *
-local_octal_format_custom PARAMS ((char *));   /* language.c */
+extern int ordered_type (struct type *);
 
-extern char *
-local_hex_format_custom PARAMS ((char *));     /* language.c */
+extern int same_type (struct type *, struct type *);
 
-/* Return a string that contains a number formatted in one of the local
-   (language-specific) formats.  Result is static and is overwritten by
-   the next call.  Takes printf options like "08" or "l".  */
+extern int integral_type (struct type *);
 
-extern char *
-local_octal_string PARAMS ((int));             /* language.c */
+extern int numeric_type (struct type *);
 
-extern char *
-local_octal_string_custom PARAMS ((int, char *));/* language.c */
+extern int character_type (struct type *);
 
-extern char *
-local_hex_string PARAMS ((int));               /* language.c */
+extern int boolean_type (struct type *);
 
-extern char *
-local_hex_string_custom PARAMS ((int, char *));        /* language.c */
+extern int float_type (struct type *);
 
-/* Type predicates */
+extern int pointer_type (struct type *);
 
-extern int
-simple_type PARAMS ((struct type *));
+extern int structured_type (struct type *);
 
-extern int
-ordered_type PARAMS ((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))
 
-extern int
-same_type PARAMS ((struct type *, struct type *));
+extern void binop_type_check (struct value *, struct value *, int);
 
-extern int
-integral_type PARAMS ((struct type *));
+/* Error messages */
 
-extern int
-numeric_type PARAMS ((struct type *));
+extern void type_error (const char *, ...) ATTRIBUTE_PRINTF (1, 2);
 
-extern int
-character_type PARAMS ((struct type *));
+extern void range_error (const char *, ...) ATTRIBUTE_PRINTF (1, 2);
 
-extern int
-boolean_type PARAMS ((struct type *));
+/* Data:  Does this value represent "truth" to the current language?  */
 
-extern int
-float_type PARAMS ((struct type *));
+extern int value_true (struct value *);
 
-extern int
-pointer_type PARAMS ((struct type *));
+/* Misc:  The string representing a particular enum language.  */
 
-extern int
-structured_type PARAMS ((struct type *));
+extern enum language language_enum (char *str);
 
-/* 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))
+extern const struct language_defn *language_def (enum language);
 
-extern void
-binop_type_check PARAMS ((struct value *, struct value *, int));
+extern char *language_str (enum language);
 
-/* Error messages */
+/* Add a language to the set known by GDB (at initialization time).  */
 
-extern void
-op_error PARAMS ((char *fmt, enum exp_opcode, int));
+extern void add_language (const struct language_defn *);
 
-#define type_op_error(f,o) \
-   op_error((f),(o),type_check==type_check_on ? 1 : 0)
-#define range_op_error(f,o) \
-   op_error((f),(o),range_check==range_check_on ? 1 : 0)
+extern enum language get_frame_language (void);        /* In stack.c */
 
-extern void
-type_error ();
+/* Check for a language-specific trampoline. */
 
-void
-range_error ();
+extern CORE_ADDR skip_language_trampoline (struct frame_info *, CORE_ADDR pc);
 
-/* Data:  Does this value represent "truth" to the current language?  */
+/* Return demangled language symbol, or NULL.  */
+extern char *language_demangle (const struct language_defn *current_language, 
+                               const char *mangled, int options);
 
-extern int
-value_true PARAMS ((struct value *));
+/* Return class name from physname, or NULL.  */
+extern char *language_class_name_from_physname (const struct language_defn *,
+                                               const char *physname);
 
-/* Misc:  The string representing a particular enum language.  */
+/* Splitting strings into words.  */
+extern char *default_word_break_characters (void);
 
-extern const struct language_defn *
-language_def PARAMS ((enum language));
+/* Print the index of an array element using the C99 syntax.  */
+extern void default_print_array_index (struct value *index_value,
+                                       struct ui_file *stream,
+                                      const struct value_print_options *options);
 
-extern char *
-language_str PARAMS ((enum language));
+/* Return non-zero if TYPE should be passed (and returned) by
+   reference at the language level.  */
+int language_pass_by_reference (struct type *type);
 
-/* Add a language to the set known by GDB (at initialization time).  */
+/* 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);
+
+/* The default implementation of la_print_typedef.  */
+void default_print_typedef (struct type *type, struct symbol *new_symbol,
+                           struct ui_file *stream);
 
-extern void
-add_language PARAMS ((const struct language_defn *));
+void default_get_string (struct value *value, gdb_byte **buffer, int *length,
+                        struct type **char_type, const char **charset);
 
-extern enum language
-get_frame_language PARAMS ((void));            /* In stack.c */
+void c_get_string (struct value *value, gdb_byte **buffer, int *length,
+                  struct type **char_type, const char **charset);
 
-#endif /* defined (LANGUAGE_H) */
+#endif /* defined (LANGUAGE_H) */
This page took 0.03098 seconds and 4 git commands to generate.