CodeLine.java 579 B

12345678910111213141516171819202122232425262728293031
  1. package animation;
  2. import java.util.Stack;
  3. public abstract class CodeLine {
  4. protected interface BackwardAction
  5. {
  6. public void backward( Memory m );
  7. }
  8. protected Stack<BackwardAction> actions;
  9. protected int lineId;
  10. private static int nextLineId = 0;
  11. public CodeLine()
  12. {
  13. synchronized( CodeLine.class ) {
  14. lineId = nextLineId++;
  15. }
  16. actions = new Stack<BackwardAction>();
  17. }
  18. public abstract ControlFlow runForward( Memory m );
  19. public void runBackward( Memory m )
  20. {
  21. if( actions.size() != 0 )
  22. actions.pop().backward( m );
  23. }
  24. }