Skip to main content
aboutsummaryrefslogtreecommitdiffstats
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;
  }
}

Back to the top