CommonTransitionSet.java
package edu.udel.cis.vsl.civl.semantics.common;
import java.util.ArrayList;
import java.util.List;
import edu.udel.cis.vsl.civl.semantics.IF.Transition;
import edu.udel.cis.vsl.civl.semantics.IF.TransitionSet;
import edu.udel.cis.vsl.civl.state.IF.State;
import edu.udel.cis.vsl.gmc.TransitionIterator;
/**
* A transition set contains a list of transitions and the state from which they
* emanate.
*
* @author Timothy K. Zirkel (zirkel)
* @author Manchun Zheng (zmanchun)
* @author Yihao Yan (yanyihao)
*/
public class CommonTransitionSet implements TransitionSet {
/* *************************** Instance Fields ************************* */
/**
* All the transitions emanating from a certain state.
*/
private List<Transition> transitions;
/**
* This is the state from which all the transitions in the set emanate.
*/
private State state;
/**
* true iff the transition set contains the full enabled set.
*/
private boolean containingAllEnabled = false;
/**
* <ul>
* <li>offSet = 0 when this transition set is ample set;</li>
* <li>offSet = sizeof(ampleset) when this transition set is ample set
* complement;</li>
* </ul>
*/
private int offSet = 0;
/* ***************************** Constructors ************************** */
/**
* Create an empty transition set.
*
* @param state
* The state that all transitions of this set emanate from.
* @param allEnabled
* Does the set contains all the enabled transitions?
*/
public CommonTransitionSet(State state, boolean allEnabled) {
this.state = state;
this.transitions = new ArrayList<Transition>();
this.containingAllEnabled = allEnabled;
}
/**
* Create a transition set from a given list of transitions.
*
* @param state
* The state that all transitions of this set emanate from.
* @param transitions
* The list of transitions to initialize the transition set.
* @param allEnabled
* Does the set contains all the enabled transitions?
*/
public CommonTransitionSet(State state, List<Transition> transitions, boolean allEnabled) {
this.state = state;
this.transitions = transitions;
this.containingAllEnabled = allEnabled;
}
@Override
public int size() {
return this.transitions.size();
}
@Override
public boolean isEmpty() {
return this.transitions.isEmpty();
}
@Override
public boolean containsAllEnabled() {
return this.containingAllEnabled;
}
@Override
public List<Transition> transitions() {
return transitions;
}
@Override
public void setContainingAllEnabled(boolean value) {
this.containingAllEnabled = value;
}
@Override
public State source() {
return state;
}
@Override
public TransitionIterator<State, Transition> randomIterator() {
// TODO this method will be removed later.
return null;
}
@Override
public TransitionIterator<State, Transition> iterator() {
CommonTransitionIterator transitionIterator = new CommonTransitionIterator(this);
transitionIterator.setOffSet(offSet);
return transitionIterator;
}
@Override
public Transition get(int i) {
return transitions.get(i);
}
@Override
public boolean hasMultiple() {
return transitions.size() > 1;
}
@Override
public void setOffSet(int offSet) {
this.offSet = offSet;
}
/* ************************* Methods from Object *********************** */
@Override
public String toString() {
StringBuffer result = new StringBuffer();
result.append(state.toString());
for (Transition transition : this.transitions) {
result.append(":\n");
result.append(transition.toString());
}
return result.toString();
}
}