* i387-tdep.c (print_i387_value): Cast &value to (char *) in
[deliverable/binutils-gdb.git] / gdb / scm-lang.c
index b054dcf623162f3a3139707ba25115d9fa6f445d..ac09fe6aa32fb5f567a995dbe67d7578b6bf67f2 100644 (file)
@@ -1,21 +1,22 @@
 /* Scheme/Guile language support routines for GDB, the GNU debugger.
-   Copyright 1995 Free Software Foundation, Inc.
+   Copyright 1995, 2000 Free Software Foundation, Inc.
 
-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.  */
 
 #include "defs.h"
 #include "symtab.h"
@@ -28,26 +29,35 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 #include "scm-lang.h"
 #include "scm-tags.h"
 #include "gdb_string.h"
+#include "gdbcore.h"
 
-extern struct type ** const (c_builtin_types[]);
-extern value_ptr value_allocate_space_in_inferior PARAMS ((int));
-extern value_ptr find_function_in_inferior PARAMS ((char*));
+extern void _initialize_scheme_language PARAMS ((void));
+static value_ptr evaluate_subexp_scm PARAMS ((struct type *, struct expression *,
+                                             int *, enum noside));
+static value_ptr scm_lookup_name PARAMS ((char *));
+static int in_eval_c PARAMS ((void));
+static void scm_printstr (struct ui_file * stream, char *string,
+                         unsigned int length, int width,
+                         int force_ellipses);
+
+extern struct type **CONST_PTR (c_builtin_types[]);
 
 struct type *builtin_type_scm;
 
 void
 scm_printchar (c, stream)
      int c;
-     GDB_FILE *stream;
+     struct ui_file *stream;
 {
   fprintf_filtered (stream, "#\\%c", c);
 }
 
 static void
-scm_printstr (stream, string, length, force_ellipses)
-     GDB_FILE *stream;
+scm_printstr (stream, string, length, width, force_ellipses)
+     struct ui_file *stream;
      char *string;
      unsigned int length;
+     int width;
      int force_ellipses;
 {
   fprintf_filtered (stream, "\"%s\"", string);
@@ -73,7 +83,6 @@ scm_get_field (svalue, index)
      LONGEST svalue;
      int index;
 {
-  value_ptr val;
   char buffer[20];
   read_memory (SCM2PTR (svalue) + index * TYPE_LENGTH (builtin_type_scm),
               buffer, TYPE_LENGTH (builtin_type_scm));
@@ -100,16 +109,17 @@ scm_unpack (type, valaddr, context)
          else
            return 1;
        }
-      switch (7 & svalue)
+      switch (7 & (int) svalue)
        {
-       case 2:  case 6: /* fixnum */
+       case 2:
+       case 6:         /* fixnum */
          return svalue >> 2;
-       case 4: /* other immediate value */
-         if (SCM_ICHRP (svalue)) /* character */
+       case 4:         /* other immediate value */
+         if (SCM_ICHRP (svalue))       /* character */
            return SCM_ICHR (svalue);
          else if (SCM_IFLAGP (svalue))
            {
-             switch (svalue)
+             switch ((int) svalue)
                {
 #ifndef SICP
                case SCM_EOL:
@@ -148,13 +158,13 @@ in_eval_c ()
    First lookup in Scheme context (using the scm_lookup_cstr inferior
    function), then try lookup_symbol for compiled variables. */
 
-value_ptr
+static value_ptr
 scm_lookup_name (str)
      char *str;
 {
   value_ptr args[3];
   int len = strlen (str);
-  value_ptr symval, func, val;
+  value_ptr func, val;
   struct symbol *sym;
   args[0] = value_allocate_space_in_inferior (len);
   args[1] = value_from_longest (builtin_type_int, len);
@@ -186,7 +196,8 @@ scm_lookup_name (str)
 
 value_ptr
 scm_evaluate_string (str, len)
-     char *str; int len;
+     char *str;
+     int len;
 {
   value_ptr func;
   value_ptr addr = value_allocate_space_in_inferior (len + 1);
@@ -206,7 +217,8 @@ evaluate_subexp_scm (expect_type, exp, pos, noside)
      enum noside noside;
 {
   enum exp_opcode op = exp->elts[*pos].opcode;
-  int len, pc;  char *str;
+  int len, pc;
+  char *str;
   switch (op)
     {
     case OP_NAME:
@@ -225,14 +237,15 @@ evaluate_subexp_scm (expect_type, exp, pos, noside)
        goto nosideret;
       str = &exp->elts[pc + 2].string;
       return scm_evaluate_string (str, len);
-    default: ;
+    default:;
     }
   return evaluate_subexp_standard (expect_type, exp, pos, noside);
- nosideret:
+nosideret:
   return value_from_longest (builtin_type_long, (LONGEST) 1);
 }
 
-const struct language_defn scm_language_defn = {
+const struct language_defn scm_language_defn =
+{
   "scheme",                    /* Language name */
   language_scm,
   c_builtin_types,
@@ -241,20 +254,21 @@ const struct language_defn scm_language_defn = {
   scm_parse,
   c_error,
   evaluate_subexp_scm,
-  scm_printchar,                       /* Print a character constant */
+  scm_printchar,               /* Print a character constant */
   scm_printstr,                        /* Function to print string constant */
-  NULL,        /* Create fundamental type in this language */
+  NULL,                                /* Function to print a single character */
+  NULL,                                /* Create fundamental type in this language */
   c_print_type,                        /* Print a type using appropriate syntax */
   scm_val_print,               /* Print a value using appropriate syntax */
   scm_value_print,             /* Print a top-level value */
-  {"",     "",    "",  ""},    /* Binary format info */
-  {"#o%lo",  "#o",   "o", ""}, /* Octal format info */
-  {"%ld",   "",    "d", ""},   /* Decimal format info */
-  {"#x%lX", "#X",  "X", ""},   /* Hex format info */
+  {"", "", "", ""},            /* Binary format info */
+  {"#o%lo", "#o", "o", ""},    /* Octal format info */
+  {"%ld", "", "d", ""},                /* Decimal format info */
+  {"#x%lX", "#X", "X", ""},    /* Hex format info */
   NULL,                                /* expression operators for printing */
   1,                           /* c-style arrays */
   0,                           /* String lower bound */
-  &builtin_type_char,          /* Type of string elements */ 
+  &builtin_type_char,          /* Type of string elements */
   LANG_MAGIC
 };
 
This page took 0.028151 seconds and 4 git commands to generate.