gnu.lists

Class SeqPosition

public class SeqPosition extends Object implements ListIterator, Enumeration

A position in a sequence (list). Conceptually similar to Java2's ListIterator, but we use the name "Position" to indicate that it can be used to both indicate a position in a sequence and to iterate through a sequence. If you use a SeqPosition as a "position", you would not modify if (though it is possible the offset of the position in the sequence may change due to other update operations on the sequence). If you use a SeqPosition as an "iterator", you would initialize it to some beginnning position, and then modify the current position of the SeqPosition so it refers to successive elements. See the package overview for more information.
Field Summary
intipos
An integer that (together with xpos) indicates the current position.
AbstractSequencesequence
The Sequence relative to which ipos and xpos have meaning.
Constructor Summary
SeqPosition()
SeqPosition(AbstractSequence seq)
SeqPosition(AbstractSequence seq, int offset, boolean isAfter)
SeqPosition(AbstractSequence seq, int ipos)
Method Summary
voidadd(Object o)
SeqPositioncopy()
voidfinalize()
intfromEndIndex()
intgetContainingSequenceSize()
ObjectgetNext()
Get element following current position.
intgetNextKind()
Return a code (defined in Sequence) for the type of the next element.
StringgetNextTypeName()
Get the "tag name" for the next element, if any.
ObjectgetNextTypeObject()
Get the "tag object" for the next element, if any.
intgetPos()
Get a position int "cookie" for this SeqPosition.
ObjectgetPrevious()
Get element before the current position.
booleangotoChildrenStart()
Set position before first child (of the element following position).
voidgotoEnd(AbstractSequence seq)
booleangotoNext()
Move one element forwards, if possible.
booleangotoPrevious()
Move backwards one element.
voidgotoStart(AbstractSequence seq)
booleanhasMoreElements()
True if there is an element following the current position.
booleanhasNext()
See java.util.Iterator.
booleanhasPrevious()
See java.util.Iterator.
booleanisAfter()
Tests whether the position pair has the "isAfter" property.
static SeqPositionmake(AbstractSequence seq, int ipos)
Creates a new SeqPosition, from a position pair.
Objectnext()
See java.util.ListIterator.
ObjectnextElement()
See java.util.Enumeration.
intnextIndex()
See java.util.Iterator.
Objectprevious()
See java.util.ListIterator.
intpreviousIndex()
See java.util.Iterator.
voidrelease()
voidremove()
voidset(Object value)
voidset(AbstractSequence seq, int index, boolean isAfter)
voidset(SeqPosition pos)
voidsetNext(Object value)
voidsetPos(AbstractSequence seq, int ipos)
voidsetPos(int ipos)
voidsetPrevious(Object value)
StringtoInfo()
StringtoString()

Field Detail

ipos

public int ipos
An integer that (together with xpos) indicates the current position. The actual value has no meaning, except as interpreted by sequence.

sequence

public AbstractSequence sequence
The Sequence relative to which ipos and xpos have meaning. This is normally the same as the Sequence we iterate through. However, if this is a TreePosition, it may an ancestor instead.

Constructor Detail

SeqPosition

public SeqPosition()

SeqPosition

public SeqPosition(AbstractSequence seq)

SeqPosition

public SeqPosition(AbstractSequence seq, int offset, boolean isAfter)

SeqPosition

public SeqPosition(AbstractSequence seq, int ipos)

Method Detail

add

public void add(Object o)

copy

public SeqPosition copy()

finalize

public void finalize()

fromEndIndex

public final int fromEndIndex()

getContainingSequenceSize

public int getContainingSequenceSize()

getNext

public Object getNext()
Get element following current position. Does not move the position, in contrast to next() method.

Returns: EOF if at end of sequence, otherwise the value following.

getNextKind

public int getNextKind()
Return a code (defined in Sequence) for the type of the next element.

getNextTypeName

public String getNextTypeName()
Get the "tag name" for the next element, if any.

getNextTypeObject

public Object getNextTypeObject()
Get the "tag object" for the next element, if any.

getPos

public int getPos()
Get a position int "cookie" for this SeqPosition. The result can be passed to AbstractSequence's getPosNext(int), createRelativePos, and other methods. By default this is the value of ipos, but for sequences that need emore state than an ipos for efficient position, we use a PositionManager index. So this gets over-ridden in ExtPosition.

getPrevious

public Object getPrevious()
Get element before the current position. Does not move the position, in contrast to previous() method.

Returns: EOF if at beginning of sequence, otherwise the value prior.

gotoChildrenStart

public boolean gotoChildrenStart()
Set position before first child (of the element following position).

Returns: true if there is a child sequence (which might be empty); false if current position is end of sequence or following element is atomic (cannot have children).

gotoEnd

public final void gotoEnd(AbstractSequence seq)

gotoNext

public boolean gotoNext()
Move one element forwards, if possible.

Returns: if we succeeded in moving forwards (i.e. not at end of sequence).

gotoPrevious

public boolean gotoPrevious()
Move backwards one element.

Returns: false iff already at beginning.

gotoStart

public final void gotoStart(AbstractSequence seq)

hasMoreElements

public final boolean hasMoreElements()
True if there is an element following the current position. False if we are at the end. See java.util.Enumeration.

hasNext

public boolean hasNext()
See java.util.Iterator.

hasPrevious

public boolean hasPrevious()
See java.util.Iterator.

isAfter

public boolean isAfter()
Tests whether the position pair has the "isAfter" property. I.e. if something is inserted at the position, will the iterator end up being after the new data? A toNext() or next() command should set isAfter() to true; a toPrevious or previous command should set isAfter() to false.

make

public static SeqPosition make(AbstractSequence seq, int ipos)
Creates a new SeqPosition, from a position pair. The position pair is copied (using copyPos).

next

public Object next()
See java.util.ListIterator.

nextElement

public final Object nextElement()
See java.util.Enumeration.

nextIndex

public int nextIndex()
See java.util.Iterator.

previous

public Object previous()
See java.util.ListIterator.

previousIndex

public final int previousIndex()
See java.util.Iterator.

release

public void release()

remove

public void remove()

set

public final void set(Object value)

set

public void set(AbstractSequence seq, int index, boolean isAfter)

set

public void set(SeqPosition pos)

setNext

public void setNext(Object value)

setPos

public void setPos(AbstractSequence seq, int ipos)

setPos

public void setPos(int ipos)

setPrevious

public void setPrevious(Object value)

toInfo

public String toInfo()

toString

public String toString()