import gdb-1999-12-13 snapshot
[deliverable/binutils-gdb.git] / gdb / language.h
index cb9d709a29908eaa69636260ac20db5ef966784e..b730d9b26eac1dd1ac7c70ad5fd2bd9167436e6c 100644 (file)
@@ -3,31 +3,31 @@
    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 2 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
+   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., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
 
 #if !defined (LANGUAGE_H)
 #define LANGUAGE_H 1
 
-#ifdef __STDC__                /* Forward decls for prototypes */
+/* Forward decls for prototypes */
 struct value;
 struct objfile;
 struct expression;
-/* enum exp_opcode;    ANSI's `wisdom' didn't include forward enum decls. */
-#endif
+/* 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 shortcutted to configure for all of them.  FIXME.  */
@@ -37,13 +37,17 @@ struct expression;
 #define        _LANG_chill
 #define _LANG_fortran
 
-#define MAX_FORTRAN_DIMS  7   /* Maximum number of F77 array dims */ 
+#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.
@@ -51,13 +55,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.
@@ -65,135 +76,142 @@ 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;
+  {
+    type_check_off, type_check_warn, type_check_on
+  }
+type_check;
 \f
 /* Information for doing language dependent formatting of printed values. */
 
 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. */
+  {
+    /* 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. */
 
-  char *la_format;
+    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). */
+    /* 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). */
 
-  char *la_format_prefix;
+    char *la_format_prefix;
 
-  /* 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. */
+    /* 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;
+    char *la_format_specifier;
 
-  /* 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). */
+    /* 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). */
 
-  char *la_format_suffix;              /* Suffix for custom format string */
-};
+    char *la_format_suffix;    /* Suffix for custom format string */
+  };
 
 /* 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.  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.  */
+    enum language la_language;
 
-  struct type ** const *la_builtin_type_vector;
+    /* 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.  */
 
-  /* Default range checking */
+    struct type **const *la_builtin_type_vector;
 
-  enum range_check la_range_check;
+    /* Default range checking */
 
-  /* Default type checking */
+    enum range_check la_range_check;
 
-  enum type_check la_type_check;
+    /* Default type checking */
 
-  /* Parser function. */
-  
-  int (*la_parser) PARAMS((void));
+    enum type_check la_type_check;
 
-  /* Parser error function */
+    /* Parser function. */
 
-  void (*la_error) PARAMS ((char *));
+    int (*la_parser) PARAMS ((void));
 
-  /* Evaluate an expression. */
-  struct value * (*evaluate_exp) PARAMS ((struct type*, struct expression *, 
-                                         int *, enum noside));
+    /* Parser error function */
 
-  void (*la_printchar) PARAMS ((int, GDB_FILE *));
+    void (*la_error) PARAMS ((char *));
 
-  void (*la_printstr) PARAMS ((GDB_FILE *, char *, unsigned int, int));
+    /* Evaluate an expression. */
+    struct value *(*evaluate_exp) PARAMS ((struct type *, struct expression *,
+                                          int *, enum noside));
 
-  struct type *(*la_fund_type) PARAMS ((struct objfile *, int));
+    void (*la_printchar) PARAMS ((int ch, GDB_FILE * stream));
 
-  /* Print a type using syntax appropriate for this language. */
+    void (*la_printstr) PARAMS ((GDB_FILE * stream, char *string,
+                                unsigned int length, int width,
+                                int force_ellipses));
 
-  void (*la_print_type) PARAMS ((struct type *, char *, GDB_FILE *, int, int));
+    void (*la_emitchar) PARAMS ((int ch, GDB_FILE * stream, int quoter));
 
-  /* Print a value using syntax appropriate for this language. */
+    struct type *(*la_fund_type) PARAMS ((struct objfile *, int));
 
-  int (*la_val_print) PARAMS ((struct type *, char *,  CORE_ADDR, GDB_FILE *,
-                              int, int, int, enum val_prettyprint));
+    /* Print a type using syntax appropriate for this language. */
 
-  /* Print a top-level value using syntax appropriate for this language. */
+    void (*la_print_type) PARAMS ((struct type *, char *, GDB_FILE *, int, int));
 
-  int (*la_value_print) PARAMS ((struct value *, GDB_FILE *,
-                                int, enum val_prettyprint));
+    /* Print a value using syntax appropriate for this language. */
 
-  /* Base 2 (binary) formats. */
+    int (*la_val_print) PARAMS ((struct type *, char *, int, CORE_ADDR, GDB_FILE *,
+                                int, int, int, enum val_prettyprint));
 
-  struct language_format_info la_binary_format;
+    /* Print a top-level value using syntax appropriate for this language. */
 
-  /* Base 8 (octal) formats. */
+    int (*la_value_print) PARAMS ((struct value *, GDB_FILE *,
+                                  int, enum val_prettyprint));
 
-  struct language_format_info la_octal_format;
+    /* Base 2 (binary) formats. */
 
-  /* Base 10 (decimal) formats */
+    struct language_format_info la_binary_format;
 
-  struct language_format_info la_decimal_format;
+    /* Base 8 (octal) formats. */
 
-  /* Base 16 (hexadecimal) formats */
+    struct language_format_info la_octal_format;
 
-  struct language_format_info la_hex_format;
+    /* Base 10 (decimal) formats */
 
-  /* Table for printing expressions */
+    struct language_format_info la_decimal_format;
 
-  const struct op_print *la_op_print_tab;
+    /* Base 16 (hexadecimal) formats */
 
-  /* Zero if the language has first-class arrays.  True if there are no
-     array values, and array objects decay to pointers, as in C. */
+    struct language_format_info la_hex_format;
 
-  char c_style_arrays;
+    /* Table for printing expressions */
 
-  /* Index to use for extracting the first element of a string. */
-  char string_lower_bound;
+    const struct op_print *la_op_print_tab;
 
-  /* Type of elements of strings. */
-  struct type **string_char_type;
+    /* Zero if the language has first-class arrays.  True if there are no
+       array values, and array objects decay to pointers, as in C. */
 
-  /* Add fields above this point, so the magic number is always last. */
-  /* Magic number for compat checking */
+    char c_style_arrays;
 
-  long la_magic;
+    /* 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;
+
+    /* Add fields above this point, so the magic number is always last. */
+    /* Magic number for compat checking */
+
+    long la_magic;
+
+  };
 
 #define LANG_MAGIC     910823L
 
@@ -222,11 +240,14 @@ 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;
 \f
 /* These macros define the behaviour of the expression 
    evaluator.  */
@@ -245,10 +266,10 @@ extern enum language_mode
 extern void
 language_info PARAMS ((int));
 
-extern void
+extern enum language
 set_language PARAMS ((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
@@ -260,8 +281,8 @@ set_language PARAMS ((enum language));
 #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, \
+#define LA_VAL_PRINT(type,valaddr,offset,addr,stream,fmt,deref,recurse,pretty) \
+  (current_language->la_val_print(type,valaddr,offset,addr,stream,fmt,deref, \
                                  recurse,pretty))
 #define LA_VALUE_PRINT(val,stream,fmt,pretty) \
   (current_language->la_value_print(val,stream,fmt,pretty))
@@ -309,8 +330,10 @@ set_language PARAMS ((enum language));
 
 #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_STRING(stream, string, length, width, force_ellipses) \
+  (current_language->la_printstr(stream, string, length, width, force_ellipses))
+#define LA_EMIT_CHAR(ch, stream, quoter) \
+  (current_language->la_emitchar(ch, stream, quoter))
 
 /* Test a character to decide whether it can be printed in literal form
    or needs to be printed in another representation.  For example,
@@ -318,8 +341,10 @@ 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
@@ -327,23 +352,35 @@ set_language PARAMS ((enum language));
    (to produce e.g. %08x or %lx).  */
 
 extern char *
-local_decimal_format_custom PARAMS ((char *)); /* language.c */
+  local_decimal_format_custom PARAMS ((char *));       /* language.c */
 
 extern char *
-local_octal_format_custom PARAMS ((char *));   /* language.c */
+  local_octal_format_custom PARAMS ((char *)); /* language.c */
+
+extern char *
+  local_hex_format_custom PARAMS ((char *));   /* language.c */
+
+/* Return a string that contains the hex digits of the number.  No preceeding
+   "0x" */
 
 extern char *
-local_hex_format_custom PARAMS ((char *));     /* language.c */
+  longest_raw_hex_string PARAMS ((LONGEST));
 
 /* 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".  */
+   the next call.  Takes printf options like "08l" or "l".  */
 
 extern char *
-local_hex_string PARAMS ((unsigned long));             /* language.c */
+  local_hex_string PARAMS ((unsigned long));   /* language.c */
 
 extern char *
-local_hex_string_custom PARAMS ((unsigned long, char *)); /* language.c */
+  longest_local_hex_string PARAMS ((LONGEST)); /* language.c */
+
+extern char *
+  local_hex_string_custom PARAMS ((unsigned long, char *));    /* language.c */
+
+extern char *
+  longest_local_hex_string_custom PARAMS ((LONGEST, char *));  /* language.c */
 
 /* Type predicates */
 
@@ -395,37 +432,38 @@ op_error PARAMS ((char *fmt, enum exp_opcode, int));
    op_error((f),(o),range_check==range_check_on ? 1 : 0)
 
 extern void
-type_error PARAMS ((char *, ...))
-     ATTR_FORMAT(printf, 1, 2);
+  type_error
+PARAMS ((char *,...))
+ATTR_FORMAT (printf, 1, 2);
 
-void
-range_error PARAMS ((char *, ...))
-     ATTR_FORMAT(printf, 1, 2);
+     void
+     range_error PARAMS ((char *,...))
+  ATTR_FORMAT (printf, 1, 2);
 
 /* Data:  Does this value represent "truth" to the current language?  */
 
-extern int
-value_true PARAMS ((struct value *));
+     extern int
+     value_true PARAMS ((struct value *));
 
-extern struct type * lang_bool_type PARAMS ((void));
+     extern struct type *lang_bool_type PARAMS ((void));
 
-/* The type used for Boolean values in teh current language. */
+/* The type used for Boolean values in the current language. */
 #define LA_BOOL_TYPE lang_bool_type ()
 
 /* Misc:  The string representing a particular enum language.  */
 
-extern const struct language_defn *
-language_def PARAMS ((enum language));
+     extern enum language language_enum PARAMS ((char *str));
 
-extern char *
-language_str PARAMS ((enum language));
+     extern const struct language_defn *language_def PARAMS ((enum language));
+
+     extern char *language_str PARAMS ((enum language));
 
 /* Add a language to the set known by GDB (at initialization time).  */
 
-extern void
-add_language PARAMS ((const struct language_defn *));
+     extern void
+     add_language PARAMS ((const struct language_defn *));
 
-extern enum language
-get_frame_language PARAMS ((void));            /* In stack.c */
+     extern enum language
+     get_frame_language PARAMS ((void));       /* In stack.c */
 
-#endif /* defined (LANGUAGE_H) */
+#endif /* defined (LANGUAGE_H) */
This page took 0.031391 seconds and 4 git commands to generate.