diff options
author | Tom Tromey <tromey@redhat.com> | 2004-08-07 20:31:54 +0000 |
---|---|---|
committer | Tom Tromey <tromey@redhat.com> | 2004-08-07 20:31:54 +0000 |
commit | cfadffc4eb9fec4be74607a744c1a3722771214c (patch) | |
tree | ae2dc0f88c2a7bfcc2b22d8a77c0330374249251 | |
parent | b1460fe0db75a99582fc853c26989e161ac47da5 (diff) | |
download | classpath-cfadffc4eb9fec4be74607a744c1a3722771214c.tar.gz |
* java/util/AbstractQueue.java: New file.
* java/util/LinkedList.java (element): New method.
(offer): Likewise.
(peek): Likewise.
(poll): Likewise.
(remove): Likewise.
(LinkedList): Implement Queue.
* java/util/Queue.java: New file.
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | java/util/AbstractQueue.java | 86 | ||||
-rw-r--r-- | java/util/LinkedList.java | 46 | ||||
-rw-r--r-- | java/util/Queue.java | 51 |
4 files changed, 191 insertions, 1 deletions
@@ -1,5 +1,14 @@ 2004-08-07 Tom Tromey <tromey@redhat.com> + * java/util/AbstractQueue.java: New file. + * java/util/LinkedList.java (element): New method. + (offer): Likewise. + (peek): Likewise. + (poll): Likewise. + (remove): Likewise. + (LinkedList): Implement Queue. + * java/util/Queue.java: New file. + * java/lang/Enum.java: New file. * java/lang/Object.java (getClass): Now generic. diff --git a/java/util/AbstractQueue.java b/java/util/AbstractQueue.java new file mode 100644 index 000000000..e718f69ec --- /dev/null +++ b/java/util/AbstractQueue.java @@ -0,0 +1,86 @@ +/* AbstractQueue.java -- Implementation of some Queue methods + Copyright (C) 2004 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath 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, or (at your option) +any later version. + +GNU Classpath 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 GNU Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + + +package java.util; + +/** + * @since 1.5 + */ +public class AbstractQueue<T> extends AbstractCollection<T> implements Queue<T> +{ + protected AbstractQueue() + { + } + + public boolean add(T value) + { + if (offer(value)) + return true; + throw new IllegalStateException(); + } + + public boolean addAll(Collection<? extends T> c) + { + if (c == this) + throw new IllegalArgumentException(); + for (T val : c) + add(val); + } + + public void clear() + { + while (poll() != null) + ; + } + + public t element() + { + T result = peek(); + if (result == null) + throw new NoSuchElementException(); + return result; + } + + public T remove() + { + T result = poll(); + if (result == null) + throw new NoSuchElementException(); + return result; + } +} diff --git a/java/util/LinkedList.java b/java/util/LinkedList.java index e24ceece9..ed067cfe4 100644 --- a/java/util/LinkedList.java +++ b/java/util/LinkedList.java @@ -72,7 +72,7 @@ import java.lang.reflect.Array; * @status missing javadoc, but complete to 1.4 */ public class LinkedList<T> extends AbstractSequentialList<T> - implements List<T>, Cloneable, Serializable + implements List<T>, Queue<T>, Cloneable, Serializable { /** * Compatible with JDK 1.2. @@ -708,6 +708,50 @@ public class LinkedList<T> extends AbstractSequentialList<T> } /** + * @since 1.5 + */ + public boolean offer(T value) + { + return add(value); + } + + /** + * @since 1.5 + */ + public T element() + { + return getFirst(); + } + + /** + * @since 1.5 + */ + public T peek() + { + if (size == 0) + return null; + return getFirst(); + } + + /** + * @since 1.5 + */ + public T poll() + { + if (size == 0) + return null; + return removeFirst(); + } + + /** + * @since 1.5 + */ + public T remove() + { + return removeFirst(); + } + + /** * Serializes this object to the given stream. * * @param s the stream to write to diff --git a/java/util/Queue.java b/java/util/Queue.java new file mode 100644 index 000000000..57f477ccf --- /dev/null +++ b/java/util/Queue.java @@ -0,0 +1,51 @@ +/* Queue.java -- Interface that represents a queue + Copyright (C) 2004 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath 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, or (at your option) +any later version. + +GNU Classpath 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 GNU Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + + +package java.util; + +/** + * @since 1.5 + */ +public interface Queue<T> extends Collection<T> +{ + T element(); + boolean offer(T value); + T peek(); + T poll(); + T remove(); +} |