blob: 7318bf49df8996e314537bafbce2657edcf6c5f8 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
package org.eclipse.etrice.generator.java.gen;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.util.List;
import org.eclipse.etrice.core.room.ActorClass;
import org.eclipse.etrice.core.room.State;
import org.eclipse.etrice.generator.etricegen.ExpandedActorClass;
import org.eclipse.etrice.generator.extensions.RoomExtensions;
import org.eclipse.etrice.generator.generic.GenericStateMachineGenerator;
import org.eclipse.xtext.xtend2.lib.StringConcatenation;
@SuppressWarnings("all")
@Singleton
public class StateMachineGen extends GenericStateMachineGenerator {
@Inject
private RoomExtensions _roomExtensions;
public StringConcatenation genExtra(final ExpandedActorClass xpac, final ActorClass ac) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("// state names");
_builder.newLine();
_builder.append("protected static final String stateStrings[] = {\"<no state>\",\"<top>\",");
{
List<State> _allBaseStatesLeavesFirst = this._roomExtensions.getAllBaseStatesLeavesFirst(ac);
boolean hasAnyElements = false;
for(final State state : _allBaseStatesLeavesFirst) {
if (!hasAnyElements) {
hasAnyElements = true;
} else {
_builder.appendImmediate(",", "");
}
_builder.append("\"");
String _statePathName = this._roomExtensions.getStatePathName(state);
_builder.append(_statePathName, "");
_builder.append("\"");
_builder.newLineIfNotEmpty();
}
}
_builder.append("};");
_builder.newLineIfNotEmpty();
_builder.newLine();
_builder.append("// history");
_builder.newLine();
_builder.append("protected int history[] = {NO_STATE,NO_STATE");
{
List<State> _allBaseStates = this._roomExtensions.getAllBaseStates(ac);
for(final State state_1 : _allBaseStates) {
_builder.append(",NO_STATE");
}
}
_builder.append("};");
_builder.newLineIfNotEmpty();
_builder.newLine();
_builder.append("private void setState(int new_state) {");
_builder.newLine();
_builder.append("\t");
_builder.append("DebuggingService.getInstance().addActorState(this,stateStrings[new_state]);");
_builder.newLine();
_builder.append("\t");
_builder.append("if (stateStrings[new_state]!=\"Idle\") {");
_builder.newLine();
_builder.append("\t\t");
_builder.append("System.out.println(getInstancePath() + \" -> \" + stateStrings[new_state]);");
_builder.newLine();
_builder.append("\t");
_builder.append("}\t");
_builder.newLine();
_builder.append("\t");
_builder.append("this.state = new_state;");
_builder.newLine();
_builder.append("}");
_builder.newLine();
return _builder;
}
}
|