2004-05-04 Michael Koch <konqueror@gmx.de>
authormkoch <mkoch@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 4 May 2004 21:31:30 +0000 (21:31 +0000)
committermkoch <mkoch@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 4 May 2004 21:31:30 +0000 (21:31 +0000)
* java/nio/ByteBuffer.java,
java/nio/CharBuffer.java,
java/nio/DoubleBuffer.java,
java/nio/FloatBuffer.java,
java/nio/IntBuffer.java,
java/nio/LongBuffer.java,
java/nio/ShortBuffer.java:
(compareTo): Fixed bogus implementation in all buffer classes.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@81489 138bc75d-0d04-0410-961f-82ee72b054a4

libjava/ChangeLog
libjava/java/nio/ByteBuffer.java
libjava/java/nio/CharBuffer.java
libjava/java/nio/DoubleBuffer.java
libjava/java/nio/FloatBuffer.java
libjava/java/nio/IntBuffer.java
libjava/java/nio/LongBuffer.java
libjava/java/nio/ShortBuffer.java

index 76fe4f0..baf4d6a 100644 (file)
@@ -1,3 +1,14 @@
+2004-05-04  Michael Koch  <konqueror@gmx.de>
+
+       * java/nio/ByteBuffer.java,
+       java/nio/CharBuffer.java,
+       java/nio/DoubleBuffer.java,
+       java/nio/FloatBuffer.java,
+       java/nio/IntBuffer.java,
+       java/nio/LongBuffer.java,
+       java/nio/ShortBuffer.java:
+       (compareTo): Fixed bogus implementation in all buffer classes.
+
 2004-05-04  Ingo Proetel  <proetel@aicas.com>
 
        * java/awt/image/ColorModel.java (getRGBdefault): Default ColorModel has
index 276b2db..8b43da5 100644 (file)
@@ -293,32 +293,27 @@ public abstract class ByteBuffer extends Buffer
    */
   public int compareTo (Object obj)
   {
-    ByteBuffer a = (ByteBuffer) obj;
+    ByteBuffer other = (ByteBuffer) obj;
 
-    if (a.remaining () != remaining ())
-      return 1;
-
-    if (! hasArray () ||
-        ! a.hasArray ())
-      {
-        return 1;
-      }
-
-    int r = remaining ();
-    int i1 = position ();
-    int i2 = a.position ();
-
-    for (int i = 0; i < r; i++)
+    int num = Math.min(remaining(), other.remaining());
+    int pos_this = position();
+    int pos_other = other.position();
+    
+    for (int count = 0; count < num; count++)
       {
-        int t = (int) (get (i1) - a.get (i2));
-
-        if (t != 0)
-          {
-            return (int) t;
-          }
+        byte a = get(pos_this++);
+       byte b = other.get(pos_other++);
+        
+       if (a == b)
+         continue;
+          
+       if (a < b)
+         return -1;
+          
+       return 1;
       }
-
-    return 0;
+      
+    return remaining() - other.remaining();
   }
 
   /**
index 3d488ba..416ca83 100644 (file)
@@ -1,5 +1,5 @@
 /* CharBuffer.java -- 
-   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2003, 2004  Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
 
@@ -310,32 +310,27 @@ public abstract class CharBuffer extends Buffer
    */
   public int compareTo (Object obj)
   {
-    CharBuffer a = (CharBuffer) obj;
+    CharBuffer other = (CharBuffer) obj;
 
-    if (a.remaining () != remaining ())
-      return 1;
-
-    if (! hasArray () ||
-        ! a.hasArray ())
-      {
-        return 1;
-      }
-
-    int r = remaining ();
-    int i1 = position ();
-    int i2 = a.position ();
-
-    for (int i = 0; i < r; i++)
+    int num = Math.min(remaining(), other.remaining());
+    int pos_this = position();
+    int pos_other = other.position();
+    
+    for (int count = 0; count < num; count++)
       {
-        int t = (int) (get (i1) - a.get (i2));
-
-        if (t != 0)
-          {
-            return (int) t;
-          }
+        char a = get(pos_this++);
+        char b = other.get(pos_other++);
+        
+        if (a == b)
+          continue;
+          
+        if (a < b)
+          return -1;
+          
+        return 1;
       }
-
-    return 0;
+      
+     return remaining() - other.remaining();
   }
 
   /**
index d669c21..1ad8bae 100644 (file)
@@ -1,5 +1,5 @@
 /* DoubleBuffer.java -- 
-   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2003, 2004  Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
 
@@ -265,32 +265,27 @@ public abstract class DoubleBuffer extends Buffer
    */
   public int compareTo (Object obj)
   {
-    DoubleBuffer a = (DoubleBuffer) obj;
+    DoubleBuffer other = (DoubleBuffer) obj;
 
-    if (a.remaining () != remaining ())
-      return 1;
-
-    if (! hasArray () ||
-        ! a.hasArray ())
-      {
-        return 1;
-      }
-
-    int r = remaining ();
-    int i1 = position ();
-    int i2 = a.position ();
-
-    for (int i = 0; i < r; i++)
+    int num = Math.min(remaining(), other.remaining());
+    int pos_this = position();
+    int pos_other = other.position();
+    
+    for (int count = 0; count < num; count++)
       {
-        int t = (int) (get (i1) - a.get (i2));
-
-        if (t != 0)
-          {
-            return (int) t;
-          }
+       double a = get(pos_this++);
+       double b = other.get(pos_other++);
+        
+       if (a == b)
+         continue;
+          
+       if (a < b)
+         return -1;
+          
+       return 1;
       }
-
-    return 0;
+      
+    return remaining() - other.remaining();
   }
 
   /**
index 0c7b04d..ab87b7f 100644 (file)
@@ -1,5 +1,5 @@
 /* FloatBuffer.java -- 
-   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2003, 2004  Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
 
@@ -265,32 +265,27 @@ public abstract class FloatBuffer extends Buffer
    */
   public int compareTo (Object obj)
   {
-    FloatBuffer a = (FloatBuffer) obj;
+    FloatBuffer other = (FloatBuffer) obj;
 
-    if (a.remaining () != remaining ())
-      return 1;
-
-    if (! hasArray () ||
-        ! a.hasArray ())
-      {
-        return 1;
-      }
-
-    int r = remaining ();
-    int i1 = position ();
-    int i2 = a.position ();
-
-    for (int i = 0; i < r; i++)
+    int num = Math.min(remaining(), other.remaining());
+    int pos_this = position();
+    int pos_other = other.position();
+    
+    for (int count = 0; count < num; count++)
       {
-        int t = (int) (get (i1) - a.get (i2));
-
-        if (t != 0)
-          {
-            return (int) t;
-          }
+       float a = get(pos_this++);
+       float b = other.get(pos_other++);
+        
+       if (a == b)
+         continue;
+          
+       if (a < b)
+         return -1;
+          
+       return 1;
       }
-
-    return 0;
+      
+    return remaining() - other.remaining();
   }
 
   /**
index 469a344..52d822a 100644 (file)
@@ -1,5 +1,5 @@
 /* IntBuffer.java -- 
-   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2003, 2004  Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
 
@@ -265,32 +265,27 @@ public abstract class IntBuffer extends Buffer
    */
   public int compareTo (Object obj)
   {
-    IntBuffer a = (IntBuffer) obj;
+    IntBuffer other = (IntBuffer) obj;
 
-    if (a.remaining () != remaining ())
-      return 1;
-
-    if (! hasArray () ||
-        ! a.hasArray ())
-      {
-        return 1;
-      }
-
-    int r = remaining ();
-    int i1 = position ();
-    int i2 = a.position ();
-
-    for (int i = 0; i < r; i++)
+    int num = Math.min(remaining(), other.remaining());
+    int pos_this = position();
+    int pos_other = other.position();
+    
+    for (int count = 0; count < num; count++)
       {
-        int t = (int) (get (i1) - a.get (i2));
-
-        if (t != 0)
-          {
-            return (int) t;
-          }
+        int a = get(pos_this++);
+        int b = other.get(pos_other++);
+        
+        if (a == b)
+          continue;
+          
+        if (a < b)
+          return -1;
+          
+        return 1;
       }
-
-    return 0;
+      
+     return remaining() - other.remaining();
   }
 
   /**
index 712e0b3..1b420eb 100644 (file)
@@ -1,5 +1,5 @@
 /* LongBuffer.java -- 
-   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2003, 2004  Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
 
@@ -265,32 +265,27 @@ public abstract class LongBuffer extends Buffer
    */
   public int compareTo (Object obj)
   {
-    LongBuffer a = (LongBuffer) obj;
+    LongBuffer other = (LongBuffer) obj;
 
-    if (a.remaining () != remaining ())
-      return 1;
-
-    if (! hasArray () ||
-        ! a.hasArray ())
-      {
-        return 1;
-      }
-
-    int r = remaining ();
-    int i1 = position ();
-    int i2 = a.position ();
-
-    for (int i = 0; i < r; i++)
+    int num = Math.min(remaining(), other.remaining());
+    int pos_this = position();
+    int pos_other = other.position();
+    
+    for (int count = 0; count < num; count++)
       {
-        int t = (int) (get (i1) - a.get (i2));
-
-        if (t != 0)
-          {
-            return (int) t;
-          }
+        long a = get(pos_this++);
+        long b = other.get(pos_other++);
+        
+        if (a == b)
+          continue;
+          
+        if (a < b)
+          return -1;
+          
+        return 1;
       }
-
-    return 0;
+      
+     return remaining() - other.remaining();
   }
 
   /**
index 61097d0..9f54276 100644 (file)
@@ -1,5 +1,5 @@
 /* ShortBuffer.java -- 
-   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2003, 2004  Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
 
@@ -265,32 +265,27 @@ public abstract class ShortBuffer extends Buffer
    */
   public int compareTo (Object obj)
   {
-    ShortBuffer a = (ShortBuffer) obj;
+    ShortBuffer other = (ShortBuffer) obj;
 
-    if (a.remaining () != remaining ())
-      return 1;
-
-    if (! hasArray () ||
-        ! a.hasArray ())
-      {
-        return 1;
-      }
-
-    int r = remaining ();
-    int i1 = position ();
-    int i2 = a.position ();
-
-    for (int i = 0; i < r; i++)
+    int num = Math.min(remaining(), other.remaining());
+    int pos_this = position();
+    int pos_other = other.position();
+    
+    for (int count = 0; count < num; count++)
       {
-        int t = (int) (get (i1) - a.get (i2));
-
-        if (t != 0)
-          {
-            return (int) t;
-          }
+        short a = get(pos_this++);
+        short b = other.get(pos_other++);
+        
+        if (a == b)
+          continue;
+          
+        if (a < b)
+          return -1;
+          
+        return 1;
       }
-
-    return 0;
+      
+     return remaining() - other.remaining();
   }
 
   /**