@@ -3,6 +3,7 @@ package fr.inria.diverse.trace.gemoc.traceaddon
33import fr.inria.diverse.trace.api.IStep
44import fr.inria.diverse.trace.api.ITraceManager
55import fr.inria.diverse.trace.api.IValueTrace
6+ import fr.inria.diverse.trace.gemoc.api.IMultiDimensionalTraceAddon
67import fr.inria.diverse.trace.gemoc.api.ITraceExplorer
78import fr.inria.diverse.trace.gemoc.api.ITraceListener
89import java.util.ArrayList
@@ -14,12 +15,16 @@ import org.gemoc.executionframework.engine.mse.MSEOccurrence
1415
1516class DefaultTraceExplorer implements ITraceExplorer {
1617
17- private val nameprovider = new DefaultDeclarativeQualifiedNameProvider ();
18- private var ITraceManager traceManager;
19- private var boolean inThePast;
20- private var int lastJumpIndex;
18+ private val nameprovider = new DefaultDeclarativeQualifiedNameProvider ()
19+ private var ITraceManager traceManager
20+ private val IMultiDimensionalTraceAddon traceAddon
21+ private var int lastJumpIndex = - 1
2122 private val List<IStep > callStack = new ArrayList
2223
24+ new (IMultiDimensionalTraceAddon addon) {
25+ this . traceAddon = addon
26+ }
27+
2328 private val List<ITraceListener > listeners = new ArrayList
2429
2530 override addListener (ITraceListener listener ) {
@@ -183,7 +188,7 @@ class DefaultTraceExplorer implements ITraceExplorer {
183188 }
184189
185190 override isInReplayMode () {
186- return inThePast
191+ return stepIntoResult != null
187192 }
188193
189194 override jump (EObject o ) {
@@ -301,7 +306,7 @@ class DefaultTraceExplorer implements ITraceExplorer {
301306 jumpBeforeStep(lastStep)
302307 }
303308
304- def computeBackInto (List<IStep > stepPath , List<IStep > rootSteps ) {
309+ def private computeBackInto (List<IStep > stepPath , List<IStep > rootSteps ) {
305310 var IStep result = null
306311 if (stepPath. size > 1 ) {
307312 val reversedPath = stepPath. reverseView
@@ -340,23 +345,23 @@ class DefaultTraceExplorer implements ITraceExplorer {
340345 return result
341346 }
342347
343- def computeBackOver (List<IStep > stepPath , List<IStep > rootSteps ) {
348+ def private computeBackOver (List<IStep > stepPath , List<IStep > rootSteps ) {
344349 if (! stepPath. empty) {
345350 val reversedPath = stepPath. reverseView
346351 return findPreviousStep(reversedPath,rootSteps,reversedPath. get(0 ),1 )
347352 }
348353 return null
349354 }
350355
351- def computeBackOut (List<IStep > stepPath , List<IStep > rootSteps ) {
356+ def private computeBackOut (List<IStep > stepPath , List<IStep > rootSteps ) {
352357 if (stepPath. size > 1 ) {
353358 val reversedPath = stepPath. reverseView
354359 return findPreviousStep(reversedPath,rootSteps,reversedPath. get(1 ),2 )
355360 }
356361 return null
357362 }
358363
359- def findPreviousStep (List<IStep > stepPath , List<IStep > rootSteps , IStep previousStep , int start ) {
364+ def private findPreviousStep (List<IStep > stepPath , List<IStep > rootSteps , IStep previousStep , int start ) {
360365 var IStep result = null
361366 var i = start
362367 var previous = previousStep
@@ -380,7 +385,7 @@ class DefaultTraceExplorer implements ITraceExplorer {
380385 return result
381386 }
382387
383- def findNextStep (List<IStep > stepPath , List<IStep > rootSteps , IStep previousStep , int start ) {
388+ def private findNextStep (List<IStep > stepPath , List<IStep > rootSteps , IStep previousStep , int start ) {
384389 var IStep result = null
385390 var i = start
386391 var previous = previousStep
@@ -415,19 +420,19 @@ class DefaultTraceExplorer implements ITraceExplorer {
415420 return result
416421 }
417422
418- def computeStepInto (List<IStep > stepPath , List<IStep > rootSteps ) {
423+ def private computeStepInto (List<IStep > stepPath , List<IStep > rootSteps ) {
419424 return findNextStep(stepPath. reverseView,rootSteps,null ,0 )
420425 }
421426
422- def computeStepOver (List<IStep > stepPath , List<IStep > rootSteps ) {
427+ def private computeStepOver (List<IStep > stepPath , List<IStep > rootSteps ) {
423428 if (! stepPath. empty) {
424429 val reversedPath = stepPath. reverseView
425430 return findNextStep(reversedPath,rootSteps,reversedPath. get(0 ),1 )
426431 }
427432 return null
428433 }
429434
430- def computeStepReturn (List<IStep > stepPath , List<IStep > rootSteps ) {
435+ def private computeStepReturn (List<IStep > stepPath , List<IStep > rootSteps ) {
431436 if (stepPath. size > 1 ) {
432437 val reversedPath = stepPath. reverseView
433438 return findNextStep(reversedPath,rootSteps,reversedPath. get(1 ),2 )
@@ -450,7 +455,6 @@ class DefaultTraceExplorer implements ITraceExplorer {
450455 override public boolean stepBackInto () {
451456 if (backIntoResult != null ) {
452457 jumpBeforeStep(backIntoResult)
453- inThePast = true
454458 return true
455459 }
456460 return false
@@ -459,7 +463,6 @@ class DefaultTraceExplorer implements ITraceExplorer {
459463 override public boolean stepBackOver () {
460464 if (backOverResult != null ) {
461465 jumpBeforeStep(backOverResult)
462- inThePast = true
463466 return true
464467 }
465468 return false
@@ -468,7 +471,6 @@ class DefaultTraceExplorer implements ITraceExplorer {
468471 override public boolean stepBackOut () {
469472 if (backOutResult != null ) {
470473 jumpBeforeStep(backOutResult)
471- inThePast = true
472474 return true
473475 }
474476 return false
@@ -477,7 +479,6 @@ class DefaultTraceExplorer implements ITraceExplorer {
477479 override public boolean stepInto () {
478480 if (stepIntoResult != null ) {
479481 jumpBeforeStep(stepIntoResult)
480- inThePast = stepIntoResult == null
481482 return true
482483 }
483484 return false
@@ -486,7 +487,6 @@ class DefaultTraceExplorer implements ITraceExplorer {
486487 override public boolean stepOver () {
487488 if (stepOverResult != null ) {
488489 jumpBeforeStep(stepOverResult)
489- inThePast = stepIntoResult == null
490490 return true
491491 }
492492 return false
@@ -495,7 +495,6 @@ class DefaultTraceExplorer implements ITraceExplorer {
495495 override public boolean stepReturn () {
496496 if (stepReturnResult != null ) {
497497 jumpBeforeStep(stepReturnResult)
498- inThePast = stepIntoResult == null
499498 return true
500499 }
501500 return false
@@ -510,7 +509,7 @@ class DefaultTraceExplorer implements ITraceExplorer {
510509 } else {
511510 lastJumpIndex = i
512511 }
513- traceManager . goTo(i)
512+ traceAddon . goTo(i)
514513 // Computing the new callstack
515514 val newPath = new ArrayList
516515 newPath. add(step. parameters. get(" this" ))
@@ -520,7 +519,6 @@ class DefaultTraceExplorer implements ITraceExplorer {
520519 parent = parent. parentStep
521520 }
522521 doStuff(newPath)
523- inThePast = stepIntoResult == null
524522 }
525523 }
526524
@@ -536,9 +534,10 @@ class DefaultTraceExplorer implements ITraceExplorer {
536534 }
537535
538536 override public canBackValue (int traceIndex ) {
537+ val index = traceIndex - 1
539538 val allValueTraces = traceManager. allValueTraces
540- if (traceIndex < allValueTraces. size && traceIndex > - 1 ) {
541- val valueTrace = allValueTraces. get(traceIndex )
539+ if (index < allValueTraces. size && index > - 1 ) {
540+ val valueTrace = allValueTraces. get(index )
542541 val currentValueIndex = valueTrace. getActiveValueIndex(currentStateIndex)
543542 var stateIndex = currentStateIndex
544543 var valueIndex = valueTrace. getActiveValueIndex(stateIndex)
@@ -552,7 +551,7 @@ class DefaultTraceExplorer implements ITraceExplorer {
552551 }
553552
554553 override public backValue (int traceIndex ) {
555- val valueTrace = traceManager. allValueTraces. get(traceIndex)
554+ val valueTrace = traceManager. allValueTraces. get(traceIndex- 1 )
556555 jump(valueTrace. getValue(getPreviousValueIndex(valueTrace)))
557556 }
558557
@@ -575,7 +574,7 @@ class DefaultTraceExplorer implements ITraceExplorer {
575574 }
576575
577576 override public stepValue (int traceIndex ) {
578- val valueTrace = traceManager. allValueTraces. get(traceIndex)
577+ val valueTrace = traceManager. allValueTraces. get(traceIndex- 1 )
579578 val i = getNextValueIndex(valueTrace)
580579 if (i < valueTrace. size && i != - 1 ) {
581580 jump(valueTrace. getValue(i))
@@ -603,4 +602,8 @@ class DefaultTraceExplorer implements ITraceExplorer {
603602 doStuff(newPath)
604603 }
605604
605+ override update () {
606+ notifyListeners
607+ }
608+
606609}
0 commit comments