|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.parboiled.support.DefaultValueStack<V>
V
- the type of the value objectspublic class DefaultValueStack<V>
An implementation of a stack of value objects providing an efficient snapshot capability and a number of convenience
methods. The current state of the stack can be saved and restored in small constant time with the methods
takeSnapshot()
and restoreSnapshot(Object)
()}. The implementation also serves as an Iterable
over the current stack values (the values are being provided with the last value (on top of the stack) first).
Nested Class Summary | |
---|---|
protected static class |
DefaultValueStack.Element
|
Field Summary | |
---|---|
protected DefaultValueStack.Element |
head
|
protected V |
tempValue
|
Constructor Summary | |
---|---|
DefaultValueStack()
Initializes an empty value stack. |
|
DefaultValueStack(java.lang.Iterable<V> values)
Initializes a value stack containing the given values with the last value being at the top of the stack. |
Method Summary | |
---|---|
void |
clear()
Clears all values. |
void |
dup()
Duplicates the top value. |
boolean |
isEmpty()
Determines whether the stack is empty. |
java.util.Iterator<V> |
iterator()
|
V |
peek()
Returns the value at the top of the stack without removing it. |
V |
peek(int down)
Returns the value the given number of elements below the top of the stack without removing it. |
void |
poke(int down,
V value)
Replaces the element the given number of elements below the current top of the stack. |
void |
poke(V value)
Replaces the current top value with the given value. |
V |
pop()
Removes the value at the top of the stack and returns it. |
V |
pop(int down)
Removes the value the given number of elements below the top of the stack. |
void |
push(int down,
V value)
Inserts the given value a given number of elements below the current top of the stack. |
void |
push(V value)
Pushes the given value onto the stack. |
void |
pushAll(java.lang.Iterable<V> values)
Pushes all given elements onto the stack (in the order as given). |
void |
pushAll(V firstValue,
V... moreValues)
Pushes all given elements onto the stack (in the order as given). |
void |
restoreSnapshot(java.lang.Object snapshot)
Restores the stack state as previously returned by ValueStack.takeSnapshot() . |
int |
size()
Returns the number of elements currently on the stack. |
void |
swap()
Swaps the top two stack values. |
void |
swap3()
Reverses the order of the top 3 stack values. |
void |
swap4()
Reverses the order of the top 4 stack values. |
void |
swap5()
Reverses the order of the top 5 stack values. |
void |
swap6()
Reverses the order of the top 5 stack values. |
java.lang.Object |
takeSnapshot()
Returns an object representing the current state of the stack. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected DefaultValueStack.Element head
protected V tempValue
Constructor Detail |
---|
public DefaultValueStack()
public DefaultValueStack(java.lang.Iterable<V> values)
values
- the initial stack valuesMethod Detail |
---|
public boolean isEmpty()
ValueStack
isEmpty
in interface ValueStack<V>
public int size()
ValueStack
size
in interface ValueStack<V>
public void clear()
ValueStack
clear
in interface ValueStack<V>
public java.lang.Object takeSnapshot()
ValueStack
takeSnapshot
in interface ValueStack<V>
public void restoreSnapshot(java.lang.Object snapshot)
ValueStack
ValueStack.takeSnapshot()
.
This cost of running this operation is negligible and independent from the size of the stack.
restoreSnapshot
in interface ValueStack<V>
snapshot
- a snapshot object previously returned by ValueStack.takeSnapshot()
public void push(V value)
ValueStack
push
in interface ValueStack<V>
value
- the valuepublic void push(int down, V value)
ValueStack
push
in interface ValueStack<V>
down
- the number of elements to skip before inserting the value (0 being equivalent to push(value))value
- the valuepublic void pushAll(V firstValue, V... moreValues)
ValueStack
pushAll
in interface ValueStack<V>
firstValue
- the first valuemoreValues
- the other valuespublic void pushAll(java.lang.Iterable<V> values)
ValueStack
pushAll
in interface ValueStack<V>
values
- the valuespublic V pop()
ValueStack
pop
in interface ValueStack<V>
public V pop(int down)
ValueStack
pop
in interface ValueStack<V>
down
- the number of elements to skip before removing the value (0 being equivalent to pop())
public V peek()
ValueStack
peek
in interface ValueStack<V>
public V peek(int down)
ValueStack
peek
in interface ValueStack<V>
down
- the number of elements to skip (0 being equivalent to peek())
public void poke(V value)
ValueStack
poke
in interface ValueStack<V>
value
- the valuepublic void poke(int down, V value)
ValueStack
poke
in interface ValueStack<V>
down
- the number of elements to skip before replacing the value (0 being equivalent to poke(value))value
- the value to replace withpublic void dup()
ValueStack
dup
in interface ValueStack<V>
public void swap()
ValueStack
swap
in interface ValueStack<V>
public void swap3()
ValueStack
swap3
in interface ValueStack<V>
public void swap4()
ValueStack
swap4
in interface ValueStack<V>
public void swap5()
ValueStack
swap5
in interface ValueStack<V>
public void swap6()
ValueStack
swap6
in interface ValueStack<V>
public java.util.Iterator<V> iterator()
iterator
in interface java.lang.Iterable<V>
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |