浏览代码

forwärtz funktioniert

Kolja Strohm 6 年之前
父节点
当前提交
5b4f5b077f
共有 3 个文件被更改,包括 16 次插入3 次删除
  1. 6 0
      src/animation/AnimatedAlgorithm.java
  2. 1 0
      src/animation/PseudoCodeNode.java
  3. 9 3
      src/bk/BKNodePlacement.java

+ 6 - 0
src/animation/AnimatedAlgorithm.java

@@ -30,6 +30,7 @@ public abstract class AnimatedAlgorithm extends Thread implements AlgorithmStage
         root = null;
         mem = new Memory();
         mem.declare( "graph", graph, true );
+        mem.addFrame( new StackFrame( FrameType.FUNCTION ) );
         activeFunction = new Stack<PseudoCodeNode>();
         fstack = new Memory();
     }
@@ -99,6 +100,11 @@ public abstract class AnimatedAlgorithm extends Thread implements AlgorithmStage
             		activeFunction.pop();
             		activeFunction.peek().loadFromStack( fstack );
             	}
+            	else
+            	{
+            		ac.setContinuous( false );
+            		ac.setNextAction( null );
+            	}
             }
         }
     }

+ 1 - 0
src/animation/PseudoCodeNode.java

@@ -278,6 +278,7 @@ public class PseudoCodeNode extends DefaultMutableTreeNode {
 	            		m.addFrame( tmp ); // add old stack frame
 		            	loadFromStack( m ); // load stored variables
 	                	m.removeFrame(); // remove the stack frame
+	                	setSelected( false );
 	            	}
 	                return CodeStatus.FINISHED;
 	            case ControlFlow.CALL:

+ 9 - 3
src/bk/BKNodePlacement.java

@@ -9,8 +9,6 @@ import animation.CodeLine;
 import animation.ControlFlow;
 import animation.Memory;
 import animation.PseudoCodeNode;
-import animation.StackFrame;
-import animation.StackFrame.FrameType;
 import codelines.FunctionCall;
 import codelines.FunctionDefinition;
 import graph.LayeredGraphNode;
@@ -69,8 +67,16 @@ public class BKNodePlacement extends AnimatedAlgorithm {
 			@Override
 			public ControlFlow runForward(Memory m) {
 				m.declare( "param1", graph, true );
+				if( m.isDefined( "Called", false ) )
+				{
+					actions.push( (Memory mem) -> {
+						return new ControlFlow( mainFunction );
+					} );
+					return new ControlFlow( ControlFlow.STEP_OVER );
+				}
+				m.declare( "Called", true, false );
 				actions.push( (Memory mem) -> {
-					return new ControlFlow( mainFunction );
+					return new ControlFlow( ControlFlow.STEP_OVER );
 				} );
 				return new ControlFlow( mainFunction );
 			}