DeclareVariable.java 732 B

12345678910111213141516171819202122232425262728293031323334
  1. package codelines;
  2. import animation.CodeLine;
  3. import animation.ControlFlow;
  4. import animation.Memory;
  5. public class DeclareVariable <T> extends CodeLine {
  6. private boolean oldExists;
  7. private T val;
  8. private String name;
  9. public DeclareVariable( String name, T value )
  10. {
  11. this.val = value;
  12. this.name = name;
  13. }
  14. @Override
  15. public ControlFlow runForward(Memory m) {
  16. oldExists = m.isDefined( name, false );
  17. T oldVal = m.read( name, false );
  18. m.declare( name, val, false );
  19. actions.add( (Memory mem) -> {
  20. if( !oldExists )
  21. m.undeclare( name, false );
  22. else
  23. m.declare( name, oldVal, false );
  24. return new ControlFlow( ControlFlow.STEP_OVER );
  25. });
  26. return new ControlFlow( ControlFlow.STEP_OVER );
  27. }
  28. }