Skip to content
Snippets Groups Projects
Commit cfdb1b7a authored by Ludovic Apvrille's avatar Ludovic Apvrille
Browse files

Resolving ticket 417 on compact dependency graph generation

parent 15b1b013
No related branches found
No related tags found
No related merge requests found
This diff is collapsed.
......@@ -97,8 +97,15 @@ public class AvatarCompactDependencyGraph {
// First build state machines, and then link them on RD / WR operators
for (AvatarBlock block : _avspec.getListOfBlocks()) {
TraceManager.addDev("Handling block " + block.getName());
AvatarStateMachine asm = block.getStateMachine();
if (!(asm.isBasicStateMachine())) {
if (block.getSignals().size() > 0) {
TraceManager.addDev("Making minimal state machine");
block.makeMinimalStateMachine();
}
if (!(asm.isBasicStateMachine()) || block.getSignals().size() > 0) {
AvatarStartState ass = asm.getStartState();
// Make general structure
......@@ -388,6 +395,7 @@ public class AvatarCompactDependencyGraph {
for (AUTState state : toBeRemoved) {
TraceManager.addDev("State to be removed: " + state);
states.remove(state);
}
......@@ -938,27 +946,29 @@ public class AvatarCompactDependencyGraph {
} else if (asme instanceof AvatarActionOnSignal) {
AvatarActionOnSignal aaos = ((AvatarActionOnSignal) asme).basicCloneMe(_block);
aaos.setName(aaos.getName() + ID++);
asm.addElement(aaos);
newE = aaos;
if (aaos != null) {
aaos.setName(aaos.getName() + ID++);
asm.addElement(aaos);
newE = aaos;
if (_previousE instanceof AvatarTransition) {
mustLinkToPrevious = true;
} else {
// Look at reference objects
AvatarStateMachineElement asmeFirst = getFirstReferenceObjectFromState(_currentState);
if (asmeFirst instanceof AvatarTransition) {
//TraceManager.addDev("Transition before aaos found in referenced objects");
AvatarTransition at = ((AvatarTransition) asmeFirst).cloneMe();
at.removeAllNexts();
at.setName("TransitionBeforeAAOS" + ID++);
at.setReferenceObject(this);
asm.addElement(at);
_previousE.addNext(at);
at.addNext(newE);
mustLinkToPrevious = false;
} else {
if (_previousE instanceof AvatarTransition) {
mustLinkToPrevious = true;
} else {
// Look at reference objects
AvatarStateMachineElement asmeFirst = getFirstReferenceObjectFromState(_currentState);
if (asmeFirst instanceof AvatarTransition) {
//TraceManager.addDev("Transition before aaos found in referenced objects");
AvatarTransition at = ((AvatarTransition) asmeFirst).cloneMe();
at.removeAllNexts();
at.setName("TransitionBeforeAAOS" + ID++);
at.setReferenceObject(this);
asm.addElement(at);
_previousE.addNext(at);
at.addNext(newE);
mustLinkToPrevious = false;
} else {
mustLinkToPrevious = true;
}
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment