001: /*
002: * Primitive Collections for Java.
003: * Copyright (C) 2002, 2003 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.adapter;
020:
021: import bak.pcj.list.IntListIterator;
022: import bak.pcj.util.Exceptions;
023: import java.util.ListIterator;
024:
025: /**
026: * This class represents adaptions of primitive list iterators over
027: * int values to Java Collections Framework list iterators.
028: *
029: * @author Søren Bak
030: * @version 1.2 21-08-2003 18:59
031: * @since 1.0
032: */
033: public class IntListIteratorToListIteratorAdapter implements
034: ListIterator {
035:
036: /** The underlying primitive iterator. */
037: protected IntListIterator iterator;
038:
039: /**
040: * Creates a new adaption of a primitive list iterator over
041: * int values to a Java Collections Framework list iterator.
042: *
043: * @param iterator
044: * the primitive iterator to adapt.
045: *
046: * @throws NullPointerException
047: * if <tt>iterator</tt> is <tt>null</tt>.
048: */
049: public IntListIteratorToListIteratorAdapter(IntListIterator iterator) {
050: if (iterator == null)
051: Exceptions.nullArgument("iterator");
052: this .iterator = iterator;
053: }
054:
055: /**
056: * Adds a specified element to the list at this iterator's
057: * current position.
058: *
059: * @param o
060: * the element to add.
061: *
062: * @throws UnsupportedOperationException
063: * if addition is not supported by this
064: * iterator.
065: *
066: * @throws ClassCastException
067: * if <tt>o</tt> is not of class
068: * {@link Integer Integer}.
069: *
070: * @throws NullPointerException
071: * if <tt>o</tt> is <tt>null</tt>.
072: */
073: public void add(Object o) {
074: iterator.add(((Integer) o).intValue());
075: }
076:
077: /**
078: * Indicates whether more values can be returned by this
079: * iterator.
080: *
081: * @return <tt>true</tt> if more values can be returned
082: * by this iterator; returns <tt>false</tt>
083: * otherwise.
084: *
085: * @see #next()
086: */
087: public boolean hasNext() {
088: return iterator.hasNext();
089: }
090:
091: /**
092: * Indicates whether more values can be returned by this
093: * iterator by calling <tt>previous()</tt>.
094: *
095: * @return <tt>true</tt> if more values can be returned
096: * by this iterator in backwards direction; returns
097: * <tt>false</tt> otherwise.
098: *
099: * @see #previous()
100: */
101: public boolean hasPrevious() {
102: return iterator.hasPrevious();
103: }
104:
105: /**
106: * Returns the next value of this iterator.
107: *
108: * @return the next value of this iterator.
109: *
110: * @throws NoSuchElementException
111: * if no more elements are available from this
112: * iterator.
113: *
114: * @see #hasNext()
115: */
116: public Object next() {
117: return new Integer(iterator.next());
118: }
119:
120: /**
121: * Returns the index of the element that would be returned by
122: * a call to <tt>next()</tt>.
123: *
124: * @return the index of the element that would be returned by
125: * a call to <tt>next()</tt>.
126: *
127: * @see #next()
128: */
129: public int nextIndex() {
130: return iterator.nextIndex();
131: }
132:
133: /**
134: * Returns the previous value of this iterator.
135: *
136: * @return the previous value of this iterator.
137: *
138: * @throws NoSuchElementException
139: * if no more elements are available from this
140: * iterator in backwards direction.
141: *
142: * @see #hasPrevious()
143: */
144: public Object previous() {
145: return new Integer(iterator.previous());
146: }
147:
148: /**
149: * Returns the index of the element that would be returned by
150: * a call to <tt>previous()</tt>.
151: *
152: * @return the index of the element that would be returned by
153: * a call to <tt>previous()</tt>; if no more elements
154: * are available in backwards direction, <tt>-1</tt>
155: * is returned.
156: *
157: * @see #previous()
158: */
159: public int previousIndex() {
160: return iterator.previousIndex();
161: }
162:
163: /**
164: * Removes the last value returned from the underlying
165: * collection.
166: *
167: * @throws UnsupportedOperationException
168: * if removal is not supported by this iterator.
169: *
170: * @throws IllegalStateException
171: * if no element has been returned by this iterator
172: * yet.
173: */
174: public void remove() {
175: iterator.remove();
176: }
177:
178: /**
179: * Sets the last element returned to a specified value.
180: *
181: * @param o
182: * the new value of the element.
183: *
184: * @throws UnsupportedOperationException
185: * if replacement is not supported by this iterator.
186: *
187: * @throws IllegalStateException
188: * if no element has been returned by this iterator
189: * yet.
190: *
191: * @throws ClassCastException
192: * if <tt>o</tt> is not of class
193: * {@link Integer Integer}.
194: *
195: * @throws NullPointerException
196: * if <tt>o</tt> is <tt>null</tt>.
197: */
198: public void set(Object o) {
199: iterator.set(((Integer) o).intValue());
200: }
201:
202: }
|