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.list;
020:
021: import bak.pcj.DoubleIterator;
022: import java.util.NoSuchElementException;
023:
024: /**
025: * This class represents iterators over lists of double values.
026: *
027: * @see java.util.ListIterator
028: *
029: * @author Søren Bak
030: * @version 1.0 2002/29/12
031: * @since 1.0
032: */
033: public interface DoubleListIterator extends DoubleIterator {
034:
035: /**
036: * Adds a specified element to the list at this iterator's
037: * current position.
038: *
039: * @param v
040: * the element to add.
041: *
042: * @throws UnsupportedOperationException
043: * if addition is not supported by this
044: * iterator.
045: */
046: void add(double v);
047:
048: /**
049: * Indicates whether more double values can be returned by this
050: * iterator by calling <tt>previous()</tt>.
051: *
052: * @return <tt>true</tt> if more double values can be returned
053: * by this iterator in backwards direction; returns
054: * <tt>false</tt> otherwise.
055: *
056: * @see #previous()
057: */
058: boolean hasPrevious();
059:
060: /**
061: * Returns the index of the element that would be returned by
062: * a call to <tt>next()</tt>.
063: *
064: * @return the index of the element that would be returned by
065: * a call to <tt>next()</tt>.
066: *
067: * @see #next()
068: */
069: int nextIndex();
070:
071: /**
072: * Returns the previous double value of this iterator.
073: *
074: * @return the previous double value of this iterator.
075: *
076: * @throws NoSuchElementException
077: * if no more elements are available from this
078: * iterator in backwards direction.
079: *
080: * @see #hasPrevious()
081: */
082: double previous();
083:
084: /**
085: * Returns the index of the element that would be returned by
086: * a call to <tt>previous()</tt>.
087: *
088: * @return the index of the element that would be returned by
089: * a call to <tt>previous()</tt>; if no more elements
090: * are available in backwards direction, <tt>-1</tt>
091: * is returned.
092: *
093: * @see #previous()
094: */
095: int previousIndex();
096:
097: /**
098: * Sets the last element returned to a specified value.
099: *
100: * @param v
101: * the new value of the element.
102: *
103: * @throws UnsupportedOperationException
104: * if replacement is not supported by this iterator.
105: *
106: * @throws IllegalStateException
107: * if no element has been returned by this iterator
108: * yet.
109: */
110: void set(double v);
111:
112: }
|