TransitionSequence.java
package edu.udel.cis.vsl.tass.transition.impl;
import edu.udel.cis.vsl.tass.state.IF.StateIF;
import edu.udel.cis.vsl.tass.transition.IF.TransitionIF;
import edu.udel.cis.vsl.tass.transition.IF.TransitionSequenceIF;
/**
* Keeps a list 2 deep of transitions in the sequence. transition1: the next
* element in the sequence. transition2: the one after that.
*
* */
public class TransitionSequence implements TransitionSequenceIF {
private StateIF state;
private Transition transition1 = null, transition2 = null;
private boolean full;
private boolean isBufferedSend = false;
private int index = -1;
TransitionSequence(StateIF state, boolean full) {
this.state = state;
this.full = full;
}
@Override
public void setBufferedSend(boolean value) {
this.isBufferedSend = value;
}
@Override
public boolean isBufferedSend() {
return isBufferedSend;
}
@Override
public void shift(TransitionIF transition) {
transition1 = transition2;
transition2 = (Transition) transition;
if (transition1 == null) {
index = -1;
} else {
index++;
}
}
@Override
public int index() {
return index;
}
@Override
public Transition peek() {
return transition1;
}
@Override
public Transition peek2() {
return transition2;
}
@Override
public StateIF state() {
return state;
}
@Override
public boolean full() {
return full;
}
@Override
public boolean isMultiple() {
return index >= 1 || (index == 0 && transition2 != null);
}
@Override
public void prune() {
transition2 = null;
}
}