* aout64.h (BMAGIC): Define.
[deliverable/binutils-gdb.git] / gdb / language.h
index 0d54fbad23e4655de6b7b342d20c92aa885ab7ab..a4ec6fb52347d4f51b284d1cfbb4df3409e05696 100644 (file)
@@ -33,9 +33,7 @@ struct objfile;
 /* #include "lang_def.h" */
 #define        _LANG_c
 #define        _LANG_m2
-/* start-sanitize-chill */
 #define        _LANG_chill
-/* end-sanitize-chill */
 
 /* range_mode ==
    range_mode_auto:   range_check set automatically to default of language.
@@ -108,7 +106,10 @@ struct language_defn
 
   enum language la_language;
 
-  /* Its builtin types */
+  /* 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;
 
@@ -128,28 +129,25 @@ struct language_defn
 
   void (*la_error) PARAMS ((char *));
 
-  void (*la_printchar) PARAMS ((int, FILE *));
+  void (*la_printchar) PARAMS ((int, GDB_FILE *));
 
-  void (*la_printstr) PARAMS ((FILE *, char *, unsigned int, int));
+  void (*la_printstr) PARAMS ((GDB_FILE *, char *, unsigned int, int));
 
   struct type *(*la_fund_type) PARAMS ((struct objfile *, int));
 
   /* Print a type using syntax appropriate for this language. */
 
-  void (*la_print_type) PARAMS ((struct type *, char *, FILE *, int, int));
+  void (*la_print_type) PARAMS ((struct type *, char *, GDB_FILE *, int, int));
 
   /* Print a value using syntax appropriate for this language. */
 
-  int (*la_val_print) PARAMS ((struct type *, char *,  CORE_ADDR, FILE *,
+  int (*la_val_print) PARAMS ((struct type *, char *,  CORE_ADDR, GDB_FILE *,
                               int, int, int, enum val_prettyprint));
 
-  /* Longest signed integral type */
+  /* Print a top-level value using syntax appropriate for this language. */
 
-  struct type **la_longest_int;
-
-  /* Longest unsigned integral type */
-
-  struct type **la_longest_unsigned_int;
+  int (*la_value_print) PARAMS ((struct value *, GDB_FILE *,
+                                int, enum val_prettyprint));
 
   /* Longest floating point type */
 
@@ -187,7 +185,19 @@ struct language_defn
 
 /* 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 seprate setting from the current_language.  */
 
 extern const struct language_defn *current_language;
 
@@ -215,7 +225,8 @@ 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)
+#define CAST_IS_CONVERSION (current_language->la_language == language_c  || \
+                           current_language->la_language == language_cplus)
 
 extern void
 language_info PARAMS ((int));
@@ -230,8 +241,6 @@ set_language PARAMS ((enum language));
    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) \
@@ -243,6 +252,8 @@ set_language PARAMS ((enum language));
 #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))
+#define LA_VALUE_PRINT(val,stream,fmt,pretty) \
+  (current_language->la_value_print(val,stream,fmt,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
@@ -304,6 +315,9 @@ set_language PARAMS ((enum language));
    overwritten by the next call.  Takes printf options like "08" or "l"
    (to produce e.g. %08x or %lx).  */
 
+extern char *
+local_decimal_format_custom PARAMS ((char *)); /* language.c */
+
 extern char *
 local_octal_format_custom PARAMS ((char *));   /* language.c */
 
@@ -315,16 +329,10 @@ local_hex_format_custom PARAMS ((char *));        /* language.c */
    the next call.  Takes printf options like "08" or "l".  */
 
 extern char *
-local_octal_string PARAMS ((int));             /* language.c */
-
-extern char *
-local_octal_string_custom PARAMS ((int, char *));/* language.c */
-
-extern char *
-local_hex_string PARAMS ((int));               /* language.c */
+local_hex_string PARAMS ((unsigned long));             /* language.c */
 
 extern char *
-local_hex_string_custom PARAMS ((int, char *));        /* language.c */
+local_hex_string_custom PARAMS ((unsigned long, char *)); /* language.c */
 
 /* Type predicates */
 
This page took 0.030063 seconds and 4 git commands to generate.