001: /*
002: * Primitive Collections for Java.
003: * Copyright (C) 2002 Søren Bak
004: *
005: * This library is free software; you can redistribute it and/or
006: * modify it under the terms of the GNU Lesser General Public
007: * License as published by the Free Software Foundation; either
008: * version 2.1 of the License, or (at your option) any later version.
009: *
010: * This library is distributed in the hope that it will be useful,
011: * but WITHOUT ANY WARRANTY; without even the implied warranty of
012: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
013: * Lesser General Public License for more details.
014: *
015: * You should have received a copy of the GNU Lesser General Public
016: * License along with this library; if not, write to the Free Software
017: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
018: */
019: package bak.pcj;
020:
021: import bak.pcj.util.Exceptions;
022:
023: /**
024: * This class represents synchronized collections of double values. As in
025: * the Java Collections API iterations over the collection must be
026: * synchronized on the collection itself.
027: *
028: * @see java.util.Collections#synchronizedCollection(java.util.Collection)
029: *
030: * @author Søren Bak
031: * @version 1.1 21-08-2003 20:17
032: * @since 1.0
033: */
034: public class SynchronizedDoubleCollection implements DoubleCollection {
035:
036: /** The collection underlying this synchronized collection. */
037: protected DoubleCollection collection;
038:
039: /** An object on which to synchronize this collection's methods. */
040: protected Object m;
041:
042: /**
043: * Creates a new synchronized collection on an existing
044: * collection. The result is a collection whose elements and
045: * behaviour is the same as the existing collection's except
046: * that the new collection's methods are synchronized.
047: *
048: * @param c
049: * the existing collection to make synchronized.
050: *
051: * @throws NullPointerException
052: * if <tt>c</tt> is <tt>null</tt>.
053: */
054: public SynchronizedDoubleCollection(DoubleCollection c) {
055: if (c == null)
056: Exceptions.nullArgument("collection");
057: this .collection = c;
058: this .m = this ;
059: }
060:
061: public boolean add(double v) {
062: synchronized (m) {
063: return collection.add(v);
064: }
065: }
066:
067: public boolean addAll(DoubleCollection c) {
068: synchronized (m) {
069: return collection.addAll(c);
070: }
071: }
072:
073: public void clear() {
074: synchronized (m) {
075: collection.clear();
076: }
077: }
078:
079: public boolean contains(double v) {
080: synchronized (m) {
081: return collection.contains(v);
082: }
083: }
084:
085: public boolean containsAll(DoubleCollection c) {
086: synchronized (m) {
087: return collection.containsAll(c);
088: }
089: }
090:
091: public boolean equals(Object obj) {
092: synchronized (m) {
093: return collection.equals(obj);
094: }
095: }
096:
097: public int hashCode() {
098: synchronized (m) {
099: return collection.hashCode();
100: }
101: }
102:
103: public boolean isEmpty() {
104: synchronized (m) {
105: return collection.isEmpty();
106: }
107: }
108:
109: public DoubleIterator iterator() {
110: synchronized (m) {
111: return collection.iterator();
112: }
113: }
114:
115: public boolean remove(double v) {
116: synchronized (m) {
117: return collection.remove(v);
118: }
119: }
120:
121: public boolean removeAll(DoubleCollection c) {
122: synchronized (m) {
123: return collection.removeAll(c);
124: }
125: }
126:
127: public boolean retainAll(DoubleCollection c) {
128: synchronized (m) {
129: return collection.retainAll(c);
130: }
131: }
132:
133: public int size() {
134: synchronized (m) {
135: return collection.size();
136: }
137: }
138:
139: public double[] toArray() {
140: synchronized (m) {
141: return collection.toArray();
142: }
143: }
144:
145: public double[] toArray(double[] a) {
146: synchronized (m) {
147: return collection.toArray(a);
148: }
149: }
150:
151: public void trimToSize() {
152: synchronized (m) {
153: collection.trimToSize();
154: }
155: }
156:
157: }
|