* defs.h: define language_pascal in language enumeration.
authorPierre Muller <muller@sourceware.org>
Mon, 19 Jun 2000 10:14:22 +0000 (10:14 +0000)
committerPierre Muller <muller@sourceware.org>
Mon, 19 Jun 2000 10:14:22 +0000 (10:14 +0000)
    * language.h: define _LANG_pascal macro.
    * language.c: add language_pascal support in all language dependant functions.

gdb/ChangeLog
gdb/defs.h
gdb/language.c
gdb/language.h

index 55a1a49..f67c9ca 100644 (file)
@@ -1,3 +1,10 @@
+2000-06-16  Pierre Muller  <muller@ics.u-strasbg.fr>
+
+       * defs.h: define language_pascal in language enumeration.
+       * language.h: define _LANG_pascal macro.
+       * language.c: add language_pascal support in all language dependant
+   functions.
+
 Sun Jun 18 01:01:09 2000  Andrew Cagney  <cagney@b1.cygnus.com>
 
        * mips-tdep.c (mips_debug): New variable.
index 093358f..f00f76e 100644 (file)
@@ -196,7 +196,8 @@ enum language
     language_fortran,          /* Fortran */
     language_m2,               /* Modula-2 */
     language_asm,              /* Assembly language */
-    language_scm               /* Scheme / Guile */
+    language_scm,              /* Scheme / Guile */
+    language_pascal            /* Pascal */
   };
 
 enum precision_type
index 60f43d3..fd81f67 100644 (file)
@@ -814,6 +814,7 @@ integral_type (type)
       return (TYPE_CODE (type) != TYPE_CODE_INT) &&
        (TYPE_CODE (type) != TYPE_CODE_ENUM) ? 0 : 1;
     case language_m2:
+    case language_pascal:
       return TYPE_CODE (type) != TYPE_CODE_INT ? 0 : 1;
     case language_chill:
       error ("Missing Chill support in function integral_type.");      /*FIXME */
@@ -849,6 +850,7 @@ character_type (type)
     {
     case language_chill:
     case language_m2:
+    case language_pascal:
       return TYPE_CODE (type) != TYPE_CODE_CHAR ? 0 : 1;
 
     case language_c:
@@ -871,6 +873,7 @@ string_type (type)
     {
     case language_chill:
     case language_m2:
+    case language_pascal:
       return TYPE_CODE (type) != TYPE_CODE_STRING ? 0 : 1;
 
     case language_c:
@@ -935,6 +938,11 @@ structured_type (type)
       return (TYPE_CODE (type) == TYPE_CODE_STRUCT) ||
        (TYPE_CODE (type) == TYPE_CODE_UNION) ||
        (TYPE_CODE (type) == TYPE_CODE_ARRAY);
+   case language_pascal:
+      return (TYPE_CODE(type) == TYPE_CODE_STRUCT) ||
+        (TYPE_CODE(type) == TYPE_CODE_UNION) ||
+        (TYPE_CODE(type) == TYPE_CODE_SET) ||
+           (TYPE_CODE(type) == TYPE_CODE_ARRAY);
     case language_m2:
       return (TYPE_CODE (type) == TYPE_CODE_STRUCT) ||
        (TYPE_CODE (type) == TYPE_CODE_SET) ||
@@ -966,7 +974,11 @@ lang_bool_type ()
        }
       return builtin_type_f_logical_s2;
     case language_cplus:
-      sym = lookup_symbol ("bool", NULL, VAR_NAMESPACE, NULL, NULL);
+    case language_pascal:
+      if (current_language->la_language==language_cplus)
+        {sym = lookup_symbol ("bool", NULL, VAR_NAMESPACE, NULL, NULL);}
+      else
+        {sym = lookup_symbol ("boolean", NULL, VAR_NAMESPACE, NULL, NULL);}
       if (sym)
        {
          type = SYMBOL_TYPE (sym);
@@ -1160,6 +1172,21 @@ binop_type_check (arg1, arg2, op)
            }
 #endif
 
+#ifdef _LANG_pascal
+      case language_pascal:
+        switch(op)
+        {
+        case BINOP_DIV:
+           if (!float_type(t1) && !float_type(t2))
+              type_op_error ("Arguments to %s must be floating point numbers.",op);
+           break;
+        case BINOP_INTDIV:
+           if (!integral_type(t1) || !integral_type(t2))
+              type_op_error ("Arguments to %s must be of integral type.",op);
+           break;
+        }
+#endif
+
 #ifdef _LANG_chill
        case language_chill:
          error ("Missing Chill support in function binop_type_check.");        /*FIXME */
index 185bc91..8de751d 100644 (file)
@@ -35,7 +35,8 @@ struct expression;
 #define        _LANG_c
 #define        _LANG_m2
 #define        _LANG_chill
-#define _LANG_fortran
+#define  _LANG_fortran
+#define  _LANG_pascal
 
 #define MAX_FORTRAN_DIMS  7    /* Maximum number of F77 array dims */