Renamed packages, code cleanup
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/META-INF/MANIFEST.MF b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/META-INF/MANIFEST.MF
index c3c7e51..21dbc8c 100644
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/META-INF/MANIFEST.MF
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/META-INF/MANIFEST.MF
@@ -10,8 +10,8 @@
org.eclipse.app4mc.amalthea.model;visibility:=reexport
Automatic-Module-Name: org.eclipse.app4mc.slg.commons.m2t.transformers.m2t
Export-Package: org.eclipse.app4mc.slg.commons.m2t;version="0.1.0",
- org.eclipse.app4mc.slg.commons.m2t.transformers;version="0.1.0",
- org.eclipse.app4mc.slg.commons.m2t.translationUnits;version="0.1.0"
+ org.eclipse.app4mc.slg.commons.m2t.generators;version="0.1.0",
+ org.eclipse.app4mc.slg.commons.m2t.transformers;version="0.1.0"
Import-Package: javax.inject;version="1.0.0",
org.eclipse.app4mc.slg.config,
org.eclipse.app4mc.slg.config.util,
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/generators/LabelAccessTranslationUnit.java b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/generators/LabelAccessTranslationUnit.java
new file mode 100644
index 0000000..069d8ab
--- /dev/null
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/generators/LabelAccessTranslationUnit.java
@@ -0,0 +1,154 @@
+/**
+ * Copyright (c) 2020 Robert Bosch GmbH.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Robert Bosch GmbH - initial API and implementation
+ */
+package org.eclipse.app4mc.slg.commons.m2t.generators;
+
+import java.util.Arrays;
+
+import org.eclipse.app4mc.amalthea.model.LabelAccess;
+import org.eclipse.app4mc.amalthea.model.LabelAccessEnum;
+import org.eclipse.app4mc.amalthea.model.LabelAccessStatistic;
+import org.eclipse.app4mc.amalthea.model.MinAvgMaxStatistic;
+import org.eclipse.app4mc.amalthea.model.NumericStatistic;
+import org.eclipse.app4mc.amalthea.model.SingleValueStatistic;
+import org.eclipse.app4mc.transformation.util.OutputBuffer;
+
+public class LabelAccessTranslationUnit extends TranslationUnit {
+ public String getBasePath() {
+ return this.tuLabel.getBasePath();
+ }
+
+ public String getModuleName() {
+ return this.tuLabel.getModuleName();
+ }
+
+ public String getIncFile() {
+ return this.tuLabel.getIncFile();
+ }
+
+ @Override
+ public String getCall() {
+ String _xblockexpression = null;
+ {
+ String statString = "1";
+ LabelAccessStatistic _statistic = null;
+ if (this.labelAccess != null) {
+ _statistic = this.labelAccess.getStatistic();
+ }
+ NumericStatistic _value = null;
+ if (_statistic != null) {
+ _value = _statistic.getValue();
+ }
+ final NumericStatistic stat = _value;
+ if ((stat != null)) {
+ LabelAccessStatistic _statistic_1 = null;
+ if (this.labelAccess != null) {
+ _statistic_1 = this.labelAccess.getStatistic();
+ }
+ NumericStatistic _value_1 = null;
+ if (_statistic_1 != null) {
+ _value_1 = _statistic_1.getValue();
+ }
+ statString = LabelAccessTranslationUnit.getNumericStatistic(_value_1);
+ }
+ String _switchResult = null;
+ LabelAccessEnum _access = this.labelAccess.getAccess();
+ if (_access != null) {
+ switch (_access) {
+ case READ:
+ _switchResult = this.tuLabel.readCall(statString);
+ break;
+ case WRITE:
+ _switchResult = this.tuLabel.writeCall(statString);
+ break;
+ default:
+ String _name = this.labelAccess.getData().getName();
+ String _plus = ("/*underspecified access to label" + _name);
+ _switchResult = (_plus + "*/");
+ break;
+ }
+ } else {
+ String _name = this.labelAccess.getData().getName();
+ String _plus = ("/*underspecified access to label" + _name);
+ _switchResult = (_plus + "*/");
+ }
+ _xblockexpression = _switchResult;
+ }
+ return _xblockexpression;
+ }
+
+ public String getModulePath() {
+ return getBasePath() + "/" + getModuleName();
+ }
+
+ private OutputBuffer outputBuffer;
+
+ @Override
+ public String getSrcFile() {
+ return getModuleName() + ".cpp";
+ }
+
+ public String getIncPath() {
+ return getModulePath() + "/_inc/" + getIncFile();
+ }
+
+ public String getSrcPath() {
+ return getModulePath() + "/_src/" + getSrcFile();
+ }
+
+ public boolean isIncFileEmpty() {
+ return !outputBuffer.bufferExists("H", getModulePath() + "/_inc/" + getModuleName());
+ }
+
+ public boolean isSrcFileEmpty() {
+ return !outputBuffer.bufferExists("C", getModulePath() + "/_src/" + getModuleName());
+ }
+
+ public boolean incAppend(final String str) {
+ return outputBuffer.appendTo("H", getModulePath() + "/_inc/" + getModuleName(), str);
+ }
+
+ public boolean srcAppend(final String str) {
+ return outputBuffer.appendTo("C", getModulePath() + "/_src/" + getModuleName(), str);
+ }
+
+ private final LabelTranslationUnit tuLabel;
+
+ private final LabelAccess labelAccess;
+
+ public LabelAccessTranslationUnit(final OutputBuffer outputBuffer, final LabelTranslationUnit tuLabel,
+ final LabelAccess labelAccess) {
+ super();
+ this.tuLabel = tuLabel;
+ this.labelAccess = labelAccess;
+ this.outputBuffer = outputBuffer;
+ }
+
+ protected static String _getNumericStatistic(final MinAvgMaxStatistic stat) {
+ String _string = Integer.valueOf(Double.valueOf(Math.ceil(stat.getAvg())).intValue()).toString();
+ return (_string + "/*MinAvgMaxStatistic not supported yet*/");
+ }
+
+ protected static String _getNumericStatistic(final SingleValueStatistic stat) {
+ return Integer.valueOf(Double.valueOf(Math.ceil(stat.getValue())).intValue()).toString();
+ }
+
+ public static String getNumericStatistic(final NumericStatistic stat) {
+ if (stat instanceof MinAvgMaxStatistic) {
+ return _getNumericStatistic((MinAvgMaxStatistic) stat);
+ } else if (stat instanceof SingleValueStatistic) {
+ return _getNumericStatistic((SingleValueStatistic) stat);
+ } else {
+ throw new IllegalArgumentException("Unhandled parameter types: " + Arrays.<Object>asList(stat).toString());
+ }
+ }
+}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/generators/LabelTranslationUnit.java b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/generators/LabelTranslationUnit.java
new file mode 100644
index 0000000..d0f5389
--- /dev/null
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/generators/LabelTranslationUnit.java
@@ -0,0 +1,523 @@
+/**
+ * Copyright (c) 2020 Robert Bosch GmbH.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Robert Bosch GmbH - initial API and implementation
+ */
+package org.eclipse.app4mc.slg.commons.m2t.generators;
+
+import org.eclipse.app4mc.amalthea.model.DataSize;
+import org.eclipse.app4mc.amalthea.model.Label;
+import org.eclipse.app4mc.slg.commons.m2t.AmaltheaModelUtils;
+import org.eclipse.app4mc.transformation.util.OutputBuffer;
+import org.eclipse.xtend2.lib.StringConcatenation;
+
+public class LabelTranslationUnit extends TranslationUnit {
+ public static String getModulePathStatic() {
+ return "synthetic_gen" + "/" + getModuleNameStatic();
+ }
+
+ public static String getMakeFilePathStatic() {
+ return getModulePathStatic() + "/" + "CMakeLists.txt";
+ }
+
+ public static String getModuleNameStatic() {
+ return "labels";
+ }
+
+ public static String getLibName() {
+ return "LABELS_LIB";
+ }
+
+ public String getModuleName() {
+ return LabelTranslationUnit.getModuleNameStatic();
+ }
+
+ protected String getName() {
+ return this.label.getName();
+ }
+
+ public String getInitCall() {
+ StringConcatenation builder = new StringConcatenation();
+ builder.append("initialize_");
+ builder.append(getName());
+ builder.append("()");
+ return builder.toString();
+ }
+
+ public String readCall(final String param) {
+ StringConcatenation builder = new StringConcatenation();
+ builder.append("read_");
+ builder.append(getName());
+ builder.append("(");
+ builder.append(param);
+ builder.append(")");
+ return builder.toString();
+ }
+
+ public String writeCall(final String param) {
+ StringConcatenation builder = new StringConcatenation();
+ builder.append("write_");
+ builder.append(getName());
+ builder.append("(");
+ builder.append(param);
+ builder.append(")");
+ return builder.toString();
+ }
+
+ public String getIncFile() {
+ return getModuleName() + ".h";
+ }
+
+ private final Label label;
+ private OutputBuffer outputBuffer;
+
+ public LabelTranslationUnit(final OutputBuffer outputBuffer, final Label label) {
+ super();
+ this.label = label;
+ this.outputBuffer = outputBuffer;
+ this.genFiles();
+ }
+
+ public void genFiles() {
+ if (isSrcFileEmpty()) {
+ srcAppend("#include \"" + getIncFile() + "\"\n\n");
+ }
+ incAppend(this.toH());
+ srcAppend(this.toCpp());
+ }
+
+ private String toH() {
+ StringConcatenation _builder = new StringConcatenation();
+ {
+ boolean _isIncFileEmpty = this.isIncFileEmpty();
+ if (_isIncFileEmpty) {
+ String _xblockexpression = null;
+ {
+ this.incAppend("#include <stdbool.h>\n\n");
+ _xblockexpression = "";
+ }
+ _builder.append(_xblockexpression);
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("void ");
+ String _initCall = this.getInitCall();
+ _builder.append(_initCall);
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ _builder.append("void ");
+ String _readCall = this.readCall("int labelAccessStatistics");
+ _builder.append(_readCall);
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ _builder.append("void ");
+ String _writeCall = this.writeCall("int labelAccessStatistics");
+ _builder.append(_writeCall);
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ return _builder.toString();
+ }
+
+ private String toCpp() {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("int ");
+ String _name = this.getName();
+ _builder.append(_name);
+ _builder.append("[");
+ long _labelArraySize = AmaltheaModelUtils.getLabelArraySize(this.label);
+ _builder.append(_labelArraySize);
+ _builder.append("];\t");
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ _builder.append("static bool isIinitialized_");
+ String _name_1 = this.getName();
+ _builder.append(_name_1);
+ _builder.append(" = false;");
+ _builder.newLineIfNotEmpty();
+ _builder.append("void ");
+ String _initCall = this.getInitCall();
+ _builder.append(_initCall);
+ _builder.append(" {");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.append("if (!isIinitialized_");
+ String _name_2 = this.getName();
+ _builder.append(_name_2, "\t");
+ _builder.append("){");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
+ _builder.append("for (int i=0; i < ");
+ long _labelArraySize_1 = AmaltheaModelUtils.getLabelArraySize(this.label);
+ _builder.append(_labelArraySize_1, "\t\t");
+ _builder.append("; i++){");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ String _name_3 = this.getName();
+ _builder.append(_name_3, "\t\t\t");
+ _builder.append("[i] = i+1;");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("isIinitialized_");
+ String _name_4 = this.getName();
+ _builder.append(_name_4, "\t\t");
+ _builder.append(" = true;");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("}");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("void ");
+ String _readCall = this.readCall("int labelAccessStatistics");
+ _builder.append(_readCall);
+ _builder.append(" {");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.append("int numberOfBytes = ");
+ Label _label = null;
+ if (this != null) {
+ _label = this.label;
+ }
+ DataSize _size = null;
+ if (_label != null) {
+ _size = _label.getSize();
+ }
+ long _numberBytes = 0l;
+ if (_size != null) {
+ _numberBytes = _size.getNumberBytes();
+ }
+ _builder.append(_numberBytes, "\t");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("for (int repeat = 0 ; repeat < labelAccessStatistics; repeat++){");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("if(numberOfBytes < 4){");
+ _builder.newLine();
+ _builder.append("\t\t\t");
+ _builder.append("numberOfBytes = 4;");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("int arraysize = sizeof(");
+ String _name_5 = this.getName();
+ _builder.append(_name_5, "\t\t");
+ _builder.append(") / 4;");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("//printf(\"number of bytes:%d\\n\",arraysize);");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("int leftOverElements=arraysize%10;");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("int arraySizeWith10Multiples=arraysize-leftOverElements;");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("int i = 0;");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("int a = 0;");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("for (i = 0; i < arraySizeWith10Multiples; i = i + 10) { //iteration with 10 reads");
+ _builder.newLine();
+ _builder.append("\t\t\t");
+ _builder.append("a = ");
+ String _name_6 = this.getName();
+ _builder.append(_name_6, "\t\t\t");
+ _builder.append("[i];");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("a = ");
+ String _name_7 = this.getName();
+ _builder.append(_name_7, "\t\t\t");
+ _builder.append("[i+1];");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("a = ");
+ String _name_8 = this.getName();
+ _builder.append(_name_8, "\t\t\t");
+ _builder.append("[i+2];");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("a = ");
+ String _name_9 = this.getName();
+ _builder.append(_name_9, "\t\t\t");
+ _builder.append("[i+3];");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("a = ");
+ String _name_10 = this.getName();
+ _builder.append(_name_10, "\t\t\t");
+ _builder.append("[i+4];");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("a = ");
+ String _name_11 = this.getName();
+ _builder.append(_name_11, "\t\t\t");
+ _builder.append("[i+5];");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("a = ");
+ String _name_12 = this.getName();
+ _builder.append(_name_12, "\t\t\t");
+ _builder.append("[i+6];");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("a = ");
+ String _name_13 = this.getName();
+ _builder.append(_name_13, "\t\t\t");
+ _builder.append("[i+7];");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("a = ");
+ String _name_14 = this.getName();
+ _builder.append(_name_14, "\t\t\t");
+ _builder.append("[i+8];");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("a = ");
+ String _name_15 = this.getName();
+ _builder.append(_name_15, "\t\t\t");
+ _builder.append("[i+9];");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("for(;i<arraysize;i++){");
+ _builder.newLine();
+ _builder.append("\t\t\t");
+ _builder.append("a = ");
+ String _name_16 = this.getName();
+ _builder.append(_name_16, "\t\t\t");
+ _builder.append("[i];");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("}");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("void ");
+ String _writeCall = this.writeCall("int labelAccessStatistics");
+ _builder.append(_writeCall);
+ _builder.append(" {");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.append("int numberOfBytes = ");
+ Label _label_1 = null;
+ if (this != null) {
+ _label_1 = this.label;
+ }
+ DataSize _size_1 = null;
+ if (_label_1 != null) {
+ _size_1 = _label_1.getSize();
+ }
+ long _numberBytes_1 = 0l;
+ if (_size_1 != null) {
+ _numberBytes_1 = _size_1.getNumberBytes();
+ }
+ _builder.append(_numberBytes_1, "\t");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.append("for (int repeat = 0 ; repeat < labelAccessStatistics; repeat++){");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("if(numberOfBytes < 4){");
+ _builder.newLine();
+ _builder.append("\t\t\t");
+ _builder.append("numberOfBytes = 4;");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("int arraysize = sizeof(");
+ String _name_17 = this.getName();
+ _builder.append(_name_17, "\t\t");
+ _builder.append(") / 4;");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
+ _builder.append("int leftOverElements=arraysize%10;");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("int arraySizeWith10Multiples=arraysize-leftOverElements;");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("int i = 0;");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("for (i = 0; i < arraySizeWith10Multiples; i = i + 10) {");
+ _builder.newLine();
+ _builder.append("\t\t\t");
+ String _name_18 = this.getName();
+ _builder.append(_name_18, "\t\t\t");
+ _builder.append("[i] = 0xAFFE;");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ String _name_19 = this.getName();
+ _builder.append(_name_19, "\t\t\t");
+ _builder.append("[i+1] = 0xAFFE;");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ String _name_20 = this.getName();
+ _builder.append(_name_20, "\t\t\t");
+ _builder.append("[i+2] = 0xAFFE;");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ String _name_21 = this.getName();
+ _builder.append(_name_21, "\t\t\t");
+ _builder.append("[i+3] = 0xAFFE;");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ String _name_22 = this.getName();
+ _builder.append(_name_22, "\t\t\t");
+ _builder.append("[i+4] = 0xAFFE;");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ String _name_23 = this.getName();
+ _builder.append(_name_23, "\t\t\t");
+ _builder.append("[i+5] = 0xAFFE;");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ String _name_24 = this.getName();
+ _builder.append(_name_24, "\t\t\t");
+ _builder.append("[i+6] = 0xAFFE;");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ String _name_25 = this.getName();
+ _builder.append(_name_25, "\t\t\t");
+ _builder.append("[i+7] = 0xAFFE;");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ String _name_26 = this.getName();
+ _builder.append(_name_26, "\t\t\t");
+ _builder.append("[i+8] = 0xAFFE;");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ String _name_27 = this.getName();
+ _builder.append(_name_27, "\t\t\t");
+ _builder.append("[i+9] = 0xAFFE;");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("for(;i<arraysize;i++){");
+ _builder.newLine();
+ _builder.append("\t\t\t\t");
+ String _name_28 = this.getName();
+ _builder.append(_name_28, "\t\t\t\t");
+ _builder.append("[i]=0xAFFE;");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("}");
+ _builder.newLine();
+ _builder.newLine();
+ return _builder.toString();
+ }
+
+ protected long getSize() {
+ return this.label.getSize().getNumberBytes();
+ }
+
+ public String getBasePath() {
+ return "synthetic_gen";
+ }
+
+ public String getModulePath() {
+ String _basePath = this.getBasePath();
+ String _plus = (_basePath + "/");
+ String _moduleName = this.getModuleName();
+ return (_plus + _moduleName);
+ }
+
+ @Override
+ public String getSrcFile() {
+ String _moduleName = this.getModuleName();
+ return (_moduleName + ".cpp");
+ }
+
+ public String getIncPath() {
+ String _modulePath = this.getModulePath();
+ String _plus = (_modulePath + "/_inc/");
+ String _incFile = this.getIncFile();
+ return (_plus + _incFile);
+ }
+
+ public String getSrcPath() {
+ String _modulePath = this.getModulePath();
+ String _plus = (_modulePath + "/_src/");
+ String _srcFile = this.getSrcFile();
+ return (_plus + _srcFile);
+ }
+
+ public boolean isIncFileEmpty() {
+ String _modulePath = this.getModulePath();
+ String _plus = (_modulePath + "/_inc/");
+ String _moduleName = this.getModuleName();
+ String _plus_1 = (_plus + _moduleName);
+ boolean _bufferExists = this.outputBuffer.bufferExists("H", _plus_1);
+ return (!_bufferExists);
+ }
+
+ public boolean isSrcFileEmpty() {
+ String _modulePath = this.getModulePath();
+ String _plus = (_modulePath + "/_src/");
+ String _moduleName = this.getModuleName();
+ String _plus_1 = (_plus + _moduleName);
+ boolean _bufferExists = this.outputBuffer.bufferExists("C", _plus_1);
+ return (!_bufferExists);
+ }
+
+ public boolean incAppend(final String str) {
+ String _modulePath = this.getModulePath();
+ String _plus = (_modulePath + "/_inc/");
+ String _moduleName = this.getModuleName();
+ String _plus_1 = (_plus + _moduleName);
+ return this.outputBuffer.appendTo("H", _plus_1, str);
+ }
+
+ public boolean srcAppend(final String str) {
+ String _modulePath = this.getModulePath();
+ String _plus = (_modulePath + "/_src/");
+ String _moduleName = this.getModuleName();
+ String _plus_1 = (_plus + _moduleName);
+ return this.outputBuffer.appendTo("C", _plus_1, str);
+ }
+}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/generators/RunnableTranslationUnit.java b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/generators/RunnableTranslationUnit.java
new file mode 100644
index 0000000..406bc1a
--- /dev/null
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/generators/RunnableTranslationUnit.java
@@ -0,0 +1,182 @@
+/**
+ * Copyright (c) 2020 Robert Bosch GmbH.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Robert Bosch GmbH - initial API and implementation
+ */
+package org.eclipse.app4mc.slg.commons.m2t.generators;
+
+import java.util.ArrayList;
+import java.util.LinkedHashSet;
+import java.util.function.Consumer;
+
+import org.eclipse.app4mc.amalthea.model.ActivityGraph;
+import org.eclipse.app4mc.amalthea.model.ActivityGraphItem;
+import org.eclipse.app4mc.slg.commons.m2t.transformers.ActivityGraphItemTransformer;
+import org.eclipse.app4mc.transformation.util.OutputBuffer;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.xtend2.lib.StringConcatenation;
+import org.eclipse.xtext.xbase.lib.StringExtensions;
+
+public class RunnableTranslationUnit extends TranslationUnit {
+ public static String getModulePathStatic() {
+ return "synthetic_gen" + "/" + getModuleNameStatic();
+ }
+
+ public static String getMakeFilePathStatic() {
+ return getModulePathStatic() + "/" + "CMakeLists.txt";
+ }
+
+ public static String getModuleNameStatic() {
+ return "runnables";
+ }
+
+ public static String getLibName() {
+ return "RUNNABLES_LIB";
+ }
+
+ public String getModuleName() {
+ return RunnableTranslationUnit.getModuleNameStatic();
+ }
+
+ @Override
+ public String getCall() {
+ StringConcatenation builder = new StringConcatenation();
+ builder.append("run_");
+ builder.append(this.runnable.getName());
+ builder.append("()");
+ return builder.toString();
+ }
+
+ @Override
+ public String getIncFile() {
+ return getModuleName() + ".h";
+ }
+
+ public ActivityGraphItemTransformer callGraphItemTransformer;
+
+ public org.eclipse.app4mc.amalthea.model.Runnable runnable;
+
+ private OutputBuffer outputBuffer;
+
+ public RunnableTranslationUnit(final OutputBuffer outputBuffer,
+ final ActivityGraphItemTransformer callGraphItemTransformer,
+ final org.eclipse.app4mc.amalthea.model.Runnable runnable) {
+ super();
+ this.callGraphItemTransformer = callGraphItemTransformer;
+ this.runnable = runnable;
+ this.outputBuffer = outputBuffer;
+
+ this.genFiles();
+ }
+
+ public void genFiles() {
+ if (isSrcFileEmpty()) {
+ srcAppend("#include \"" + getIncFile() + "\"\n");
+ }
+ final LinkedHashSet<String> includes = new LinkedHashSet<>();
+ final ArrayList<String> calls = new ArrayList<>();
+ ActivityGraph _activityGraph = null;
+ if (this.runnable != null) {
+ _activityGraph = this.runnable.getActivityGraph();
+ }
+ EList<ActivityGraphItem> _items = null;
+ if (_activityGraph != null) {
+ _items = _activityGraph.getItems();
+ }
+ final Consumer<ActivityGraphItem> _function = new Consumer<ActivityGraphItem>() {
+ @Override
+ public void accept(final ActivityGraphItem item) {
+ final TranslationUnit tmp = RunnableTranslationUnit.this.callGraphItemTransformer.transform(item);
+ if (((!StringExtensions.isNullOrEmpty(tmp.getIncFile()))
+ && (!RunnableTranslationUnit.this.getIncFile().equals(tmp.getIncFile())))) {
+ includes.add(tmp.getIncFile());
+ }
+ final String call = tmp.getCall();
+ if (!StringExtensions.isNullOrEmpty(call)) {
+ calls.add(call);
+ }
+ }
+ };
+ _items.forEach(_function);
+
+ incAppend("\n//Runnable " + runnable.getName() + "----\n");
+ toH(includes);
+
+ srcAppend("\n//Runnable " + runnable.getName() + "----\n");
+ toCpp(includes, calls);
+ }
+
+ public void toH(final LinkedHashSet<String> includes) {
+ final Consumer<String> _function = new Consumer<String>() {
+ @Override
+ public void accept(final String include) {
+ RunnableTranslationUnit.this.incAppend((("#include \"" + include) + "\"\n"));
+ }
+ };
+ includes.forEach(_function);
+ StringConcatenation builder = new StringConcatenation();
+ builder.append("void ");
+ builder.append(this.getCall());
+ builder.append(";");
+ builder.newLineIfNotEmpty();
+ this.incAppend(builder.toString());
+ }
+
+ public void toCpp(final LinkedHashSet<String> includes, final ArrayList<String> calls) {
+ srcAppend("void " + getCall() + "{\n");
+
+ final Consumer<String> _function = new Consumer<String>() {
+ @Override
+ public void accept(final String call) {
+ RunnableTranslationUnit.this.srcAppend((("\t" + call) + ";\n"));
+ }
+ };
+ calls.forEach(_function);
+
+ srcAppend("}\n\n");
+ }
+
+ public String getBasePath() {
+ return "synthetic_gen";
+ }
+
+ public String getModulePath() {
+ return getBasePath() + "/" + getModuleName();
+ }
+
+ @Override
+ public String getSrcFile() {
+ return getModuleName() + ".cpp";
+ }
+
+ public String getIncPath() {
+ return getModulePath() + "/_inc/" + getIncFile();
+ }
+
+ public String getSrcPath() {
+ return getModulePath() + "/_src/" + getSrcFile();
+ }
+
+ public boolean isIncFileEmpty() {
+ return !outputBuffer.bufferExists("H", getModulePath() + "/_inc/" + getModuleName());
+ }
+
+ public boolean isSrcFileEmpty() {
+ return !outputBuffer.bufferExists("C", getModulePath() + "/_src/" + getModuleName());
+ }
+
+ public void incAppend(final String str) {
+ outputBuffer.appendTo("H", getModulePath() + "/_inc/" + getModuleName(), str);
+ }
+
+ public void srcAppend(final String str) {
+ outputBuffer.appendTo("C", getModulePath() + "/_src/" + getModuleName(), str);
+ }
+}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/generators/TaskTranslationUnit.java b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/generators/TaskTranslationUnit.java
new file mode 100644
index 0000000..b51b65c
--- /dev/null
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/generators/TaskTranslationUnit.java
@@ -0,0 +1,344 @@
+/**
+ * Copyright (c) 2020 Robert Bosch GmbH.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Robert Bosch GmbH - initial API and implementation
+ */
+package org.eclipse.app4mc.slg.commons.m2t.generators;
+
+import java.util.ArrayList;
+import java.util.LinkedHashSet;
+import java.util.LinkedList;
+import java.util.function.BiConsumer;
+import java.util.function.Consumer;
+
+import org.eclipse.app4mc.amalthea.model.ActivityGraph;
+import org.eclipse.app4mc.amalthea.model.ActivityGraphItem;
+import org.eclipse.app4mc.amalthea.model.Component;
+import org.eclipse.app4mc.amalthea.model.RunnableCall;
+import org.eclipse.app4mc.amalthea.model.Tag;
+import org.eclipse.app4mc.amalthea.model.Task;
+import org.eclipse.app4mc.slg.commons.m2t.transformers.LabelTransformer;
+import org.eclipse.app4mc.slg.commons.m2t.transformers.RunnableTransformer;
+import org.eclipse.app4mc.transformation.util.OutputBuffer;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.xtend2.lib.StringConcatenation;
+import org.eclipse.xtext.xbase.lib.Functions.Function1;
+import org.eclipse.xtext.xbase.lib.IterableExtensions;
+
+public class TaskTranslationUnit extends TranslationUnit {
+ public RunnableTransformer runnableTransformer;
+
+ public LabelTransformer labelTransformer;
+
+ public String getBasePath() {
+ return "";
+ }
+
+ public String getModuleName() {
+ return this.task.getName();
+ }
+
+ public String getInitCall() {
+ StringConcatenation builder = new StringConcatenation();
+ builder.append("initialize_task_");
+ builder.append(this.getModuleName());
+ builder.append("()");
+ return builder.toString();
+ }
+
+ public String stepCall() {
+ StringConcatenation builder = new StringConcatenation();
+ builder.append("step_task_");
+ builder.append(this.getModuleName());
+ builder.append("()");
+ return builder.toString();
+ }
+
+ private final Task task;
+
+ private final Component component;
+
+ private OutputBuffer outputBuffer;
+
+ public TaskTranslationUnit(final OutputBuffer outputBuffer, final RunnableTransformer runnableTransformer,
+ final LabelTransformer labelTransformer, final Task task, final Component component) {
+ super();
+ this.runnableTransformer = runnableTransformer;
+ this.labelTransformer = labelTransformer;
+ this.task = task;
+ this.component = component;
+ this.outputBuffer = outputBuffer;
+ this.genFiles();
+ }
+
+ public TaskTranslationUnit(final OutputBuffer outputBuffer, final RunnableTransformer runnableTransformer,
+ final LabelTransformer labelTransformer, final Task task) {
+ super();
+ this.task = task;
+ this.component = null;
+ this.runnableTransformer = runnableTransformer;
+ this.labelTransformer = labelTransformer;
+ this.outputBuffer = outputBuffer;
+ }
+
+ public boolean genFiles() {
+ boolean _xblockexpression = false;
+ {
+ final LinkedHashSet<String> includes = new LinkedHashSet<String>();
+ final LinkedList<String> initCalls = new LinkedList<String>();
+ final LinkedList<String> stepCalls = new LinkedList<String>();
+ ActivityGraph _activityGraph = null;
+ if (this.task != null) {
+ _activityGraph = this.task.getActivityGraph();
+ }
+ EList<ActivityGraphItem> _items = null;
+ if (_activityGraph != null) {
+ _items = _activityGraph.getItems();
+ }
+ final Consumer<ActivityGraphItem> _function = new Consumer<ActivityGraphItem>() {
+ @Override
+ public void accept(final ActivityGraphItem item) {
+ if ((item instanceof RunnableCall)) {
+ final org.eclipse.app4mc.amalthea.model.Runnable runnable = ((RunnableCall) item).getRunnable();
+ final RunnableTranslationUnit tu = TaskTranslationUnit.this.runnableTransformer
+ .transform(((org.eclipse.app4mc.amalthea.model.Runnable) runnable));
+ includes.add(tu.getIncFile());
+ final Function1<Tag, Boolean> _function = new Function1<Tag, Boolean>() {
+ @Override
+ public Boolean apply(final Tag tag) {
+ return Boolean.valueOf("initialize".equals(tag.getName()));
+ }
+ };
+ boolean _isEmpty = IterableExtensions
+ .isEmpty(IterableExtensions.<Tag>filter(((RunnableCall) item).getTags(), _function));
+ boolean _not = (!_isEmpty);
+ if (_not) {
+ initCalls.add(tu.getCall());
+ } else {
+ stepCalls.add(tu.getCall());
+ }
+ }
+ }
+ };
+ _items.forEach(_function);
+ final BiConsumer<ArrayList<?>, LabelTranslationUnit> _function_1 = new BiConsumer<ArrayList<?>, LabelTranslationUnit>() {
+ @Override
+ public void accept(final ArrayList<?> label, final LabelTranslationUnit tu) {
+ includes.add(tu.getIncFile());
+ initCalls.add(tu.getInitCall());
+ }
+ };
+ this.labelTransformer.getCache().forEach(_function_1);
+ this.incAppend(this.toH());
+ _xblockexpression = this.srcAppend(this.toCpp(includes, initCalls, stepCalls));
+ }
+ return _xblockexpression;
+ }
+
+ private String toH() {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.newLine();
+ _builder.append("//Header of Task ");
+ String _moduleName = this.getModuleName();
+ _builder.append(_moduleName);
+ _builder.newLineIfNotEmpty();
+ _builder.append("#include <stdint.h>");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("class ");
+ String _moduleName_1 = this.getModuleName();
+ _builder.append(_moduleName_1);
+ _builder.append(" {");
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ _builder.append("public:");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("//constructor");
+ _builder.newLine();
+ _builder.append("\t");
+ String _moduleName_2 = this.getModuleName();
+ _builder.append(_moduleName_2, "\t");
+ _builder.append("(void);");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("// destructor");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("virtual ~");
+ String _moduleName_3 = this.getModuleName();
+ _builder.append(_moduleName_3, "\t");
+ _builder.append("() =default;");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("void ");
+ String _initCall = this.getInitCall();
+ _builder.append(_initCall, "\t");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("void ");
+ String _stepCall = this.stepCall();
+ _builder.append(_stepCall, "\t");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("};");
+ _builder.newLine();
+ return _builder.toString();
+ }
+
+ private String toCpp(final LinkedHashSet<String> includes, final LinkedList<String> initCalls,
+ final LinkedList<String> stepCalls) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("#include \"");
+ String _incFile = this.getIncFile();
+ _builder.append(_incFile);
+ _builder.append("\"");
+ _builder.newLineIfNotEmpty();
+ {
+ for (final String include : includes) {
+ _builder.append("#include \"");
+ _builder.append(include);
+ _builder.append("\"");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.newLine();
+ String _moduleName = this.getModuleName();
+ _builder.append(_moduleName);
+ _builder.append("::");
+ String _moduleName_1 = this.getModuleName();
+ _builder.append(_moduleName_1);
+ _builder.append("(){");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.append("//default constructor");
+ _builder.newLine();
+ _builder.append("}");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("void ");
+ String _moduleName_2 = this.getModuleName();
+ _builder.append(_moduleName_2);
+ _builder.append("::");
+ String _initCall = this.getInitCall();
+ _builder.append(_initCall);
+ _builder.append(" {");
+ _builder.newLineIfNotEmpty();
+ {
+ for (final String call : initCalls) {
+ _builder.append(" ");
+ _builder.append(call, " ");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("} ");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("void ");
+ String _moduleName_3 = this.getModuleName();
+ _builder.append(_moduleName_3);
+ _builder.append("::");
+ String _stepCall = this.stepCall();
+ _builder.append(_stepCall);
+ _builder.append(" {");
+ _builder.newLineIfNotEmpty();
+ {
+ for (final String call_1 : stepCalls) {
+ _builder.append(" ");
+ _builder.append(call_1, " ");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("}");
+ _builder.newLine();
+ return _builder.toString();
+ }
+
+ public String getModulePath() {
+ String _basePath = this.getBasePath();
+ String _plus = (_basePath + "/");
+ String _moduleName = this.getModuleName();
+ return (_plus + _moduleName);
+ }
+
+ @Override
+ public String getIncFile() {
+ String _moduleName = this.getModuleName();
+ return (_moduleName + ".hpp");
+ }
+
+ @Override
+ public String getSrcFile() {
+ String _moduleName = this.getModuleName();
+ return (_moduleName + ".cpp");
+ }
+
+ public String getIncPath() {
+ String _modulePath = this.getModulePath();
+ String _plus = (_modulePath + "/_inc/");
+ String _incFile = this.getIncFile();
+ return (_plus + _incFile);
+ }
+
+ public String getSrcPath() {
+ String _modulePath = this.getModulePath();
+ String _plus = (_modulePath + "/_src/");
+ String _srcFile = this.getSrcFile();
+ return (_plus + _srcFile);
+ }
+
+ public boolean isIncFileEmpty() {
+ String _modulePath = this.getModulePath();
+ String _plus = (_modulePath + "/_inc/");
+ String _moduleName = this.getModuleName();
+ String _plus_1 = (_plus + _moduleName);
+ boolean _bufferExists = this.outputBuffer.bufferExists("H", _plus_1);
+ return (!_bufferExists);
+ }
+
+ public boolean isSrcFileEmpty() {
+ String _modulePath = this.getModulePath();
+ String _plus = (_modulePath + "/_src/");
+ String _moduleName = this.getModuleName();
+ String _plus_1 = (_plus + _moduleName);
+ boolean _bufferExists = this.outputBuffer.bufferExists("C", _plus_1);
+ return (!_bufferExists);
+ }
+
+ public boolean incAppend(final String str) {
+ String _modulePath = this.getModulePath();
+ String _plus = (_modulePath + "/_inc/");
+ String _moduleName = this.getModuleName();
+ String _plus_1 = (_plus + _moduleName);
+ return this.outputBuffer.appendTo("H", _plus_1, str);
+ }
+
+ public boolean srcAppend(final String str) {
+ String _modulePath = this.getModulePath();
+ String _plus = (_modulePath + "/_src/");
+ String _moduleName = this.getModuleName();
+ String _plus_1 = (_plus + _moduleName);
+ return this.outputBuffer.appendTo("C", _plus_1, str);
+ }
+}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/generators/TicksTranslationUnit.java b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/generators/TicksTranslationUnit.java
new file mode 100644
index 0000000..8f9ea52
--- /dev/null
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/generators/TicksTranslationUnit.java
@@ -0,0 +1,200 @@
+/**
+ * Copyright (c) 2020 Robert Bosch GmbH.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Robert Bosch GmbH - initial API and implementation
+ */
+package org.eclipse.app4mc.slg.commons.m2t.generators;
+
+import java.util.Arrays;
+
+import org.eclipse.app4mc.amalthea.model.DiscreteValueBetaDistribution;
+import org.eclipse.app4mc.amalthea.model.DiscreteValueBoundaries;
+import org.eclipse.app4mc.amalthea.model.DiscreteValueConstant;
+import org.eclipse.app4mc.amalthea.model.DiscreteValueGaussDistribution;
+import org.eclipse.app4mc.amalthea.model.DiscreteValueHistogram;
+import org.eclipse.app4mc.amalthea.model.DiscreteValueStatistics;
+import org.eclipse.app4mc.amalthea.model.DiscreteValueUniformDistribution;
+import org.eclipse.app4mc.amalthea.model.DiscreteValueWeibullEstimatorsDistribution;
+import org.eclipse.app4mc.amalthea.model.IDiscreteValueDeviation;
+import org.eclipse.app4mc.amalthea.model.Ticks;
+import org.eclipse.app4mc.transformation.util.OutputBuffer;
+import org.eclipse.xtend2.lib.StringConcatenation;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class TicksTranslationUnit extends TranslationUnit {
+ private static final Logger LOG = LoggerFactory.getLogger(TicksTranslationUnit.class);
+
+ public String getBasePath() {
+ return this.tuTicksUtils.getBasePath();
+ }
+
+ public String getModuleName() {
+ return this.tuTicksUtils.getModuleName();
+ }
+
+ @Override
+ public String getCall() {
+ if (((this.ticksValue != null) && ((this.ticksValue instanceof DiscreteValueStatistics)
+ || (this.ticksValue instanceof DiscreteValueConstant)))) {
+ return this.tuTicksUtils.getExecCall(this.getParameters(this.ticksValue)).toString();
+ }
+ TicksTranslationUnit.LOG.error("Unsupported element for Ticks : " + this.ticksValue.eClass().getName());
+ return "";
+ }
+
+ private final TicksUtilsTranslationUnit tuTicksUtils;
+ private final Ticks ticks;
+ private String puName;
+ private IDiscreteValueDeviation ticksValue;
+
+ private OutputBuffer outputBuffer;
+
+ public TicksTranslationUnit(final OutputBuffer outputBuffer, final TicksUtilsTranslationUnit tuTicksUtils,
+ final Ticks ticks, final String puName, final IDiscreteValueDeviation ticksValue) {
+ super();
+ this.tuTicksUtils = tuTicksUtils;
+ this.ticks = ticks;
+ this.puName = puName;
+ this.ticksValue = ticksValue;
+ this.outputBuffer = outputBuffer;
+ }
+
+ public String getPuName() {
+ return this.puName;
+ }
+
+ public String getIncFile() {
+ return this.getModuleName() + ".h";
+ }
+
+ private String _getParameters(final IDiscreteValueDeviation value) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("WARNING:VALUE_FORMAT_NOT_SUPPORTED\t\t");
+ _builder.newLine();
+ return _builder.toString();
+ }
+
+ private String _getParameters(final DiscreteValueBetaDistribution value) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("WARNING:VALUE_FORMAT_NOT_SUPPORTED");
+ _builder.newLine();
+ return _builder.toString();
+ }
+
+ private String _getParameters(final DiscreteValueBoundaries value) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("WARNING:VALUE_FORMAT_NOT_SUPPORTED");
+ _builder.newLine();
+ return _builder.toString();
+ }
+
+ private String _getParameters(final DiscreteValueConstant value) {
+ StringConcatenation _builder = new StringConcatenation();
+ long _value = value.getValue();
+ _builder.append(_value);
+ return _builder.toString();
+ }
+
+ private String _getParameters(final DiscreteValueGaussDistribution value) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("WARNING:VALUE_FORMAT_NOT_SUPPORTED");
+ _builder.newLine();
+ return _builder.toString();
+ }
+
+ private String _getParameters(final DiscreteValueHistogram value) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("WARNING:VALUE_FORMAT_NOT_SUPPORTED");
+ _builder.newLine();
+ return _builder.toString();
+ }
+
+ private String _getParameters(final DiscreteValueStatistics value) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append(value.getAverage());
+ _builder.append(", ");
+ _builder.append(value.getLowerBound());
+ _builder.append(", ");
+ _builder.append(value.getUpperBound());
+ return _builder.toString();
+ }
+
+ private String _getParameters(final DiscreteValueUniformDistribution value) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("WARNING:VALUE_FORMAT_NOT_SUPPORTED");
+ _builder.newLine();
+ return _builder.toString();
+ }
+
+ private String _getParameters(final DiscreteValueWeibullEstimatorsDistribution value) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("WARNING:VALUE_FORMAT_NOT_SUPPORTED");
+ return _builder.toString();
+ }
+
+ private String getParameters(final IDiscreteValueDeviation value) {
+ if (value instanceof DiscreteValueBetaDistribution) {
+ return _getParameters((DiscreteValueBetaDistribution) value);
+ } else if (value instanceof DiscreteValueBoundaries) {
+ return _getParameters((DiscreteValueBoundaries) value);
+ } else if (value instanceof DiscreteValueGaussDistribution) {
+ return _getParameters((DiscreteValueGaussDistribution) value);
+ } else if (value instanceof DiscreteValueStatistics) {
+ return _getParameters((DiscreteValueStatistics) value);
+ } else if (value instanceof DiscreteValueUniformDistribution) {
+ return _getParameters((DiscreteValueUniformDistribution) value);
+ } else if (value instanceof DiscreteValueWeibullEstimatorsDistribution) {
+ return _getParameters((DiscreteValueWeibullEstimatorsDistribution) value);
+ } else if (value instanceof DiscreteValueConstant) {
+ return _getParameters((DiscreteValueConstant) value);
+ } else if (value instanceof DiscreteValueHistogram) {
+ return _getParameters((DiscreteValueHistogram) value);
+ } else if (value != null) {
+ return _getParameters(value);
+ } else {
+ throw new IllegalArgumentException("Unhandled parameter types: " + Arrays.<Object>asList(value).toString());
+ }
+ }
+
+ public String getModulePath() {
+ return getBasePath() + "/" + getModuleName();
+ }
+
+ @Override
+ public String getSrcFile() {
+ return getModuleName() + ".cpp";
+ }
+
+ public String getIncPath() {
+ return getModulePath() + "/_inc/" + getIncFile();
+ }
+
+ public String getSrcPath() {
+ return getModulePath() + "/_src/" + getSrcFile();
+ }
+
+ public boolean isIncFileEmpty() {
+ return !outputBuffer.bufferExists("H", getModulePath() + "/_inc/" + getModuleName());
+ }
+
+ public boolean isSrcFileEmpty() {
+ return !outputBuffer.bufferExists("C", getModulePath() + "/_src/" + getModuleName());
+ }
+
+ public boolean incAppend(final String str) {
+ return outputBuffer.appendTo("H", getModulePath() + "/_inc/" + getModuleName(), str);
+ }
+
+ public boolean srcAppend(final String str) {
+ return outputBuffer.appendTo("C", getModulePath() + "/_src/" + getModuleName(), str);
+ }
+
+}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/generators/TicksUtilsTranslationUnit.java b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/generators/TicksUtilsTranslationUnit.java
new file mode 100644
index 0000000..9fda5d0
--- /dev/null
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/generators/TicksUtilsTranslationUnit.java
@@ -0,0 +1,416 @@
+/**
+ * Copyright (c) 2020 Robert Bosch GmbH.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Robert Bosch GmbH - initial API and implementation
+ */
+
+package org.eclipse.app4mc.slg.commons.m2t.generators;
+
+import org.eclipse.app4mc.amalthea.model.impl.DiscreteValueConstantImpl;
+import org.eclipse.app4mc.amalthea.model.impl.DiscreteValueStatisticsImpl;
+import org.eclipse.app4mc.slg.config.ConfigModel;
+import org.eclipse.app4mc.slg.config.TickType;
+import org.eclipse.app4mc.transformation.util.OutputBuffer;
+import org.eclipse.xtend2.lib.StringConcatenation;
+import org.eclipse.xtext.xbase.lib.Conversions;
+import org.eclipse.xtext.xbase.lib.IntegerRange;
+import org.eclipse.xtext.xbase.lib.IterableExtensions;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.common.base.Objects;
+
+public class TicksUtilsTranslationUnit extends TranslationUnit {
+ private static final Logger LOG = LoggerFactory.getLogger(TicksUtilsTranslationUnit.class);
+
+ public static String getModulePathStatic() {
+ return "synthetic_gen" + "/" + getModuleNameStatic();
+ }
+
+ public static String getMakeFilePathStatic() {
+ return getModulePathStatic() + "/" + "CMakeLists.txt";
+ }
+
+ public static String getModuleNameStatic() {
+ return "ticksUtils";
+ }
+
+ public static String getLibName() {
+ return "TICKS_UTILS";
+ }
+
+ public String getModuleName() {
+ return TicksUtilsTranslationUnit.getModuleNameStatic();
+ }
+
+ public CharSequence getExecCall(final String params) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("executeTicks_");
+ String _last = IterableExtensions
+ .<String>last(((Iterable<String>) Conversions.doWrapArray(this.valueClass.toString().split("\\."))));
+ _builder.append(_last);
+ _builder.append("(");
+ _builder.append(params);
+ _builder.append(")");
+ return _builder;
+ }
+
+ public String getIncFile() {
+ return this.getModuleName() + ".h";
+ }
+
+ private final ConfigModel configModel;
+
+ private final Object valueClass;
+
+ private OutputBuffer outputBuffer;
+
+ public TicksUtilsTranslationUnit(final OutputBuffer outputBuffer, final ConfigModel configModel,
+ final Object valueClass) {
+ super();
+ this.configModel = configModel;
+ this.valueClass = valueClass;
+ this.outputBuffer = outputBuffer;
+ this.genFiles();
+ }
+
+ public boolean genFiles() {
+ boolean _xblockexpression = false;
+ {
+ boolean _isIncFileEmpty = this.isIncFileEmpty();
+ if (_isIncFileEmpty) {
+ this.toH();
+ }
+ boolean _isSrcFileEmpty = this.isSrcFileEmpty();
+ if (_isSrcFileEmpty) {
+ this.toCPP();
+ }
+ this.srcAppend(this.generateTicks(this.valueClass));
+ _xblockexpression = this.incAppend(this.generateTicksDecleration(this.valueClass));
+ }
+ return _xblockexpression;
+ }
+
+ private boolean toCPP() {
+ boolean _xblockexpression = false;
+ {
+ String _incFile = this.getIncFile();
+ String _plus = ("#include \"" + _incFile);
+ String _plus_1 = (_plus + "\"\n");
+ this.srcAppend(_plus_1);
+ final String ticksCodeSnippet = this.configModel.getCustomTickImpl().getValue();
+ String _xifexpression = null;
+ boolean _isEnable = this.configModel.getCustomTickImpl().isEnable();
+ if (_isEnable) {
+ _xifexpression = ticksCodeSnippet;
+ } else {
+ _xifexpression = this.burnTicksDefault().toString();
+ }
+ final String burnTicksBody = _xifexpression;
+ this.srcAppend(this.burnTicks(burnTicksBody).toString());
+ _xblockexpression = this.srcAppend(this.burnTicksStatistics(this.configModel).toString());
+ }
+ return _xblockexpression;
+ }
+
+ private boolean toH() {
+ boolean _xblockexpression = false;
+ {
+ this.incAppend(this.burnTicksDecleration().toString());
+ _xblockexpression = this.incAppend(this.burnTicksStatisticsDecleration().toString());
+ }
+ return _xblockexpression;
+ }
+
+ private String generateTicks(final Object valueClass) {
+ String _switchResult = null;
+ boolean _matched = false;
+ if (Objects.equal(valueClass, DiscreteValueConstantImpl.class)) {
+ _matched = true;
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("void ");
+ CharSequence _execCall = this.getExecCall("int ticks");
+ _builder.append(_execCall);
+ _builder.append(" {");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.append("burnTicks(ticks);");
+ _builder.newLine();
+ _builder.append("}");
+ _builder.newLine();
+ _builder.newLine();
+ _switchResult = _builder.toString();
+ }
+ if (!_matched) {
+ if (Objects.equal(valueClass, DiscreteValueStatisticsImpl.class)) {
+ _matched = true;
+ StringConcatenation _builder_1 = new StringConcatenation();
+ _builder_1.append("void ");
+ CharSequence _execCall_1 = this.getExecCall("double average, int lowerBound, int upperBound");
+ _builder_1.append(_execCall_1);
+ _builder_1.append(" {");
+ _builder_1.newLineIfNotEmpty();
+ _builder_1.append("\t");
+ _builder_1.append("burnTicksStatistics(average, lowerBound, upperBound);");
+ _builder_1.newLine();
+ _builder_1.append("}");
+ _builder_1.newLine();
+ _builder_1.newLine();
+ _switchResult = _builder_1.toString();
+ }
+ }
+ if (!_matched) {
+ String _xblockexpression = null;
+ {
+ String _string = valueClass.toString();
+ String _plus = ("Unsupported ticks type is used : " + _string);
+ TicksUtilsTranslationUnit.LOG.error(_plus);
+ _xblockexpression = "";
+ }
+ _switchResult = _xblockexpression;
+ }
+ return _switchResult;
+ }
+
+ private CharSequence burnTicks(final String burnTicksBody) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("void burnTicks(int ticks) {");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append(burnTicksBody, "\t");
+ _builder.newLineIfNotEmpty();
+ _builder.append("}");
+ _builder.newLine();
+ _builder.newLine();
+ return _builder;
+ }
+
+ private String chooseTicks(final ConfigModel configModel) {
+ String _switchResult = null;
+ TickType _defaultTickType = configModel.getDefaultTickType();
+ if (_defaultTickType != null) {
+ switch (_defaultTickType) {
+ case MINIMUM:
+ _switchResult = "lowerBound";
+ break;
+ case MAXIMUM:
+ _switchResult = "upperBound";
+ break;
+ case AVERAGE:
+ _switchResult = "(int)average";
+ break;
+ default:
+ _switchResult = "(int)average";
+ break;
+ }
+ } else {
+ _switchResult = "(int)average";
+ }
+ return _switchResult;
+ }
+
+ private CharSequence burnTicksStatistics(final ConfigModel configModel) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("void burnTicksStatistics(double average, int lowerBound, int upperBound) {");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("burnTicks(");
+ String _chooseTicks = this.chooseTicks(configModel);
+ _builder.append(_chooseTicks, "\t");
+ _builder.append(");");
+ _builder.newLineIfNotEmpty();
+ _builder.append("}");
+ _builder.newLine();
+ _builder.newLine();
+ return _builder;
+ }
+
+ private CharSequence burnTicksDefault() {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("\t");
+ _builder.append("// default implementation of tick burning");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("int numLoops = ticks / 400; ");
+ _builder.newLine();
+ _builder.append("#\tif defined (__x86_64__)");
+ _builder.newLine();
+ _builder.append(" \t");
+ _builder.append("for (int i = 0; i < numLoops; i++) {");
+ _builder.newLine();
+ {
+ IntegerRange _upTo = new IntegerRange(1, 400);
+ for (final Integer i : _upTo) {
+ _builder.append(" \t\t");
+ _builder.append("__asm volatile(\"nop\");");
+ _builder.newLine();
+ }
+ }
+ _builder.append(" \t\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("#\telif defined (__x86_32__) \t\t");
+ _builder.newLine();
+ _builder.append(" \t\t");
+ _builder.append("for (int i = 0; i < numLoops; i++) {");
+ _builder.newLine();
+ {
+ IntegerRange _upTo_1 = new IntegerRange(1, 400);
+ for (final Integer i_1 : _upTo_1) {
+ _builder.append(" \t\t\t \t");
+ _builder.append("__asm volatile(\"mov r0, r0\");");
+ _builder.newLine();
+ }
+ }
+ _builder.append(" \t\t\t\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("#\telif defined (__aarch64__) \t\t");
+ _builder.newLine();
+ _builder.append(" \t");
+ _builder.append("for (int i = 0; i < numLoops; i++) {");
+ _builder.newLine();
+ {
+ IntegerRange _upTo_2 = new IntegerRange(1, 400);
+ for (final Integer i_2 : _upTo_2) {
+ _builder.append(" \t");
+ _builder.append("__asm volatile(\"mov x0, x0\");");
+ _builder.newLine();
+ }
+ }
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("#\tendif");
+ _builder.newLine();
+ return _builder;
+ }
+
+ private CharSequence burnTicksDecleration() {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("void burnTicks(int ticks);");
+ _builder.newLine();
+ _builder.newLine();
+ return _builder;
+ }
+
+ private CharSequence burnTicksStatisticsDecleration() {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("void burnTicksStatistics(double average, int lowerBound, int upperBound);");
+ _builder.newLine();
+ _builder.newLine();
+ return _builder;
+ }
+
+ private String generateTicksDecleration(final Object valueClass) {
+ String _switchResult = null;
+ boolean _matched = false;
+ if (Objects.equal(valueClass, DiscreteValueConstantImpl.class)) {
+ _matched = true;
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("void ");
+ CharSequence _execCall = this.getExecCall("int ticks");
+ _builder.append(_execCall);
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ _switchResult = _builder.toString();
+ }
+ if (!_matched) {
+ if (Objects.equal(valueClass, DiscreteValueStatisticsImpl.class)) {
+ _matched = true;
+ StringConcatenation _builder_1 = new StringConcatenation();
+ _builder_1.append("void ");
+ CharSequence _execCall_1 = this.getExecCall("double average, int lowerBound, int upperBound");
+ _builder_1.append(_execCall_1);
+ _builder_1.append(";");
+ _builder_1.newLineIfNotEmpty();
+ _builder_1.newLine();
+ _switchResult = _builder_1.toString();
+ }
+ }
+ if (!_matched) {
+ String _xblockexpression = null;
+ {
+ String _string = valueClass.toString();
+ String _plus = ("Unsupported ticks type is used : " + _string);
+ TicksUtilsTranslationUnit.LOG.error(_plus);
+ _xblockexpression = "";
+ }
+ _switchResult = _xblockexpression;
+ }
+ return _switchResult;
+ }
+
+ public String getBasePath() {
+ return "synthetic_gen";
+ }
+
+ public String getModulePath() {
+ String _basePath = this.getBasePath();
+ String _plus = (_basePath + "/");
+ String _moduleName = this.getModuleName();
+ return (_plus + _moduleName);
+ }
+
+ @Override
+ public String getSrcFile() {
+ String _moduleName = this.getModuleName();
+ return (_moduleName + ".cpp");
+ }
+
+ public String getIncPath() {
+ String _modulePath = this.getModulePath();
+ String _plus = (_modulePath + "/_inc/");
+ String _incFile = this.getIncFile();
+ return (_plus + _incFile);
+ }
+
+ public String getSrcPath() {
+ String _modulePath = this.getModulePath();
+ String _plus = (_modulePath + "/_src/");
+ String _srcFile = this.getSrcFile();
+ return (_plus + _srcFile);
+ }
+
+ public boolean isIncFileEmpty() {
+ String _modulePath = this.getModulePath();
+ String _plus = (_modulePath + "/_inc/");
+ String _moduleName = this.getModuleName();
+ String _plus_1 = (_plus + _moduleName);
+ boolean _bufferExists = this.outputBuffer.bufferExists("H", _plus_1);
+ return (!_bufferExists);
+ }
+
+ public boolean isSrcFileEmpty() {
+ String _modulePath = this.getModulePath();
+ String _plus = (_modulePath + "/_src/");
+ String _moduleName = this.getModuleName();
+ String _plus_1 = (_plus + _moduleName);
+ boolean _bufferExists = this.outputBuffer.bufferExists("C", _plus_1);
+ return (!_bufferExists);
+ }
+
+ public boolean incAppend(final String str) {
+ String _modulePath = this.getModulePath();
+ String _plus = (_modulePath + "/_inc/");
+ String _moduleName = this.getModuleName();
+ String _plus_1 = (_plus + _moduleName);
+ return this.outputBuffer.appendTo("H", _plus_1, str);
+ }
+
+ public boolean srcAppend(final String str) {
+ String _modulePath = this.getModulePath();
+ String _plus = (_modulePath + "/_src/");
+ String _moduleName = this.getModuleName();
+ String _plus_1 = (_plus + _moduleName);
+ return this.outputBuffer.appendTo("C", _plus_1, str);
+ }
+}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/generators/TranslationUnit.java b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/generators/TranslationUnit.java
new file mode 100644
index 0000000..6251446
--- /dev/null
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/generators/TranslationUnit.java
@@ -0,0 +1,65 @@
+/**
+ * Copyright (c) 2020 Robert Bosch GmbH.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Robert Bosch GmbH - initial API and implementation
+ */
+
+package org.eclipse.app4mc.slg.commons.m2t.generators;
+
+public class TranslationUnit {
+ private String path;
+ private String call;
+ private String incFile;
+ private String srcFile;
+
+ public TranslationUnit(final String path, final String call, final String incFile, final String srcFile) {
+ this.path = path;
+ this.call = call;
+ this.incFile = incFile;
+ this.srcFile = srcFile;
+ }
+
+ public TranslationUnit() {
+ this("MODULE_PATH", "CALL", "MODULE.H", "MODULE.CPP"); // dummy values for unused data
+ }
+
+ public String getCall() {
+ return this.call;
+ }
+
+ public void setCall(final String _call) {
+ this.call = _call;
+ }
+
+ public String getPath() {
+ return this.path;
+ }
+
+ public void setPath(final String _path) {
+ this.path = _path;
+ }
+
+ public String getSrcFile() {
+ return this.srcFile;
+ }
+
+ public String getIncFile() {
+ return this.incFile;
+ }
+
+ public String getExtendedIncPath() {
+ return ((this.path + "/_inc/") + this.incFile);
+ }
+
+ public String getExtendedSrcPath() {
+ return ((this.path + "/_src/") + this.srcFile);
+ }
+
+}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/ActivityGraphItemTransformer.xtend b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/ActivityGraphItemTransformer.xtend
index f7550d4..165fb9f 100644
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/ActivityGraphItemTransformer.xtend
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/ActivityGraphItemTransformer.xtend
@@ -25,8 +25,8 @@
import org.eclipse.app4mc.amalthea.model.RunnableCall
import org.eclipse.app4mc.amalthea.model.Ticks
import org.eclipse.app4mc.slg.commons.m2t.AbstractSLGTransformer
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TicksTranslationUnit
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TranslationUnit
+import org.eclipse.app4mc.slg.commons.m2t.generators.TicksTranslationUnit
+import org.eclipse.app4mc.slg.commons.m2t.generators.TranslationUnit
import org.slf4j.Logger
import org.slf4j.LoggerFactory
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/BaseTransformer.xtend b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/BaseTransformer.xtend
index 403c5f6..c9ddf2b 100644
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/BaseTransformer.xtend
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/BaseTransformer.xtend
@@ -19,7 +19,7 @@
import java.util.HashMap
import java.util.HashSet
import org.eclipse.app4mc.slg.commons.m2t.AbstractSLGTransformer
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TranslationUnit
+import org.eclipse.app4mc.slg.commons.m2t.generators.TranslationUnit
abstract class BaseTransformer extends AbstractSLGTransformer {
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/GroupHeaderTransformer.xtend b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/GroupHeaderTransformer.xtend
index 94cf5ce..a5dd80f 100644
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/GroupHeaderTransformer.xtend
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/GroupHeaderTransformer.xtend
@@ -20,7 +20,7 @@
import java.util.LinkedHashSet
import org.eclipse.app4mc.amalthea.model.Component
import org.eclipse.app4mc.amalthea.model.Group
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TranslationUnit
+import org.eclipse.app4mc.slg.commons.m2t.generators.TranslationUnit
import org.eclipse.app4mc.transformation.util.OutputBuffer
@Singleton
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/GroupSourceTransformer.xtend b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/GroupSourceTransformer.xtend
index bd525c2..c9c6641 100644
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/GroupSourceTransformer.xtend
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/GroupSourceTransformer.xtend
@@ -20,7 +20,7 @@
import java.util.LinkedList
import org.eclipse.app4mc.amalthea.model.Component
import org.eclipse.app4mc.amalthea.model.Group
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TranslationUnit
+import org.eclipse.app4mc.slg.commons.m2t.generators.TranslationUnit
import org.eclipse.app4mc.transformation.util.OutputBuffer
@Singleton
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/LabelAccessTransformer.xtend b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/LabelAccessTransformer.xtend
index 8f1be77..0ebc5cb 100644
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/LabelAccessTransformer.xtend
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/LabelAccessTransformer.xtend
@@ -18,7 +18,7 @@
import com.google.inject.Inject
import com.google.inject.Singleton
import org.eclipse.app4mc.amalthea.model.LabelAccess
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.LabelAccessTranslationUnit
+import org.eclipse.app4mc.slg.commons.m2t.generators.LabelAccessTranslationUnit
import org.eclipse.app4mc.transformation.templates.AbstractTransformer
import org.eclipse.app4mc.transformation.util.OutputBuffer
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/LabelTransformer.xtend b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/LabelTransformer.xtend
index 17516ac..12dac4b 100644
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/LabelTransformer.xtend
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/LabelTransformer.xtend
@@ -20,7 +20,7 @@
import java.util.ArrayList
import java.util.HashMap
import org.eclipse.app4mc.amalthea.model.Label
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.LabelTranslationUnit
+import org.eclipse.app4mc.slg.commons.m2t.generators.LabelTranslationUnit
import org.eclipse.app4mc.transformation.util.OutputBuffer
@Singleton
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/RunnableTransformer.xtend b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/RunnableTransformer.xtend
index df12e15..4a5c5f6 100644
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/RunnableTransformer.xtend
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/RunnableTransformer.xtend
@@ -18,7 +18,7 @@
import com.google.inject.Inject
import com.google.inject.Singleton
import org.eclipse.app4mc.amalthea.model.Runnable
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.RunnableTranslationUnit
+import org.eclipse.app4mc.slg.commons.m2t.generators.RunnableTranslationUnit
import org.eclipse.app4mc.transformation.util.OutputBuffer
@Singleton
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/SynteticTransformer.xtend b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/SynteticTransformer.xtend
index d295754..fd2d623 100644
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/SynteticTransformer.xtend
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/SynteticTransformer.xtend
@@ -15,7 +15,7 @@
package org.eclipse.app4mc.slg.commons.m2t.transformers
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TranslationUnit
+import org.eclipse.app4mc.slg.commons.m2t.generators.TranslationUnit
abstract class SynteticTransformer<T extends TranslationUnit> extends BaseTransformer {
}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/TaskTransformer.xtend b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/TaskTransformer.xtend
index 84df901..d778a19 100644
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/TaskTransformer.xtend
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/TaskTransformer.xtend
@@ -19,7 +19,7 @@
import com.google.inject.Singleton
import org.eclipse.app4mc.amalthea.model.Component
import org.eclipse.app4mc.amalthea.model.Task
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TaskTranslationUnit
+import org.eclipse.app4mc.slg.commons.m2t.generators.TaskTranslationUnit
import org.eclipse.app4mc.transformation.util.OutputBuffer
@Singleton
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/TicksTransformer.xtend b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/TicksTransformer.xtend
index 4c2f53b..ba103cc 100644
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/TicksTransformer.xtend
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/TicksTransformer.xtend
@@ -20,7 +20,7 @@
import java.util.ArrayList
import java.util.List
import org.eclipse.app4mc.amalthea.model.Ticks
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TicksTranslationUnit
+import org.eclipse.app4mc.slg.commons.m2t.generators.TicksTranslationUnit
import org.eclipse.app4mc.transformation.templates.AbstractTransformer
import org.eclipse.app4mc.transformation.util.OutputBuffer
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/TicksUtilsTransformer.xtend b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/TicksUtilsTransformer.xtend
index 9af256d..92831f6 100644
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/TicksUtilsTransformer.xtend
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/TicksUtilsTransformer.xtend
@@ -20,7 +20,7 @@
import org.eclipse.app4mc.amalthea.model.IDiscreteValueDeviation
import org.eclipse.app4mc.slg.config.ConfigModel
import org.eclipse.app4mc.slg.commons.m2t.CustomObjectsStore
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TicksUtilsTranslationUnit
+import org.eclipse.app4mc.slg.commons.m2t.generators.TicksUtilsTranslationUnit
import org.eclipse.app4mc.transformation.util.OutputBuffer
@Singleton
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/translationUnits/LabelAccessTranslationUnit.java b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/translationUnits/LabelAccessTranslationUnit.java
deleted file mode 100644
index 69d9583..0000000
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/translationUnits/LabelAccessTranslationUnit.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/**
- * Copyright (c) 2020 Robert Bosch GmbH.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- */
-package org.eclipse.app4mc.slg.commons.m2t.translationUnits;
-
-import java.util.Arrays;
-
-import org.eclipse.app4mc.amalthea.model.LabelAccess;
-import org.eclipse.app4mc.amalthea.model.LabelAccessEnum;
-import org.eclipse.app4mc.amalthea.model.LabelAccessStatistic;
-import org.eclipse.app4mc.amalthea.model.MinAvgMaxStatistic;
-import org.eclipse.app4mc.amalthea.model.NumericStatistic;
-import org.eclipse.app4mc.amalthea.model.SingleValueStatistic;
-import org.eclipse.app4mc.transformation.util.OutputBuffer;
-
-public class LabelAccessTranslationUnit extends TranslationUnit {
- public String getBasePath() {
- return this.tuLabel.getBasePath();
- }
-
- public String getModuleName() {
- return this.tuLabel.getModuleName();
- }
-
- public String getIncFile() {
- return this.tuLabel.getIncFile();
- }
-
- @Override
- public String getCall() {
- String _xblockexpression = null;
- {
- String statString = "1";
- LabelAccessStatistic _statistic = null;
- if (this.labelAccess!=null) {
- _statistic=this.labelAccess.getStatistic();
- }
- NumericStatistic _value = null;
- if (_statistic!=null) {
- _value=_statistic.getValue();
- }
- final NumericStatistic stat = _value;
- if ((stat != null)) {
- LabelAccessStatistic _statistic_1 = null;
- if (this.labelAccess!=null) {
- _statistic_1=this.labelAccess.getStatistic();
- }
- NumericStatistic _value_1 = null;
- if (_statistic_1!=null) {
- _value_1=_statistic_1.getValue();
- }
- statString = LabelAccessTranslationUnit.getNumericStatistic(_value_1);
- }
- String _switchResult = null;
- LabelAccessEnum _access = this.labelAccess.getAccess();
- if (_access != null) {
- switch (_access) {
- case READ:
- _switchResult = this.tuLabel.readCall(statString);
- break;
- case WRITE:
- _switchResult = this.tuLabel.writeCall(statString);
- break;
- default:
- String _name = this.labelAccess.getData().getName();
- String _plus = ("/*underspecified access to label" + _name);
- _switchResult = (_plus + "*/");
- break;
- }
- } else {
- String _name = this.labelAccess.getData().getName();
- String _plus = ("/*underspecified access to label" + _name);
- _switchResult = (_plus + "*/");
- }
- _xblockexpression = _switchResult;
- }
- return _xblockexpression;
- }
-
- public String getModulePath() {
- String _basePath = this.getBasePath();
- String _plus = (_basePath + "/");
- String _moduleName = this.getModuleName();
- return (_plus + _moduleName);
- }
-
-private OutputBuffer outputBuffer;
-
-@Override
-public String getSrcFile() {
- String _moduleName = this.getModuleName();
- return (_moduleName + ".cpp");
- }
-
-public String getIncPath() {
- String _modulePath = this.getModulePath();
- String _plus = (_modulePath + "/_inc/");
- String _incFile = this.getIncFile();
- return (_plus + _incFile);
- }
-
-public String getSrcPath() {
- String _modulePath = this.getModulePath();
- String _plus = (_modulePath + "/_src/");
- String _srcFile = this.getSrcFile();
- return (_plus + _srcFile);
- }
-
-public boolean isIncFileEmpty() {
- String _modulePath = this.getModulePath();
- String _plus = (_modulePath + "/_inc/");
- String _moduleName = this.getModuleName();
- String _plus_1 = (_plus + _moduleName);
- boolean _bufferExists = this.outputBuffer.bufferExists("H", _plus_1);
- return (!_bufferExists);
- }
-
-public boolean isSrcFileEmpty() {
- String _modulePath = this.getModulePath();
- String _plus = (_modulePath + "/_src/");
- String _moduleName = this.getModuleName();
- String _plus_1 = (_plus + _moduleName);
- boolean _bufferExists = this.outputBuffer.bufferExists("C", _plus_1);
- return (!_bufferExists);
- }
-
-public boolean incAppend(final String str) {
- String _modulePath = this.getModulePath();
- String _plus = (_modulePath + "/_inc/");
- String _moduleName = this.getModuleName();
- String _plus_1 = (_plus + _moduleName);
- return this.outputBuffer.appendTo("H", _plus_1, str);
- }
-
-public boolean srcAppend(final String str) {
- String _modulePath = this.getModulePath();
- String _plus = (_modulePath + "/_src/");
- String _moduleName = this.getModuleName();
- String _plus_1 = (_plus + _moduleName);
- return this.outputBuffer.appendTo("C", _plus_1, str);
- }
-
-private final LabelTranslationUnit tuLabel;
-
- private final LabelAccess labelAccess;
-
- public LabelAccessTranslationUnit(final OutputBuffer outputBuffer, final LabelTranslationUnit tuLabel, final LabelAccess labelAccess) {
- super();
- this.tuLabel = tuLabel;
- this.labelAccess = labelAccess;
- this.outputBuffer = outputBuffer;
- }
-
- protected static String _getNumericStatistic(final MinAvgMaxStatistic stat) {
- String _string = Integer.valueOf(Double.valueOf(Math.ceil(stat.getAvg())).intValue()).toString();
- return (_string + "/*MinAvgMaxStatistic not supported yet*/");
- }
-
- protected static String _getNumericStatistic(final SingleValueStatistic stat) {
- return Integer.valueOf(Double.valueOf(Math.ceil(stat.getValue())).intValue()).toString();
- }
-
- public static String getNumericStatistic(final NumericStatistic stat) {
- if (stat instanceof MinAvgMaxStatistic) {
- return _getNumericStatistic((MinAvgMaxStatistic)stat);
- } else if (stat instanceof SingleValueStatistic) {
- return _getNumericStatistic((SingleValueStatistic)stat);
- } else {
- throw new IllegalArgumentException("Unhandled parameter types: " +
- Arrays.<Object>asList(stat).toString());
- }
- }
-}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/translationUnits/LabelTranslationUnit.java b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/translationUnits/LabelTranslationUnit.java
deleted file mode 100644
index 2fd39bb..0000000
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/translationUnits/LabelTranslationUnit.java
+++ /dev/null
@@ -1,542 +0,0 @@
-/**
- * Copyright (c) 2020 Robert Bosch GmbH.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- */
-package org.eclipse.app4mc.slg.commons.m2t.translationUnits;
-
-import org.eclipse.app4mc.amalthea.model.DataSize;
-import org.eclipse.app4mc.amalthea.model.Label;
-import org.eclipse.app4mc.slg.commons.m2t.AmaltheaModelUtils;
-import org.eclipse.app4mc.transformation.util.OutputBuffer;
-import org.eclipse.xtend2.lib.StringConcatenation;
-
-@SuppressWarnings("NULL-SAFE")
-public class LabelTranslationUnit extends TranslationUnit {
- public static String getModulePathStatic() {
- String _basePathStatic = "synthetic_gen";
- String _plus = (_basePathStatic + "/");
- String _moduleNameStatic = LabelTranslationUnit.getModuleNameStatic();
- return (_plus + _moduleNameStatic);
- }
-
- public static String getMakeFilePathStatic() {
- String _modulePathStatic = LabelTranslationUnit.getModulePathStatic();
- String _plus = (_modulePathStatic + "/");
- String _makeFileName = "CMakeLists.txt";
- return (_plus + _makeFileName);
- }
-
- public static String getModuleNameStatic() {
- return "labels";
- }
-
- public static String getLibName() {
- return "LABELS_LIB";
- }
-
- public String getModuleName() {
- return LabelTranslationUnit.getModuleNameStatic();
- }
-
- protected String getName() {
- return this.label.getName();
- }
-
- public String getInitCall() {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("initialize_");
- String _name = this.getName();
- _builder.append(_name);
- _builder.append("()");
- return _builder.toString();
- }
-
- public String readCall(final String param) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("read_");
- String _name = this.getName();
- _builder.append(_name);
- _builder.append("(");
- _builder.append(param);
- _builder.append(")");
- return _builder.toString();
- }
-
- public String writeCall(final String param) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("write_");
- String _name = this.getName();
- _builder.append(_name);
- _builder.append("(");
- _builder.append(param);
- _builder.append(")");
- return _builder.toString();
- }
-
- public String getIncFile() {
- String _moduleName = this.getModuleName();
- return (_moduleName + ".h");
- }
-
- private final Label label;
-private OutputBuffer outputBuffer;
-
- public LabelTranslationUnit(final OutputBuffer outputBuffer, final Label label) {
- super();
- this.label = label;
- this.outputBuffer = outputBuffer;
- this.genFiles();
- }
-
- public boolean genFiles() {
- boolean _xblockexpression = false;
- {
- boolean _isSrcFileEmpty = this.isSrcFileEmpty();
- if (_isSrcFileEmpty) {
- String _incFile = this.getIncFile();
- String _plus = ("#include \"" + _incFile);
- String _plus_1 = (_plus + "\"\n\n");
- this.srcAppend(_plus_1);
- }
- this.incAppend(this.toH());
- _xblockexpression = this.srcAppend(this.toCpp());
- }
- return _xblockexpression;
- }
-
- private String toH() {
- StringConcatenation _builder = new StringConcatenation();
- {
- boolean _isIncFileEmpty = this.isIncFileEmpty();
- if (_isIncFileEmpty) {
- String _xblockexpression = null;
- {
- this.incAppend("#include <stdbool.h>\n\n");
- _xblockexpression = "";
- }
- _builder.append(_xblockexpression);
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("void ");
- String _initCall = this.getInitCall();
- _builder.append(_initCall);
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.append("void ");
- String _readCall = this.readCall("int labelAccessStatistics");
- _builder.append(_readCall);
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.append("void ");
- String _writeCall = this.writeCall("int labelAccessStatistics");
- _builder.append(_writeCall);
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- return _builder.toString();
- }
-
- private String toCpp() {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("int ");
- String _name = this.getName();
- _builder.append(_name);
- _builder.append("[");
- long _labelArraySize = AmaltheaModelUtils.getLabelArraySize(this.label);
- _builder.append(_labelArraySize);
- _builder.append("];\t");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("static bool isIinitialized_");
- String _name_1 = this.getName();
- _builder.append(_name_1);
- _builder.append(" = false;");
- _builder.newLineIfNotEmpty();
- _builder.append("void ");
- String _initCall = this.getInitCall();
- _builder.append(_initCall);
- _builder.append(" {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("if (!isIinitialized_");
- String _name_2 = this.getName();
- _builder.append(_name_2, "\t");
- _builder.append("){");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("for (int i=0; i < ");
- long _labelArraySize_1 = AmaltheaModelUtils.getLabelArraySize(this.label);
- _builder.append(_labelArraySize_1, "\t\t");
- _builder.append("; i++){");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- String _name_3 = this.getName();
- _builder.append(_name_3, "\t\t\t");
- _builder.append("[i] = i+1;");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("isIinitialized_");
- String _name_4 = this.getName();
- _builder.append(_name_4, "\t\t");
- _builder.append(" = true;");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("}");
- _builder.newLine();
- _builder.newLine();
- _builder.newLine();
- _builder.append("void ");
- String _readCall = this.readCall("int labelAccessStatistics");
- _builder.append(_readCall);
- _builder.append(" {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("int numberOfBytes = ");
- Label _label = null;
- if (this!=null) {
- _label=this.label;
- }
- DataSize _size = null;
- if (_label!=null) {
- _size=_label.getSize();
- }
- long _numberBytes = 0l;
- if (_size!=null) {
- _numberBytes=_size.getNumberBytes();
- }
- _builder.append(_numberBytes, "\t");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("for (int repeat = 0 ; repeat < labelAccessStatistics; repeat++){");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("if(numberOfBytes < 4){");
- _builder.newLine();
- _builder.append("\t\t\t");
- _builder.append("numberOfBytes = 4;");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("int arraysize = sizeof(");
- String _name_5 = this.getName();
- _builder.append(_name_5, "\t\t");
- _builder.append(") / 4;");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("//printf(\"number of bytes:%d\\n\",arraysize);");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("int leftOverElements=arraysize%10;");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("int arraySizeWith10Multiples=arraysize-leftOverElements;");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("int i = 0;");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("int a = 0;");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("for (i = 0; i < arraySizeWith10Multiples; i = i + 10) { //iteration with 10 reads");
- _builder.newLine();
- _builder.append("\t\t\t");
- _builder.append("a = ");
- String _name_6 = this.getName();
- _builder.append(_name_6, "\t\t\t");
- _builder.append("[i];");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- _builder.append("a = ");
- String _name_7 = this.getName();
- _builder.append(_name_7, "\t\t\t");
- _builder.append("[i+1];");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- _builder.append("a = ");
- String _name_8 = this.getName();
- _builder.append(_name_8, "\t\t\t");
- _builder.append("[i+2];");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- _builder.append("a = ");
- String _name_9 = this.getName();
- _builder.append(_name_9, "\t\t\t");
- _builder.append("[i+3];");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- _builder.append("a = ");
- String _name_10 = this.getName();
- _builder.append(_name_10, "\t\t\t");
- _builder.append("[i+4];");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- _builder.append("a = ");
- String _name_11 = this.getName();
- _builder.append(_name_11, "\t\t\t");
- _builder.append("[i+5];");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- _builder.append("a = ");
- String _name_12 = this.getName();
- _builder.append(_name_12, "\t\t\t");
- _builder.append("[i+6];");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- _builder.append("a = ");
- String _name_13 = this.getName();
- _builder.append(_name_13, "\t\t\t");
- _builder.append("[i+7];");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- _builder.append("a = ");
- String _name_14 = this.getName();
- _builder.append(_name_14, "\t\t\t");
- _builder.append("[i+8];");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- _builder.append("a = ");
- String _name_15 = this.getName();
- _builder.append(_name_15, "\t\t\t");
- _builder.append("[i+9];");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("for(;i<arraysize;i++){");
- _builder.newLine();
- _builder.append("\t\t\t");
- _builder.append("a = ");
- String _name_16 = this.getName();
- _builder.append(_name_16, "\t\t\t");
- _builder.append("[i];");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("}");
- _builder.newLine();
- _builder.newLine();
- _builder.append("void ");
- String _writeCall = this.writeCall("int labelAccessStatistics");
- _builder.append(_writeCall);
- _builder.append(" {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("int numberOfBytes = ");
- Label _label_1 = null;
- if (this!=null) {
- _label_1=this.label;
- }
- DataSize _size_1 = null;
- if (_label_1!=null) {
- _size_1=_label_1.getSize();
- }
- long _numberBytes_1 = 0l;
- if (_size_1!=null) {
- _numberBytes_1=_size_1.getNumberBytes();
- }
- _builder.append(_numberBytes_1, "\t");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("for (int repeat = 0 ; repeat < labelAccessStatistics; repeat++){");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("if(numberOfBytes < 4){");
- _builder.newLine();
- _builder.append("\t\t\t");
- _builder.append("numberOfBytes = 4;");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("int arraysize = sizeof(");
- String _name_17 = this.getName();
- _builder.append(_name_17, "\t\t");
- _builder.append(") / 4;");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("int leftOverElements=arraysize%10;");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("int arraySizeWith10Multiples=arraysize-leftOverElements;");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("int i = 0;");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("for (i = 0; i < arraySizeWith10Multiples; i = i + 10) {");
- _builder.newLine();
- _builder.append("\t\t\t");
- String _name_18 = this.getName();
- _builder.append(_name_18, "\t\t\t");
- _builder.append("[i] = 0xAFFE;");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- String _name_19 = this.getName();
- _builder.append(_name_19, "\t\t\t");
- _builder.append("[i+1] = 0xAFFE;");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- String _name_20 = this.getName();
- _builder.append(_name_20, "\t\t\t");
- _builder.append("[i+2] = 0xAFFE;");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- String _name_21 = this.getName();
- _builder.append(_name_21, "\t\t\t");
- _builder.append("[i+3] = 0xAFFE;");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- String _name_22 = this.getName();
- _builder.append(_name_22, "\t\t\t");
- _builder.append("[i+4] = 0xAFFE;");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- String _name_23 = this.getName();
- _builder.append(_name_23, "\t\t\t");
- _builder.append("[i+5] = 0xAFFE;");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- String _name_24 = this.getName();
- _builder.append(_name_24, "\t\t\t");
- _builder.append("[i+6] = 0xAFFE;");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- String _name_25 = this.getName();
- _builder.append(_name_25, "\t\t\t");
- _builder.append("[i+7] = 0xAFFE;");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- String _name_26 = this.getName();
- _builder.append(_name_26, "\t\t\t");
- _builder.append("[i+8] = 0xAFFE;");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- String _name_27 = this.getName();
- _builder.append(_name_27, "\t\t\t");
- _builder.append("[i+9] = 0xAFFE;");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("for(;i<arraysize;i++){");
- _builder.newLine();
- _builder.append("\t\t\t\t");
- String _name_28 = this.getName();
- _builder.append(_name_28, "\t\t\t\t");
- _builder.append("[i]=0xAFFE;");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("}");
- _builder.newLine();
- _builder.newLine();
- return _builder.toString();
- }
-
- protected long getSize() {
- return this.label.getSize().getNumberBytes();
- }
-
-public String getBasePath() {
- return "synthetic_gen";
- }
-
-public String getModulePath() {
- String _basePath = this.getBasePath();
- String _plus = (_basePath + "/");
- String _moduleName = this.getModuleName();
- return (_plus + _moduleName);
- }
-
-@Override
-public String getSrcFile() {
- String _moduleName = this.getModuleName();
- return (_moduleName + ".cpp");
- }
-
-public String getIncPath() {
- String _modulePath = this.getModulePath();
- String _plus = (_modulePath + "/_inc/");
- String _incFile = this.getIncFile();
- return (_plus + _incFile);
- }
-
-public String getSrcPath() {
- String _modulePath = this.getModulePath();
- String _plus = (_modulePath + "/_src/");
- String _srcFile = this.getSrcFile();
- return (_plus + _srcFile);
- }
-
-public boolean isIncFileEmpty() {
- String _modulePath = this.getModulePath();
- String _plus = (_modulePath + "/_inc/");
- String _moduleName = this.getModuleName();
- String _plus_1 = (_plus + _moduleName);
- boolean _bufferExists = this.outputBuffer.bufferExists("H", _plus_1);
- return (!_bufferExists);
- }
-
-public boolean isSrcFileEmpty() {
- String _modulePath = this.getModulePath();
- String _plus = (_modulePath + "/_src/");
- String _moduleName = this.getModuleName();
- String _plus_1 = (_plus + _moduleName);
- boolean _bufferExists = this.outputBuffer.bufferExists("C", _plus_1);
- return (!_bufferExists);
- }
-
-public boolean incAppend(final String str) {
- String _modulePath = this.getModulePath();
- String _plus = (_modulePath + "/_inc/");
- String _moduleName = this.getModuleName();
- String _plus_1 = (_plus + _moduleName);
- return this.outputBuffer.appendTo("H", _plus_1, str);
- }
-
-public boolean srcAppend(final String str) {
- String _modulePath = this.getModulePath();
- String _plus = (_modulePath + "/_src/");
- String _moduleName = this.getModuleName();
- String _plus_1 = (_plus + _moduleName);
- return this.outputBuffer.appendTo("C", _plus_1, str);
- }
-}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/translationUnits/RunnableTranslationUnit.java b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/translationUnits/RunnableTranslationUnit.java
deleted file mode 100644
index 177b67e..0000000
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/translationUnits/RunnableTranslationUnit.java
+++ /dev/null
@@ -1,237 +0,0 @@
-/**
- * Copyright (c) 2020 Robert Bosch GmbH.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- */
-package org.eclipse.app4mc.slg.commons.m2t.translationUnits;
-
-import java.util.ArrayList;
-import java.util.LinkedHashSet;
-import java.util.function.Consumer;
-
-import org.eclipse.app4mc.amalthea.model.ActivityGraph;
-import org.eclipse.app4mc.amalthea.model.ActivityGraphItem;
-import org.eclipse.app4mc.slg.commons.m2t.transformers.ActivityGraphItemTransformer;
-import org.eclipse.app4mc.transformation.util.OutputBuffer;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.xtend2.lib.StringConcatenation;
-import org.eclipse.xtext.xbase.lib.StringExtensions;
-
-public class RunnableTranslationUnit extends TranslationUnit {
- public static String getModulePathStatic() {
- String _basePathStatic = "synthetic_gen";
- String _plus = (_basePathStatic + "/");
- String _moduleNameStatic = RunnableTranslationUnit.getModuleNameStatic();
- return (_plus + _moduleNameStatic);
- }
-
- public static String getMakeFilePathStatic() {
- String _modulePathStatic = RunnableTranslationUnit.getModulePathStatic();
- String _plus = (_modulePathStatic + "/");
- String _makeFileName = "CMakeLists.txt";
- return (_plus + _makeFileName);
- }
-
- public static String getModuleNameStatic() {
- return "runnables";
- }
-
- public static String getLibName() {
- return "RUNNABLES_LIB";
- }
-
- public String getModuleName() {
- return RunnableTranslationUnit.getModuleNameStatic();
- }
-
- @Override
- public String getCall() {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("run_");
- String _name = this.runnable.getName();
- _builder.append(_name);
- _builder.append("()");
- return _builder.toString();
- }
-
- public String getIncFile() {
- String _moduleName = this.getModuleName();
- return (_moduleName + ".h");
- }
-
- public ActivityGraphItemTransformer callGraphItemTransformer;
-
- public org.eclipse.app4mc.amalthea.model.Runnable runnable;
-
-private OutputBuffer outputBuffer;
-
- public RunnableTranslationUnit(final OutputBuffer outputBuffer, final ActivityGraphItemTransformer callGraphItemTransformer, final org.eclipse.app4mc.amalthea.model.Runnable runnable) {
- super();
- this.callGraphItemTransformer = callGraphItemTransformer;
- this.runnable = runnable;
- this.outputBuffer = outputBuffer;
- this.genFiles();
- }
-
- public boolean genFiles() {
- boolean _xblockexpression = false;
- {
- boolean _isSrcFileEmpty = this.isSrcFileEmpty();
- if (_isSrcFileEmpty) {
- String _incFile = this.getIncFile();
- String _plus = ("#include \"" + _incFile);
- String _plus_1 = (_plus + "\"\n");
- this.srcAppend(_plus_1);
- }
- final LinkedHashSet<String> includes = new LinkedHashSet<String>();
- final ArrayList<String> calls = new ArrayList<String>();
- ActivityGraph _activityGraph = null;
- if (this.runnable!=null) {
- _activityGraph=this.runnable.getActivityGraph();
- }
- EList<ActivityGraphItem> _items = null;
- if (_activityGraph!=null) {
- _items=_activityGraph.getItems();
- }
- final Consumer<ActivityGraphItem> _function = new Consumer<ActivityGraphItem>() {
- @Override
- public void accept(final ActivityGraphItem item) {
- final TranslationUnit tmp = RunnableTranslationUnit.this.callGraphItemTransformer.transform(item);
- if (((!StringExtensions.isNullOrEmpty(tmp.getIncFile())) && (!RunnableTranslationUnit.this.getIncFile().equals(tmp.getIncFile())))) {
- includes.add(tmp.getIncFile());
- }
- final String call = tmp.getCall();
- boolean _isNullOrEmpty = StringExtensions.isNullOrEmpty(call);
- boolean _not = (!_isNullOrEmpty);
- if (_not) {
- calls.add(call);
- }
- }
- };
- _items.forEach(_function);
- String _name = this.runnable.getName();
- String _plus_2 = ("\n//Runnable " + _name);
- String _plus_3 = (_plus_2 + "----\n");
- this.incAppend(_plus_3);
- this.toH(includes);
- String _name_1 = this.runnable.getName();
- String _plus_4 = ("\n//Runnable " + _name_1);
- String _plus_5 = (_plus_4 + "----\n");
- this.srcAppend(_plus_5);
- _xblockexpression = this.toCpp(includes, calls);
- }
- return _xblockexpression;
- }
-
- public boolean toH(final LinkedHashSet<String> includes) {
- boolean _xblockexpression = false;
- {
- final Consumer<String> _function = new Consumer<String>() {
- @Override
- public void accept(final String include) {
- RunnableTranslationUnit.this.incAppend((("#include \"" + include) + "\"\n"));
- }
- };
- includes.forEach(_function);
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("void ");
- String _call = this.getCall();
- _builder.append(_call);
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _xblockexpression = this.incAppend(_builder.toString());
- }
- return _xblockexpression;
- }
-
- public boolean toCpp(final LinkedHashSet<String> includes, final ArrayList<String> calls) {
- boolean _xblockexpression = false;
- {
- String _call = this.getCall();
- String _plus = ("void " + _call);
- String _plus_1 = (_plus + "{\n");
- this.srcAppend(_plus_1);
- final Consumer<String> _function = new Consumer<String>() {
- @Override
- public void accept(final String call) {
- RunnableTranslationUnit.this.srcAppend((("\t" + call) + ";\n"));
- }
- };
- calls.forEach(_function);
- _xblockexpression = this.srcAppend("}\n\n");
- }
- return _xblockexpression;
- }
-
-public String getBasePath() {
- return "synthetic_gen";
- }
-
-public String getModulePath() {
- String _basePath = this.getBasePath();
- String _plus = (_basePath + "/");
- String _moduleName = this.getModuleName();
- return (_plus + _moduleName);
- }
-
-@Override
-public String getSrcFile() {
- String _moduleName = this.getModuleName();
- return (_moduleName + ".cpp");
- }
-
-public String getIncPath() {
- String _modulePath = this.getModulePath();
- String _plus = (_modulePath + "/_inc/");
- String _incFile = this.getIncFile();
- return (_plus + _incFile);
- }
-
-public String getSrcPath() {
- String _modulePath = this.getModulePath();
- String _plus = (_modulePath + "/_src/");
- String _srcFile = this.getSrcFile();
- return (_plus + _srcFile);
- }
-
-public boolean isIncFileEmpty() {
- String _modulePath = this.getModulePath();
- String _plus = (_modulePath + "/_inc/");
- String _moduleName = this.getModuleName();
- String _plus_1 = (_plus + _moduleName);
- boolean _bufferExists = this.outputBuffer.bufferExists("H", _plus_1);
- return (!_bufferExists);
- }
-
-public boolean isSrcFileEmpty() {
- String _modulePath = this.getModulePath();
- String _plus = (_modulePath + "/_src/");
- String _moduleName = this.getModuleName();
- String _plus_1 = (_plus + _moduleName);
- boolean _bufferExists = this.outputBuffer.bufferExists("C", _plus_1);
- return (!_bufferExists);
- }
-
-public boolean incAppend(final String str) {
- String _modulePath = this.getModulePath();
- String _plus = (_modulePath + "/_inc/");
- String _moduleName = this.getModuleName();
- String _plus_1 = (_plus + _moduleName);
- return this.outputBuffer.appendTo("H", _plus_1, str);
- }
-
-public boolean srcAppend(final String str) {
- String _modulePath = this.getModulePath();
- String _plus = (_modulePath + "/_src/");
- String _moduleName = this.getModuleName();
- String _plus_1 = (_plus + _moduleName);
- return this.outputBuffer.appendTo("C", _plus_1, str);
- }
-}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/translationUnits/TaskTranslationUnit.java b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/translationUnits/TaskTranslationUnit.java
deleted file mode 100644
index c20570e..0000000
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/translationUnits/TaskTranslationUnit.java
+++ /dev/null
@@ -1,342 +0,0 @@
-/**
- * Copyright (c) 2020 Robert Bosch GmbH.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- */
-package org.eclipse.app4mc.slg.commons.m2t.translationUnits;
-
-import java.util.ArrayList;
-import java.util.LinkedHashSet;
-import java.util.LinkedList;
-import java.util.function.BiConsumer;
-import java.util.function.Consumer;
-
-import org.eclipse.app4mc.amalthea.model.ActivityGraph;
-import org.eclipse.app4mc.amalthea.model.ActivityGraphItem;
-import org.eclipse.app4mc.amalthea.model.Component;
-import org.eclipse.app4mc.amalthea.model.RunnableCall;
-import org.eclipse.app4mc.amalthea.model.Tag;
-import org.eclipse.app4mc.amalthea.model.Task;
-import org.eclipse.app4mc.slg.commons.m2t.transformers.LabelTransformer;
-import org.eclipse.app4mc.slg.commons.m2t.transformers.RunnableTransformer;
-import org.eclipse.app4mc.transformation.util.OutputBuffer;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.xtend2.lib.StringConcatenation;
-import org.eclipse.xtext.xbase.lib.Functions.Function1;
-import org.eclipse.xtext.xbase.lib.IterableExtensions;
-
-@SuppressWarnings("unused")
-public class TaskTranslationUnit extends TranslationUnit {
- public RunnableTransformer runnableTransformer;
-
- public LabelTransformer labelTransformer;
-
- public String getBasePath() {
- return "";
- }
-
- public String getModuleName() {
- return this.task.getName();
- }
-
- public String getInitCall() {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("initialize_task_");
- String _moduleName = this.getModuleName();
- _builder.append(_moduleName);
- _builder.append("()");
- return _builder.toString();
- }
-
- public String stepCall() {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("step_task_");
- String _moduleName = this.getModuleName();
- _builder.append(_moduleName);
- _builder.append("()");
- return _builder.toString();
- }
-
- private final Task task;
-
- private final Component component;
-
-private OutputBuffer outputBuffer;
-
- public TaskTranslationUnit(final OutputBuffer outputBuffer, final RunnableTransformer runnableTransformer, final LabelTransformer labelTransformer, final Task task, final Component component) {
- super();
- this.runnableTransformer = runnableTransformer;
- this.labelTransformer = labelTransformer;
- this.task = task;
- this.component = component;
- this.outputBuffer = outputBuffer;
- this.genFiles();
- }
-
- public TaskTranslationUnit(final OutputBuffer outputBuffer, final RunnableTransformer runnableTransformer, final LabelTransformer labelTransformer, final Task task) {
- super();
- this.task = task;
- this.component = null;
- this.runnableTransformer = runnableTransformer;
- this.labelTransformer = labelTransformer;
- this.outputBuffer = outputBuffer;
- }
-
- public boolean genFiles() {
- boolean _xblockexpression = false;
- {
- final LinkedHashSet<String> includes = new LinkedHashSet<String>();
- final LinkedList<String> initCalls = new LinkedList<String>();
- final LinkedList<String> stepCalls = new LinkedList<String>();
- ActivityGraph _activityGraph = null;
- if (this.task!=null) {
- _activityGraph=this.task.getActivityGraph();
- }
- EList<ActivityGraphItem> _items = null;
- if (_activityGraph!=null) {
- _items=_activityGraph.getItems();
- }
- final Consumer<ActivityGraphItem> _function = new Consumer<ActivityGraphItem>() {
- @Override
- public void accept(final ActivityGraphItem item) {
- if ((item instanceof RunnableCall)) {
- final org.eclipse.app4mc.amalthea.model.Runnable runnable = ((RunnableCall) item).getRunnable();
- final RunnableTranslationUnit tu = TaskTranslationUnit.this.runnableTransformer.transform(((org.eclipse.app4mc.amalthea.model.Runnable) runnable));
- includes.add(tu.getIncFile());
- final Function1<Tag, Boolean> _function = new Function1<Tag, Boolean>() {
- @Override
- public Boolean apply(final Tag tag) {
- return Boolean.valueOf("initialize".equals(tag.getName()));
- }
- };
- boolean _isEmpty = IterableExtensions.isEmpty(IterableExtensions.<Tag>filter(((RunnableCall)item).getTags(), _function));
- boolean _not = (!_isEmpty);
- if (_not) {
- initCalls.add(tu.getCall());
- } else {
- stepCalls.add(tu.getCall());
- }
- }
- }
- };
- _items.forEach(_function);
- final BiConsumer<ArrayList<?>, LabelTranslationUnit> _function_1 = new BiConsumer<ArrayList<?>, LabelTranslationUnit>() {
- @Override
- public void accept(final ArrayList<?> label, final LabelTranslationUnit tu) {
- includes.add(tu.getIncFile());
- initCalls.add(tu.getInitCall());
- }
- };
- this.labelTransformer.getCache().forEach(_function_1);
- this.incAppend(this.toH());
- _xblockexpression = this.srcAppend(this.toCpp(includes, initCalls, stepCalls));
- }
- return _xblockexpression;
- }
-
- private String toH() {
- StringConcatenation _builder = new StringConcatenation();
- _builder.newLine();
- _builder.append("//Header of Task ");
- String _moduleName = this.getModuleName();
- _builder.append(_moduleName);
- _builder.newLineIfNotEmpty();
- _builder.append("#include <stdint.h>");
- _builder.newLine();
- _builder.newLine();
- _builder.append("class ");
- String _moduleName_1 = this.getModuleName();
- _builder.append(_moduleName_1);
- _builder.append(" {");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("public:");
- _builder.newLine();
- _builder.newLine();
- _builder.append(" ");
- _builder.append("//constructor");
- _builder.newLine();
- _builder.append("\t");
- String _moduleName_2 = this.getModuleName();
- _builder.append(_moduleName_2, "\t");
- _builder.append("(void);");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("// destructor");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("virtual ~");
- String _moduleName_3 = this.getModuleName();
- _builder.append(_moduleName_3, "\t");
- _builder.append("() =default;");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.newLine();
- _builder.append("\t");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("void ");
- String _initCall = this.getInitCall();
- _builder.append(_initCall, "\t");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("\t");
- _builder.append("void ");
- String _stepCall = this.stepCall();
- _builder.append(_stepCall, "\t");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append(" ");
- _builder.append("};");
- _builder.newLine();
- return _builder.toString();
- }
-
- private String toCpp(final LinkedHashSet<String> includes, final LinkedList<String> initCalls, final LinkedList<String> stepCalls) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("#include \"");
- String _incFile = this.getIncFile();
- _builder.append(_incFile);
- _builder.append("\"");
- _builder.newLineIfNotEmpty();
- {
- for(final String include : includes) {
- _builder.append("#include \"");
- _builder.append(include);
- _builder.append("\"");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.newLine();
- String _moduleName = this.getModuleName();
- _builder.append(_moduleName);
- _builder.append("::");
- String _moduleName_1 = this.getModuleName();
- _builder.append(_moduleName_1);
- _builder.append("(){");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("//default constructor");
- _builder.newLine();
- _builder.append("}");
- _builder.newLine();
- _builder.newLine();
- _builder.newLine();
- _builder.append("void ");
- String _moduleName_2 = this.getModuleName();
- _builder.append(_moduleName_2);
- _builder.append("::");
- String _initCall = this.getInitCall();
- _builder.append(_initCall);
- _builder.append(" {");
- _builder.newLineIfNotEmpty();
- {
- for(final String call : initCalls) {
- _builder.append(" ");
- _builder.append(call, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("} ");
- _builder.newLine();
- _builder.newLine();
- _builder.append("void ");
- String _moduleName_3 = this.getModuleName();
- _builder.append(_moduleName_3);
- _builder.append("::");
- String _stepCall = this.stepCall();
- _builder.append(_stepCall);
- _builder.append(" {");
- _builder.newLineIfNotEmpty();
- {
- for(final String call_1 : stepCalls) {
- _builder.append(" ");
- _builder.append(call_1, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("}");
- _builder.newLine();
- return _builder.toString();
- }
-
-public String getModulePath() {
- String _basePath = this.getBasePath();
- String _plus = (_basePath + "/");
- String _moduleName = this.getModuleName();
- return (_plus + _moduleName);
- }
-
-@Override
-public String getIncFile() {
- String _moduleName = this.getModuleName();
- return (_moduleName + ".hpp");
- }
-
-@Override
-public String getSrcFile() {
- String _moduleName = this.getModuleName();
- return (_moduleName + ".cpp");
- }
-
-public String getIncPath() {
- String _modulePath = this.getModulePath();
- String _plus = (_modulePath + "/_inc/");
- String _incFile = this.getIncFile();
- return (_plus + _incFile);
- }
-
-public String getSrcPath() {
- String _modulePath = this.getModulePath();
- String _plus = (_modulePath + "/_src/");
- String _srcFile = this.getSrcFile();
- return (_plus + _srcFile);
- }
-
-public boolean isIncFileEmpty() {
- String _modulePath = this.getModulePath();
- String _plus = (_modulePath + "/_inc/");
- String _moduleName = this.getModuleName();
- String _plus_1 = (_plus + _moduleName);
- boolean _bufferExists = this.outputBuffer.bufferExists("H", _plus_1);
- return (!_bufferExists);
- }
-
-public boolean isSrcFileEmpty() {
- String _modulePath = this.getModulePath();
- String _plus = (_modulePath + "/_src/");
- String _moduleName = this.getModuleName();
- String _plus_1 = (_plus + _moduleName);
- boolean _bufferExists = this.outputBuffer.bufferExists("C", _plus_1);
- return (!_bufferExists);
- }
-
-public boolean incAppend(final String str) {
- String _modulePath = this.getModulePath();
- String _plus = (_modulePath + "/_inc/");
- String _moduleName = this.getModuleName();
- String _plus_1 = (_plus + _moduleName);
- return this.outputBuffer.appendTo("H", _plus_1, str);
- }
-
-public boolean srcAppend(final String str) {
- String _modulePath = this.getModulePath();
- String _plus = (_modulePath + "/_src/");
- String _moduleName = this.getModuleName();
- String _plus_1 = (_plus + _moduleName);
- return this.outputBuffer.appendTo("C", _plus_1, str);
- }
-}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/translationUnits/TicksTranslationUnit.java b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/translationUnits/TicksTranslationUnit.java
deleted file mode 100644
index d38c0d5..0000000
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/translationUnits/TicksTranslationUnit.java
+++ /dev/null
@@ -1,236 +0,0 @@
-/**
- * Copyright (c) 2020 Robert Bosch GmbH.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- */
-package org.eclipse.app4mc.slg.commons.m2t.translationUnits;
-
-import java.util.Arrays;
-
-import org.eclipse.app4mc.amalthea.model.DiscreteValueBetaDistribution;
-import org.eclipse.app4mc.amalthea.model.DiscreteValueBoundaries;
-import org.eclipse.app4mc.amalthea.model.DiscreteValueConstant;
-import org.eclipse.app4mc.amalthea.model.DiscreteValueGaussDistribution;
-import org.eclipse.app4mc.amalthea.model.DiscreteValueHistogram;
-import org.eclipse.app4mc.amalthea.model.DiscreteValueStatistics;
-import org.eclipse.app4mc.amalthea.model.DiscreteValueUniformDistribution;
-import org.eclipse.app4mc.amalthea.model.DiscreteValueWeibullEstimatorsDistribution;
-import org.eclipse.app4mc.amalthea.model.IDiscreteValueDeviation;
-import org.eclipse.app4mc.amalthea.model.Ticks;
-import org.eclipse.app4mc.transformation.util.OutputBuffer;
-import org.eclipse.xtend2.lib.StringConcatenation;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-@SuppressWarnings("all")
-public class TicksTranslationUnit extends TranslationUnit {
- private static final Logger LOG = LoggerFactory.getLogger(TicksTranslationUnit.class);
-
- public String getBasePath() {
- return this.tuTicksUtils.getBasePath();
- }
-
- public String getModuleName() {
- return this.tuTicksUtils.getModuleName();
- }
-
- @Override
- public String getCall() {
- if (((this.ticksValue != null) && ((this.ticksValue instanceof DiscreteValueStatistics) || (this.ticksValue instanceof DiscreteValueConstant)))) {
- return this.tuTicksUtils.getExecCall(this.getParameters(this.ticksValue)).toString();
- }
- String _name = this.ticksValue.eClass().getName();
- String _plus = ("Unsupported element for Ticks : " + _name);
- TicksTranslationUnit.LOG.error(_plus);
- return "";
- }
-
- private final TicksUtilsTranslationUnit tuTicksUtils;
-
- private final Ticks ticks;
-
- private String puName;
-
- private IDiscreteValueDeviation ticksValue;
-
-private OutputBuffer outputBuffer;
-
- public TicksTranslationUnit(final OutputBuffer outputBuffer, final TicksUtilsTranslationUnit tuTicksUtils, final Ticks ticks, final String puName, final IDiscreteValueDeviation ticksValue) {
- super();
- this.tuTicksUtils = tuTicksUtils;
- this.ticks = ticks;
- this.puName = puName;
- this.ticksValue = ticksValue;
- this.outputBuffer = outputBuffer;
- }
-
- public String getPuName() {
- return this.puName;
- }
-
- public String getIncFile() {
- String _moduleName = this.getModuleName();
- return (_moduleName + ".h");
- }
-
- private String _getParameters(final IDiscreteValueDeviation value) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("WARNING:VALUE_FORMAT_NOT_SUPPORTED\t\t");
- _builder.newLine();
- return _builder.toString();
- }
-
- private String _getParameters(final DiscreteValueBetaDistribution value) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("WARNING:VALUE_FORMAT_NOT_SUPPORTED");
- _builder.newLine();
- return _builder.toString();
- }
-
- private String _getParameters(final DiscreteValueBoundaries value) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("WARNING:VALUE_FORMAT_NOT_SUPPORTED");
- _builder.newLine();
- return _builder.toString();
- }
-
- private String _getParameters(final DiscreteValueConstant value) {
- StringConcatenation _builder = new StringConcatenation();
- long _value = value.getValue();
- _builder.append(_value);
- return _builder.toString();
- }
-
- private String _getParameters(final DiscreteValueGaussDistribution value) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("WARNING:VALUE_FORMAT_NOT_SUPPORTED");
- _builder.newLine();
- return _builder.toString();
- }
-
- private String _getParameters(final DiscreteValueHistogram value) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("WARNING:VALUE_FORMAT_NOT_SUPPORTED");
- _builder.newLine();
- return _builder.toString();
- }
-
- private String _getParameters(final DiscreteValueStatistics value) {
- StringConcatenation _builder = new StringConcatenation();
- Double _average = value.getAverage();
- _builder.append(_average);
- _builder.append(", ");
- Long _lowerBound = value.getLowerBound();
- _builder.append(_lowerBound);
- _builder.append(", ");
- Long _upperBound = value.getUpperBound();
- _builder.append(_upperBound);
- return _builder.toString();
- }
-
- private String _getParameters(final DiscreteValueUniformDistribution value) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("WARNING:VALUE_FORMAT_NOT_SUPPORTED");
- _builder.newLine();
- return _builder.toString();
- }
-
- private String _getParameters(final DiscreteValueWeibullEstimatorsDistribution value) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("WARNING:VALUE_FORMAT_NOT_SUPPORTED");
- return _builder.toString();
- }
-
- private String getParameters(final IDiscreteValueDeviation value) {
- if (value instanceof DiscreteValueBetaDistribution) {
- return _getParameters((DiscreteValueBetaDistribution)value);
- } else if (value instanceof DiscreteValueBoundaries) {
- return _getParameters((DiscreteValueBoundaries)value);
- } else if (value instanceof DiscreteValueGaussDistribution) {
- return _getParameters((DiscreteValueGaussDistribution)value);
- } else if (value instanceof DiscreteValueStatistics) {
- return _getParameters((DiscreteValueStatistics)value);
- } else if (value instanceof DiscreteValueUniformDistribution) {
- return _getParameters((DiscreteValueUniformDistribution)value);
- } else if (value instanceof DiscreteValueWeibullEstimatorsDistribution) {
- return _getParameters((DiscreteValueWeibullEstimatorsDistribution)value);
- } else if (value instanceof DiscreteValueConstant) {
- return _getParameters((DiscreteValueConstant)value);
- } else if (value instanceof DiscreteValueHistogram) {
- return _getParameters((DiscreteValueHistogram)value);
- } else if (value != null) {
- return _getParameters(value);
- } else {
- throw new IllegalArgumentException("Unhandled parameter types: " +
- Arrays.<Object>asList(value).toString());
- }
- }
-
-public String getModulePath() {
- String _basePath = this.getBasePath();
- String _plus = (_basePath + "/");
- String _moduleName = this.getModuleName();
- return (_plus + _moduleName);
- }
-
-@Override
-public String getSrcFile() {
- String _moduleName = this.getModuleName();
- return (_moduleName + ".cpp");
- }
-
-public String getIncPath() {
- String _modulePath = this.getModulePath();
- String _plus = (_modulePath + "/_inc/");
- String _incFile = this.getIncFile();
- return (_plus + _incFile);
- }
-
-public String getSrcPath() {
- String _modulePath = this.getModulePath();
- String _plus = (_modulePath + "/_src/");
- String _srcFile = this.getSrcFile();
- return (_plus + _srcFile);
- }
-
-public boolean isIncFileEmpty() {
- String _modulePath = this.getModulePath();
- String _plus = (_modulePath + "/_inc/");
- String _moduleName = this.getModuleName();
- String _plus_1 = (_plus + _moduleName);
- boolean _bufferExists = this.outputBuffer.bufferExists("H", _plus_1);
- return (!_bufferExists);
- }
-
-public boolean isSrcFileEmpty() {
- String _modulePath = this.getModulePath();
- String _plus = (_modulePath + "/_src/");
- String _moduleName = this.getModuleName();
- String _plus_1 = (_plus + _moduleName);
- boolean _bufferExists = this.outputBuffer.bufferExists("C", _plus_1);
- return (!_bufferExists);
- }
-
-public boolean incAppend(final String str) {
- String _modulePath = this.getModulePath();
- String _plus = (_modulePath + "/_inc/");
- String _moduleName = this.getModuleName();
- String _plus_1 = (_plus + _moduleName);
- return this.outputBuffer.appendTo("H", _plus_1, str);
- }
-
-public boolean srcAppend(final String str) {
- String _modulePath = this.getModulePath();
- String _plus = (_modulePath + "/_src/");
- String _moduleName = this.getModuleName();
- String _plus_1 = (_plus + _moduleName);
- return this.outputBuffer.appendTo("C", _plus_1, str);
- }
-}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/translationUnits/TicksUtilsTranslationUnit.java b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/translationUnits/TicksUtilsTranslationUnit.java
deleted file mode 100644
index f428eb6..0000000
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/translationUnits/TicksUtilsTranslationUnit.java
+++ /dev/null
@@ -1,421 +0,0 @@
-/**
- * Copyright (c) 2020 Robert Bosch GmbH.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- */
-package org.eclipse.app4mc.slg.commons.m2t.translationUnits;
-
-import org.eclipse.app4mc.amalthea.model.impl.DiscreteValueConstantImpl;
-import org.eclipse.app4mc.amalthea.model.impl.DiscreteValueStatisticsImpl;
-import org.eclipse.app4mc.slg.config.ConfigModel;
-import org.eclipse.app4mc.slg.config.TickType;
-import org.eclipse.app4mc.transformation.util.OutputBuffer;
-import org.eclipse.xtend2.lib.StringConcatenation;
-import org.eclipse.xtext.xbase.lib.Conversions;
-import org.eclipse.xtext.xbase.lib.IntegerRange;
-import org.eclipse.xtext.xbase.lib.IterableExtensions;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.Objects;
-
-@SuppressWarnings("all")
-public class TicksUtilsTranslationUnit extends TranslationUnit {
- private static final Logger LOG = LoggerFactory.getLogger(TicksUtilsTranslationUnit.class);
-
- public static String getModulePathStatic() {
- String _basePathStatic = "synthetic_gen";
- String _plus = (_basePathStatic + "/");
- String _moduleNameStatic = TicksUtilsTranslationUnit.getModuleNameStatic();
- return (_plus + _moduleNameStatic);
- }
-
- public static String getMakeFilePathStatic() {
- String _modulePathStatic = TicksUtilsTranslationUnit.getModulePathStatic();
- String _plus = (_modulePathStatic + "/");
- String _makeFileName = "CMakeLists.txt";
- return (_plus + _makeFileName);
- }
-
- public static String getModuleNameStatic() {
- return "ticksUtils";
- }
-
- public static String getLibName() {
- return "TICKS_UTILS";
- }
-
- public String getModuleName() {
- return TicksUtilsTranslationUnit.getModuleNameStatic();
- }
-
- public CharSequence getExecCall(final String params) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("executeTicks_");
- String _last = IterableExtensions.<String>last(((Iterable<String>)Conversions.doWrapArray(this.valueClass.toString().split("\\."))));
- _builder.append(_last);
- _builder.append("(");
- _builder.append(params);
- _builder.append(")");
- return _builder;
- }
-
- public String getIncFile() {
- String _moduleName = this.getModuleName();
- return (_moduleName + ".h");
- }
-
- private final ConfigModel configModel;
-
- private final Object valueClass;
-
-private OutputBuffer outputBuffer;
-
- public TicksUtilsTranslationUnit(final OutputBuffer outputBuffer, final ConfigModel configModel, final Object valueClass) {
- super();
- this.configModel = configModel;
- this.valueClass = valueClass;
- this.outputBuffer = outputBuffer;
- this.genFiles();
- }
-
- public boolean genFiles() {
- boolean _xblockexpression = false;
- {
- boolean _isIncFileEmpty = this.isIncFileEmpty();
- if (_isIncFileEmpty) {
- this.toH();
- }
- boolean _isSrcFileEmpty = this.isSrcFileEmpty();
- if (_isSrcFileEmpty) {
- this.toCPP();
- }
- this.srcAppend(this.generateTicks(this.valueClass));
- _xblockexpression = this.incAppend(this.generateTicksDecleration(this.valueClass));
- }
- return _xblockexpression;
- }
-
- private boolean toCPP() {
- boolean _xblockexpression = false;
- {
- String _incFile = this.getIncFile();
- String _plus = ("#include \"" + _incFile);
- String _plus_1 = (_plus + "\"\n");
- this.srcAppend(_plus_1);
- final String ticksCodeSnippet = this.configModel.getCustomTickImpl().getValue();
- String _xifexpression = null;
- boolean _isEnable = this.configModel.getCustomTickImpl().isEnable();
- if (_isEnable) {
- _xifexpression = ticksCodeSnippet;
- } else {
- _xifexpression = this.burnTicksDefault().toString();
- }
- final String burnTicksBody = _xifexpression;
- this.srcAppend(this.burnTicks(burnTicksBody).toString());
- _xblockexpression = this.srcAppend(this.burnTicksStatistics(this.configModel).toString());
- }
- return _xblockexpression;
- }
-
- private boolean toH() {
- boolean _xblockexpression = false;
- {
- this.incAppend(this.burnTicksDecleration().toString());
- _xblockexpression = this.incAppend(this.burnTicksStatisticsDecleration().toString());
- }
- return _xblockexpression;
- }
-
- private String generateTicks(final Object valueClass) {
- String _switchResult = null;
- boolean _matched = false;
- if (Objects.equal(valueClass, DiscreteValueConstantImpl.class)) {
- _matched=true;
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("void ");
- CharSequence _execCall = this.getExecCall("int ticks");
- _builder.append(_execCall);
- _builder.append(" {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("burnTicks(ticks);");
- _builder.newLine();
- _builder.append("}");
- _builder.newLine();
- _builder.newLine();
- _switchResult = _builder.toString();
- }
- if (!_matched) {
- if (Objects.equal(valueClass, DiscreteValueStatisticsImpl.class)) {
- _matched=true;
- StringConcatenation _builder_1 = new StringConcatenation();
- _builder_1.append("void ");
- CharSequence _execCall_1 = this.getExecCall("double average, int lowerBound, int upperBound");
- _builder_1.append(_execCall_1);
- _builder_1.append(" {");
- _builder_1.newLineIfNotEmpty();
- _builder_1.append("\t");
- _builder_1.append("burnTicksStatistics(average, lowerBound, upperBound);");
- _builder_1.newLine();
- _builder_1.append("}");
- _builder_1.newLine();
- _builder_1.newLine();
- _switchResult = _builder_1.toString();
- }
- }
- if (!_matched) {
- String _xblockexpression = null;
- {
- String _string = valueClass.toString();
- String _plus = ("Unsupported ticks type is used : " + _string);
- TicksUtilsTranslationUnit.LOG.error(_plus);
- _xblockexpression = "";
- }
- _switchResult = _xblockexpression;
- }
- return _switchResult;
- }
-
- private CharSequence burnTicks(final String burnTicksBody) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("void burnTicks(int ticks) {");
- _builder.newLine();
- _builder.append("\t");
- _builder.append(burnTicksBody, "\t");
- _builder.newLineIfNotEmpty();
- _builder.append("}");
- _builder.newLine();
- _builder.newLine();
- return _builder;
- }
-
- private String chooseTicks(final ConfigModel configModel) {
- String _switchResult = null;
- TickType _defaultTickType = configModel.getDefaultTickType();
- if (_defaultTickType != null) {
- switch (_defaultTickType) {
- case MINIMUM:
- _switchResult = "lowerBound";
- break;
- case MAXIMUM:
- _switchResult = "upperBound";
- break;
- case AVERAGE:
- _switchResult = "(int)average";
- break;
- default:
- _switchResult = "(int)average";
- break;
- }
- } else {
- _switchResult = "(int)average";
- }
- return _switchResult;
- }
-
- private CharSequence burnTicksStatistics(final ConfigModel configModel) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("void burnTicksStatistics(double average, int lowerBound, int upperBound) {");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("burnTicks(");
- String _chooseTicks = this.chooseTicks(configModel);
- _builder.append(_chooseTicks, "\t");
- _builder.append(");");
- _builder.newLineIfNotEmpty();
- _builder.append("}");
- _builder.newLine();
- _builder.newLine();
- return _builder;
- }
-
- private CharSequence burnTicksDefault() {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("\t");
- _builder.append("// default implementation of tick burning");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("int numLoops = ticks / 400; ");
- _builder.newLine();
- _builder.append("#\tif defined (__x86_64__)");
- _builder.newLine();
- _builder.append(" \t");
- _builder.append("for (int i = 0; i < numLoops; i++) {");
- _builder.newLine();
- {
- IntegerRange _upTo = new IntegerRange(1, 400);
- for(final Integer i : _upTo) {
- _builder.append(" \t\t");
- _builder.append("__asm volatile(\"nop\");");
- _builder.newLine();
- }
- }
- _builder.append(" \t\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("#\telif defined (__x86_32__) \t\t");
- _builder.newLine();
- _builder.append(" \t\t");
- _builder.append("for (int i = 0; i < numLoops; i++) {");
- _builder.newLine();
- {
- IntegerRange _upTo_1 = new IntegerRange(1, 400);
- for(final Integer i_1 : _upTo_1) {
- _builder.append(" \t\t\t \t");
- _builder.append("__asm volatile(\"mov r0, r0\");");
- _builder.newLine();
- }
- }
- _builder.append(" \t\t\t\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("#\telif defined (__aarch64__) \t\t");
- _builder.newLine();
- _builder.append(" \t");
- _builder.append("for (int i = 0; i < numLoops; i++) {");
- _builder.newLine();
- {
- IntegerRange _upTo_2 = new IntegerRange(1, 400);
- for(final Integer i_2 : _upTo_2) {
- _builder.append(" \t");
- _builder.append("__asm volatile(\"mov x0, x0\");");
- _builder.newLine();
- }
- }
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("#\tendif");
- _builder.newLine();
- return _builder;
- }
-
- private CharSequence burnTicksDecleration() {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("void burnTicks(int ticks);");
- _builder.newLine();
- _builder.newLine();
- return _builder;
- }
-
- private CharSequence burnTicksStatisticsDecleration() {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("void burnTicksStatistics(double average, int lowerBound, int upperBound);");
- _builder.newLine();
- _builder.newLine();
- return _builder;
- }
-
- private String generateTicksDecleration(final Object valueClass) {
- String _switchResult = null;
- boolean _matched = false;
- if (Objects.equal(valueClass, DiscreteValueConstantImpl.class)) {
- _matched=true;
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("void ");
- CharSequence _execCall = this.getExecCall("int ticks");
- _builder.append(_execCall);
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _switchResult = _builder.toString();
- }
- if (!_matched) {
- if (Objects.equal(valueClass, DiscreteValueStatisticsImpl.class)) {
- _matched=true;
- StringConcatenation _builder_1 = new StringConcatenation();
- _builder_1.append("void ");
- CharSequence _execCall_1 = this.getExecCall("double average, int lowerBound, int upperBound");
- _builder_1.append(_execCall_1);
- _builder_1.append(";");
- _builder_1.newLineIfNotEmpty();
- _builder_1.newLine();
- _switchResult = _builder_1.toString();
- }
- }
- if (!_matched) {
- String _xblockexpression = null;
- {
- String _string = valueClass.toString();
- String _plus = ("Unsupported ticks type is used : " + _string);
- TicksUtilsTranslationUnit.LOG.error(_plus);
- _xblockexpression = "";
- }
- _switchResult = _xblockexpression;
- }
- return _switchResult;
- }
-
-public String getBasePath() {
- return "synthetic_gen";
- }
-
-public String getModulePath() {
- String _basePath = this.getBasePath();
- String _plus = (_basePath + "/");
- String _moduleName = this.getModuleName();
- return (_plus + _moduleName);
- }
-
-@Override
-public String getSrcFile() {
- String _moduleName = this.getModuleName();
- return (_moduleName + ".cpp");
- }
-
-public String getIncPath() {
- String _modulePath = this.getModulePath();
- String _plus = (_modulePath + "/_inc/");
- String _incFile = this.getIncFile();
- return (_plus + _incFile);
- }
-
-public String getSrcPath() {
- String _modulePath = this.getModulePath();
- String _plus = (_modulePath + "/_src/");
- String _srcFile = this.getSrcFile();
- return (_plus + _srcFile);
- }
-
-public boolean isIncFileEmpty() {
- String _modulePath = this.getModulePath();
- String _plus = (_modulePath + "/_inc/");
- String _moduleName = this.getModuleName();
- String _plus_1 = (_plus + _moduleName);
- boolean _bufferExists = this.outputBuffer.bufferExists("H", _plus_1);
- return (!_bufferExists);
- }
-
-public boolean isSrcFileEmpty() {
- String _modulePath = this.getModulePath();
- String _plus = (_modulePath + "/_src/");
- String _moduleName = this.getModuleName();
- String _plus_1 = (_plus + _moduleName);
- boolean _bufferExists = this.outputBuffer.bufferExists("C", _plus_1);
- return (!_bufferExists);
- }
-
-public boolean incAppend(final String str) {
- String _modulePath = this.getModulePath();
- String _plus = (_modulePath + "/_inc/");
- String _moduleName = this.getModuleName();
- String _plus_1 = (_plus + _moduleName);
- return this.outputBuffer.appendTo("H", _plus_1, str);
- }
-
-public boolean srcAppend(final String str) {
- String _modulePath = this.getModulePath();
- String _plus = (_modulePath + "/_src/");
- String _moduleName = this.getModuleName();
- String _plus_1 = (_plus + _moduleName);
- return this.outputBuffer.appendTo("C", _plus_1, str);
- }
-}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/translationUnits/TranslationUnit.java b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/translationUnits/TranslationUnit.java
deleted file mode 100644
index 68aa172..0000000
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/translationUnits/TranslationUnit.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/**
- * Copyright (c) 2020 Robert Bosch GmbH.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- */
-package org.eclipse.app4mc.slg.commons.m2t.translationUnits;
-
-@SuppressWarnings("all")
-public class TranslationUnit {
- private String path;
- private String call;
- private String incFile;
- private String srcFile;
-
- public TranslationUnit(final String path, final String call, final String incFile, final String srcFile) {
- this.path = path;
- this.call = call;
- this.incFile = incFile;
- this.srcFile = srcFile;
- }
-
- public TranslationUnit() {
- this("MODULE_PATH", "CALL", "MODULE.H", "MODULE.CPP"); // dummy values for unused data
- }
-
- public String getCall() {
- return this.call;
- }
-
- public String setCall(final String _call) {
- return this.call = _call;
- }
-
- public String getPath() {
- return this.path;
- }
-
- public String setPath(final String _path) {
- return this.path = _path;
- }
-
- public String getSrcFile() {
- return this.srcFile;
- }
-
- public String getIncFile() {
- return this.incFile;
- }
-
- public String getExtendedIncPath() {
- return ((this.path + "/_inc/") + this.incFile);
- }
-
- public String getExtendedSrcPath() {
- return ((this.path + "/_src/") + this.srcFile);
- }
-}
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/customization/CustomRunnableTranslationUnit.xtend b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/customization/CustomRunnableTranslationUnit.xtend
index e3ce4d9..8c9002c 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/customization/CustomRunnableTranslationUnit.xtend
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/customization/CustomRunnableTranslationUnit.xtend
@@ -25,8 +25,8 @@
import org.eclipse.app4mc.amalthea.model.Task
import org.eclipse.app4mc.amalthea.model.Ticks
import org.eclipse.app4mc.slg.commons.m2t.transformers.ActivityGraphItemTransformer
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.RunnableTranslationUnit
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TicksTranslationUnit
+import org.eclipse.app4mc.slg.commons.m2t.generators.RunnableTranslationUnit
+import org.eclipse.app4mc.slg.commons.m2t.generators.TicksTranslationUnit
import org.eclipse.app4mc.transformation.util.OutputBuffer
class CustomRunnableTranslationUnit extends RunnableTranslationUnit {
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/CodeSnippet.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/CodeSnippet.java
similarity index 95%
rename from load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/CodeSnippet.java
rename to load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/CodeSnippet.java
index 99afb05..722bb21 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/CodeSnippet.java
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/CodeSnippet.java
@@ -13,7 +13,7 @@
********************************************************************************
*/
-package org.eclipse.app4mc.slg.linux.translationUnits;
+package org.eclipse.app4mc.slg.linux.generators;
public class CodeSnippet {
public final int ticks;
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxBaseTranslationUnit.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxBaseTranslationUnit.java
similarity index 93%
rename from load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxBaseTranslationUnit.java
rename to load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxBaseTranslationUnit.java
index 28b5161..3f75c23 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxBaseTranslationUnit.java
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxBaseTranslationUnit.java
@@ -13,9 +13,9 @@
********************************************************************************
*/
-package org.eclipse.app4mc.slg.linux.translationUnits;
+package org.eclipse.app4mc.slg.linux.generators;
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TranslationUnit;
+import org.eclipse.app4mc.slg.commons.m2t.generators.TranslationUnit;
import org.eclipse.app4mc.transformation.util.OutputBuffer;
public abstract class LinuxBaseTranslationUnit extends TranslationUnit {
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxLabelAccessTranslationUnit.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxLabelAccessTranslationUnit.java
similarity index 97%
rename from load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxLabelAccessTranslationUnit.java
rename to load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxLabelAccessTranslationUnit.java
index 5a06d27..96975c1 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxLabelAccessTranslationUnit.java
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxLabelAccessTranslationUnit.java
@@ -13,7 +13,7 @@
********************************************************************************
*/
-package org.eclipse.app4mc.slg.linux.translationUnits;
+package org.eclipse.app4mc.slg.linux.generators;
import static org.eclipse.app4mc.amalthea.model.LabelAccessEnum._UNDEFINED_;
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxLabelGenerator.xtend b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxLabelGenerator.xtend
similarity index 98%
rename from load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxLabelGenerator.xtend
rename to load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxLabelGenerator.xtend
index 9fe8072..d430437 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxLabelGenerator.xtend
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxLabelGenerator.xtend
@@ -13,7 +13,7 @@
********************************************************************************
*/
-package org.eclipse.app4mc.slg.linux.translationUnits
+package org.eclipse.app4mc.slg.linux.generators
import org.eclipse.app4mc.amalthea.model.Label
import org.eclipse.app4mc.slg.commons.m2t.AmaltheaModelUtils
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxLabelTranslationUnit.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxLabelTranslationUnit.java
similarity index 97%
rename from load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxLabelTranslationUnit.java
rename to load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxLabelTranslationUnit.java
index eab8d23..cbc1731 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxLabelTranslationUnit.java
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxLabelTranslationUnit.java
@@ -11,7 +11,7 @@
* Robert Bosch GmbH - initial API and implementation
*/
-package org.eclipse.app4mc.slg.linux.translationUnits;
+package org.eclipse.app4mc.slg.linux.generators;
import org.eclipse.app4mc.amalthea.model.Label;
import org.eclipse.app4mc.transformation.util.OutputBuffer;
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxRealisiticSyntheticGenerator.xtend b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxRealisiticSyntheticGenerator.xtend
similarity index 99%
rename from load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxRealisiticSyntheticGenerator.xtend
rename to load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxRealisiticSyntheticGenerator.xtend
index a26cf1b..fc58e9b 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxRealisiticSyntheticGenerator.xtend
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxRealisiticSyntheticGenerator.xtend
@@ -13,7 +13,7 @@
* *******************************************************************************
*/
-package org.eclipse.app4mc.slg.linux.translationUnits
+package org.eclipse.app4mc.slg.linux.generators
import com.google.inject.Singleton
import java.util.ArrayList
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxRealisiticSyntheticTranslationUnit.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxRealisiticSyntheticTranslationUnit.java
similarity index 95%
rename from load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxRealisiticSyntheticTranslationUnit.java
rename to load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxRealisiticSyntheticTranslationUnit.java
index d92518d..0a62c3a 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxRealisiticSyntheticTranslationUnit.java
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxRealisiticSyntheticTranslationUnit.java
@@ -11,7 +11,7 @@
* Robert Bosch GmbH - initial API and implementation
*/
-package org.eclipse.app4mc.slg.linux.translationUnits;
+package org.eclipse.app4mc.slg.linux.generators;
import org.eclipse.app4mc.slg.config.ConfigModel;
import org.eclipse.app4mc.transformation.util.OutputBuffer;
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxRunnableGenerator.xtend b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxRunnableGenerator.xtend
similarity index 99%
rename from load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxRunnableGenerator.xtend
rename to load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxRunnableGenerator.xtend
index 6ca0cb7..b0da85c 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxRunnableGenerator.xtend
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxRunnableGenerator.xtend
@@ -13,7 +13,7 @@
********************************************************************************
*/
-package org.eclipse.app4mc.slg.linux.translationUnits
+package org.eclipse.app4mc.slg.linux.generators
import java.util.HashMap
import org.eclipse.app4mc.amalthea.model.Runnable
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxRunnableTranslationUnit.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxRunnableTranslationUnit.java
similarity index 96%
rename from load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxRunnableTranslationUnit.java
rename to load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxRunnableTranslationUnit.java
index 50308be..f053775 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxRunnableTranslationUnit.java
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxRunnableTranslationUnit.java
@@ -10,7 +10,7 @@
* Contributors:
* Robert Bosch GmbH - initial API and implementation
*/
-package org.eclipse.app4mc.slg.linux.translationUnits;
+package org.eclipse.app4mc.slg.linux.generators;
import java.util.Properties;
import java.util.Set;
@@ -25,8 +25,8 @@
import org.eclipse.app4mc.amalthea.model.Runnable;
import org.eclipse.app4mc.amalthea.model.SingleValueStatistic;
import org.eclipse.app4mc.amalthea.model.Ticks;
+import org.eclipse.app4mc.slg.linux.generators.LinuxRunnableGenerator.Calculation;
import org.eclipse.app4mc.slg.linux.transformers.LinuxActivityGraphItemTransformer;
-import org.eclipse.app4mc.slg.linux.translationUnits.LinuxRunnableGenerator.Calculation;
import org.eclipse.app4mc.transformation.util.OutputBuffer;
public class LinuxRunnableTranslationUnit extends LinuxSyntheticTranslationUnit {
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxStimulusGenerator.xtend b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxStimulusGenerator.xtend
similarity index 97%
rename from load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxStimulusGenerator.xtend
rename to load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxStimulusGenerator.xtend
index 55847ea..caa544b 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxStimulusGenerator.xtend
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxStimulusGenerator.xtend
@@ -13,7 +13,7 @@
********************************************************************************
*/
-package org.eclipse.app4mc.slg.linux.translationUnits
+package org.eclipse.app4mc.slg.linux.generators
import java.util.List
import org.eclipse.app4mc.amalthea.model.PeriodicStimulus
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxStimulusTranslationUnit.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxStimulusTranslationUnit.java
similarity index 94%
rename from load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxStimulusTranslationUnit.java
rename to load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxStimulusTranslationUnit.java
index 072f0da..6e80e42 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxStimulusTranslationUnit.java
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxStimulusTranslationUnit.java
@@ -11,7 +11,7 @@
* Robert Bosch GmbH - initial API and implementation
*/
-package org.eclipse.app4mc.slg.linux.translationUnits;
+package org.eclipse.app4mc.slg.linux.generators;
import java.util.ArrayList;
import java.util.List;
@@ -54,7 +54,7 @@
Stimulus lastStimulus = stimuli.isEmpty() ? null : stimuli.get(stimuli.size() - 1);
boolean enableInstrumentation = Boolean.parseBoolean(properties.getProperty("enableInstrumentation"));
- srcAppend(LinuxStimulusGenerator.toSrc(stimuli, lastStimulus, enableInstrumentation).toString());
+ srcAppend(LinuxStimulusGenerator.toSrc(stimuli, lastStimulus, enableInstrumentation));
}
}
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxSyntheticTranslationUnit.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxSyntheticTranslationUnit.java
similarity index 94%
rename from load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxSyntheticTranslationUnit.java
rename to load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxSyntheticTranslationUnit.java
index 53ecc50..12ea3dd 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxSyntheticTranslationUnit.java
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxSyntheticTranslationUnit.java
@@ -13,7 +13,7 @@
********************************************************************************
*/
-package org.eclipse.app4mc.slg.linux.translationUnits;
+package org.eclipse.app4mc.slg.linux.generators;
import org.eclipse.app4mc.transformation.util.OutputBuffer;
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxTaskGenerator.xtend b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxTaskGenerator.xtend
similarity index 96%
rename from load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxTaskGenerator.xtend
rename to load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxTaskGenerator.xtend
index 0d93a16..1a49478 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxTaskGenerator.xtend
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxTaskGenerator.xtend
@@ -13,7 +13,7 @@
* *******************************************************************************
*/
-package org.eclipse.app4mc.slg.linux.translationUnits
+package org.eclipse.app4mc.slg.linux.generators
import java.util.List
import org.eclipse.app4mc.amalthea.model.Process
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxTaskTranslationUnit.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxTaskTranslationUnit.java
similarity index 95%
rename from load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxTaskTranslationUnit.java
rename to load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxTaskTranslationUnit.java
index 83de2af..f66de2f 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxTaskTranslationUnit.java
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxTaskTranslationUnit.java
@@ -10,7 +10,7 @@
* Contributors:
* Robert Bosch GmbH - initial API and implementation
*/
-package org.eclipse.app4mc.slg.linux.translationUnits;
+package org.eclipse.app4mc.slg.linux.generators;
import java.util.ArrayList;
import java.util.List;
@@ -22,17 +22,14 @@
import org.eclipse.app4mc.amalthea.model.Group;
import org.eclipse.app4mc.amalthea.model.InterProcessStimulus;
import org.eclipse.app4mc.amalthea.model.InterProcessTrigger;
+import org.eclipse.app4mc.amalthea.model.Process;
import org.eclipse.app4mc.amalthea.model.ProcessingUnit;
import org.eclipse.app4mc.amalthea.model.ProcessingUnitDefinition;
import org.eclipse.app4mc.amalthea.model.Runnable;
-import org.eclipse.app4mc.amalthea.model.Process;
import org.eclipse.app4mc.amalthea.model.RunnableCall;
-import org.eclipse.app4mc.amalthea.model.Stimulus;
import org.eclipse.app4mc.amalthea.model.Task;
import org.eclipse.app4mc.amalthea.model.util.DeploymentUtil;
import org.eclipse.app4mc.transformation.util.OutputBuffer;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.xtend2.lib.StringConcatenation;
public class LinuxTaskTranslationUnit extends LinuxSyntheticTranslationUnit {
public static String getModulePathStatic() {
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxTicksGenerator.xtend b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxTicksGenerator.xtend
similarity index 97%
rename from load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxTicksGenerator.xtend
rename to load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxTicksGenerator.xtend
index 907bf36..68b836e 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxTicksGenerator.xtend
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxTicksGenerator.xtend
@@ -13,7 +13,7 @@
* *******************************************************************************
*/
-package org.eclipse.app4mc.slg.linux.translationUnits
+package org.eclipse.app4mc.slg.linux.generators
import org.eclipse.app4mc.amalthea.model.DiscreteValueBetaDistribution
import org.eclipse.app4mc.amalthea.model.DiscreteValueBoundaries
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxTicksTranslationUnit.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxTicksTranslationUnit.java
similarity index 95%
rename from load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxTicksTranslationUnit.java
rename to load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxTicksTranslationUnit.java
index e97adb4..e931082 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxTicksTranslationUnit.java
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxTicksTranslationUnit.java
@@ -11,7 +11,7 @@
* Robert Bosch GmbH - initial API and implementation
*/
-package org.eclipse.app4mc.slg.linux.translationUnits;
+package org.eclipse.app4mc.slg.linux.generators;
import org.eclipse.app4mc.amalthea.model.Ticks;
import org.eclipse.app4mc.transformation.util.OutputBuffer;
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxTicksUtilsGenerator.xtend b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxTicksUtilsGenerator.xtend
similarity index 98%
rename from load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxTicksUtilsGenerator.xtend
rename to load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxTicksUtilsGenerator.xtend
index cabdf5c..70dfdf9 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxTicksUtilsGenerator.xtend
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxTicksUtilsGenerator.xtend
@@ -13,7 +13,7 @@
********************************************************************************
*/
-package org.eclipse.app4mc.slg.linux.translationUnits
+package org.eclipse.app4mc.slg.linux.generators
import org.eclipse.app4mc.amalthea.model.impl.DiscreteValueConstantImpl
import org.eclipse.app4mc.amalthea.model.impl.DiscreteValueStatisticsImpl
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxTicksUtilsTranslationUnit.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxTicksUtilsTranslationUnit.java
similarity index 97%
rename from load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxTicksUtilsTranslationUnit.java
rename to load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxTicksUtilsTranslationUnit.java
index 314f38b..f740a96 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxTicksUtilsTranslationUnit.java
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxTicksUtilsTranslationUnit.java
@@ -11,7 +11,7 @@
* Robert Bosch GmbH - initial API and implementation
*/
-package org.eclipse.app4mc.slg.linux.translationUnits;
+package org.eclipse.app4mc.slg.linux.generators;
import org.eclipse.app4mc.slg.config.ConfigModel;
import org.eclipse.app4mc.transformation.util.OutputBuffer;
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxActivityGraphItemTransformer.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxActivityGraphItemTransformer.java
index 1e18490..665df56 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxActivityGraphItemTransformer.java
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxActivityGraphItemTransformer.java
@@ -21,7 +21,7 @@
import org.eclipse.app4mc.amalthea.model.LabelAccess;
import org.eclipse.app4mc.amalthea.model.Ticks;
import org.eclipse.app4mc.slg.commons.m2t.AbstractSLGTransformer;
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TranslationUnit;
+import org.eclipse.app4mc.slg.commons.m2t.generators.TranslationUnit;
import com.google.inject.Inject;
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxBaseTransformer.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxBaseTransformer.java
index cb481d9..5716b86 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxBaseTransformer.java
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxBaseTransformer.java
@@ -16,7 +16,7 @@
package org.eclipse.app4mc.slg.linux.transformers;
import org.eclipse.app4mc.slg.commons.m2t.AbstractSLGTransformer;
-import org.eclipse.app4mc.slg.linux.translationUnits.LinuxBaseTranslationUnit;
+import org.eclipse.app4mc.slg.linux.generators.LinuxBaseTranslationUnit;
public class LinuxBaseTransformer<T extends LinuxBaseTranslationUnit> extends AbstractSLGTransformer {
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxLabelAccessTransformer.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxLabelAccessTransformer.java
index d7c969f..5619c49 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxLabelAccessTransformer.java
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxLabelAccessTransformer.java
@@ -17,8 +17,8 @@
import org.eclipse.app4mc.amalthea.model.LabelAccess;
import org.eclipse.app4mc.slg.commons.m2t.AbstractSLGTransformer;
-import org.eclipse.app4mc.slg.linux.translationUnits.LinuxLabelAccessTranslationUnit;
-import org.eclipse.app4mc.slg.linux.translationUnits.LinuxLabelTranslationUnit;
+import org.eclipse.app4mc.slg.linux.generators.LinuxLabelAccessTranslationUnit;
+import org.eclipse.app4mc.slg.linux.generators.LinuxLabelTranslationUnit;
import org.eclipse.app4mc.transformation.util.OutputBuffer;
import com.google.inject.Inject;
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxLabelTransformer.xtend b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxLabelTransformer.xtend
index ee9aa7a..813df19 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxLabelTransformer.xtend
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxLabelTransformer.xtend
@@ -17,7 +17,7 @@
import com.google.inject.Singleton
import org.eclipse.app4mc.amalthea.model.Label
-import org.eclipse.app4mc.slg.linux.translationUnits.LinuxLabelTranslationUnit
+import org.eclipse.app4mc.slg.linux.generators.LinuxLabelTranslationUnit
@Singleton
class LinuxLabelTransformer extends LinuxSyntheticTransformer<LinuxLabelTranslationUnit> {
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxRealisticCodeTransformer.xtend b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxRealisticCodeTransformer.xtend
index 0053584..204de07 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxRealisticCodeTransformer.xtend
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxRealisticCodeTransformer.xtend
@@ -19,7 +19,7 @@
import com.google.inject.Singleton
import org.eclipse.app4mc.slg.config.ConfigModel
import org.eclipse.app4mc.slg.commons.m2t.CustomObjectsStore
-import org.eclipse.app4mc.slg.linux.translationUnits.LinuxRealisiticSyntheticTranslationUnit
+import org.eclipse.app4mc.slg.linux.generators.LinuxRealisiticSyntheticTranslationUnit
@Singleton
class LinuxRealisticCodeTransformer extends LinuxSyntheticTransformer<LinuxRealisiticSyntheticTranslationUnit> {
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxRunnableTransformer.xtend b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxRunnableTransformer.xtend
index c817680..2a12cda 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxRunnableTransformer.xtend
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxRunnableTransformer.xtend
@@ -19,8 +19,8 @@
import com.google.inject.Singleton
import java.util.Properties
import org.eclipse.app4mc.amalthea.model.Runnable
-import org.eclipse.app4mc.slg.linux.translationUnits.LinuxRunnableTranslationUnit
-import org.eclipse.app4mc.slg.linux.translationUnits.LinuxSyntheticTranslationUnit
+import org.eclipse.app4mc.slg.linux.generators.LinuxRunnableTranslationUnit
+import org.eclipse.app4mc.slg.linux.generators.LinuxSyntheticTranslationUnit
@Singleton
class LinuxRunnableTransformer extends LinuxSyntheticTransformer<LinuxSyntheticTranslationUnit> {
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxStimulusTransformer.xtend b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxStimulusTransformer.xtend
index e869e59..3661863 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxStimulusTransformer.xtend
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxStimulusTransformer.xtend
@@ -18,8 +18,8 @@
import com.google.inject.Singleton
import java.util.List
import org.eclipse.app4mc.amalthea.model.Stimulus
-import org.eclipse.app4mc.slg.linux.translationUnits.LinuxStimulusTranslationUnit
-import org.eclipse.app4mc.slg.linux.translationUnits.LinuxSyntheticTranslationUnit
+import org.eclipse.app4mc.slg.linux.generators.LinuxStimulusTranslationUnit
+import org.eclipse.app4mc.slg.linux.generators.LinuxSyntheticTranslationUnit
@Singleton
class LinuxStimulusTransformer extends LinuxSyntheticTransformer<LinuxSyntheticTranslationUnit> {
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxSyntheticTransformer.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxSyntheticTransformer.java
index 67efbd6..d9063b5 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxSyntheticTransformer.java
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxSyntheticTransformer.java
@@ -17,7 +17,7 @@
import java.util.Properties;
-import org.eclipse.app4mc.slg.linux.translationUnits.LinuxBaseTranslationUnit;
+import org.eclipse.app4mc.slg.linux.generators.LinuxBaseTranslationUnit;
import org.eclipse.app4mc.transformation.util.OutputBuffer;
import com.google.inject.Inject;
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxTaskTransformer.xtend b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxTaskTransformer.xtend
index e745b91..344e300 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxTaskTransformer.xtend
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxTaskTransformer.xtend
@@ -17,7 +17,7 @@
import com.google.inject.Singleton
import org.eclipse.app4mc.amalthea.model.Task
-import org.eclipse.app4mc.slg.linux.translationUnits.LinuxTaskTranslationUnit
+import org.eclipse.app4mc.slg.linux.generators.LinuxTaskTranslationUnit
@Singleton
class LinuxTaskTransformer extends LinuxSyntheticTransformer<LinuxTaskTranslationUnit> {
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxTicksTransformer.xtend b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxTicksTransformer.xtend
index 35b19e9..b7b001d 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxTicksTransformer.xtend
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxTicksTransformer.xtend
@@ -19,7 +19,7 @@
import com.google.inject.Singleton
import org.eclipse.app4mc.amalthea.model.Ticks
import org.eclipse.app4mc.slg.commons.m2t.AbstractSLGTransformer
-import org.eclipse.app4mc.slg.linux.translationUnits.LinuxTicksTranslationUnit
+import org.eclipse.app4mc.slg.linux.generators.LinuxTicksTranslationUnit
import org.eclipse.app4mc.transformation.util.OutputBuffer
@Singleton
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxTicksUtilsTransformer.xtend b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxTicksUtilsTransformer.xtend
index d1a4798..f7e7dff 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxTicksUtilsTransformer.xtend
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxTicksUtilsTransformer.xtend
@@ -20,7 +20,7 @@
import org.eclipse.app4mc.amalthea.model.IDiscreteValueDeviation
import org.eclipse.app4mc.slg.commons.m2t.CustomObjectsStore
import org.eclipse.app4mc.slg.config.ConfigModel
-import org.eclipse.app4mc.slg.linux.translationUnits.LinuxTicksUtilsTranslationUnit
+import org.eclipse.app4mc.slg.linux.generators.LinuxTicksUtilsTranslationUnit
@Singleton
class LinuxTicksUtilsTransformer extends LinuxSyntheticTransformer<LinuxTicksUtilsTranslationUnit> {
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosChannelSendTranslationUnit.java b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosChannelSendTranslationUnit.java
similarity index 95%
rename from load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosChannelSendTranslationUnit.java
rename to load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosChannelSendTranslationUnit.java
index 09993c0..6e15662 100644
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosChannelSendTranslationUnit.java
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosChannelSendTranslationUnit.java
@@ -11,10 +11,10 @@
* Robert Bosch GmbH - initial API and implementation
*/
-package org.eclipse.app4mc.slg.ros2.translationUnits;
+package org.eclipse.app4mc.slg.ros2.generators;
import org.eclipse.app4mc.amalthea.model.ChannelSend;
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TranslationUnit;
+import org.eclipse.app4mc.slg.commons.m2t.generators.TranslationUnit;
import org.eclipse.app4mc.transformation.util.OutputBuffer;
public class RosChannelSendTranslationUnit extends TranslationUnit {
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosChannelSendUtilsTranslationUnit.java b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosChannelSendUtilsTranslationUnit.java
similarity index 97%
rename from load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosChannelSendUtilsTranslationUnit.java
rename to load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosChannelSendUtilsTranslationUnit.java
index 30160f3..19dfb15 100644
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosChannelSendUtilsTranslationUnit.java
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosChannelSendUtilsTranslationUnit.java
@@ -11,13 +11,13 @@
* Robert Bosch GmbH - initial API and implementation
*/
-package org.eclipse.app4mc.slg.ros2.translationUnits;
+package org.eclipse.app4mc.slg.ros2.generators;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.app4mc.amalthea.model.ChannelSend;
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TranslationUnit;
+import org.eclipse.app4mc.slg.commons.m2t.generators.TranslationUnit;
import org.eclipse.app4mc.slg.ros2.transformers.RosChannelSendUtilsGenerator;
import org.eclipse.app4mc.transformation.util.OutputBuffer;
import org.eclipse.xtend2.lib.StringConcatenation;
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosInterProcessTriggerTranslationUnit.java b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosInterProcessTriggerTranslationUnit.java
similarity index 95%
rename from load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosInterProcessTriggerTranslationUnit.java
rename to load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosInterProcessTriggerTranslationUnit.java
index 4cde311..357d340 100644
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosInterProcessTriggerTranslationUnit.java
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosInterProcessTriggerTranslationUnit.java
@@ -11,10 +11,10 @@
* Robert Bosch GmbH - initial API and implementation
*/
-package org.eclipse.app4mc.slg.ros2.translationUnits;
+package org.eclipse.app4mc.slg.ros2.generators;
import org.eclipse.app4mc.amalthea.model.InterProcessTrigger;
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TranslationUnit;
+import org.eclipse.app4mc.slg.commons.m2t.generators.TranslationUnit;
import org.eclipse.app4mc.transformation.util.OutputBuffer;
public class RosInterProcessTriggerTranslationUnit extends TranslationUnit {
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosInterProcessTriggerUtilsTranslationUnit.java b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosInterProcessTriggerUtilsTranslationUnit.java
similarity index 98%
rename from load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosInterProcessTriggerUtilsTranslationUnit.java
rename to load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosInterProcessTriggerUtilsTranslationUnit.java
index 4fa6032..51322ec 100644
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosInterProcessTriggerUtilsTranslationUnit.java
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosInterProcessTriggerUtilsTranslationUnit.java
@@ -11,10 +11,10 @@
* Robert Bosch GmbH - initial API and implementation
*/
-package org.eclipse.app4mc.slg.ros2.translationUnits;
+package org.eclipse.app4mc.slg.ros2.generators;
import org.eclipse.app4mc.amalthea.model.InterProcessTrigger;
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TranslationUnit;
+import org.eclipse.app4mc.slg.commons.m2t.generators.TranslationUnit;
import org.eclipse.app4mc.slg.ros2.transformers.utils.Utils;
import org.eclipse.app4mc.transformation.util.OutputBuffer;
import org.eclipse.xtend2.lib.StringConcatenation;
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosIpStimulusTranslationunit.java b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosIpStimulusTranslationunit.java
similarity index 96%
rename from load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosIpStimulusTranslationunit.java
rename to load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosIpStimulusTranslationunit.java
index e4239af..55c79a9 100644
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosIpStimulusTranslationunit.java
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosIpStimulusTranslationunit.java
@@ -11,10 +11,10 @@
* Robert Bosch GmbH - initial API and implementation
*/
-package org.eclipse.app4mc.slg.ros2.translationUnits;
+package org.eclipse.app4mc.slg.ros2.generators;
import org.eclipse.app4mc.amalthea.model.InterProcessStimulus;
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TranslationUnit;
+import org.eclipse.app4mc.slg.commons.m2t.generators.TranslationUnit;
import org.eclipse.app4mc.slg.ros2.transformers.utils.Utils;
import org.eclipse.app4mc.transformation.util.OutputBuffer;
import org.eclipse.xtend2.lib.StringConcatenation;
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosLabelAccessTranslationUnit.java b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosLabelAccessTranslationUnit.java
similarity index 97%
rename from load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosLabelAccessTranslationUnit.java
rename to load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosLabelAccessTranslationUnit.java
index 53ab6d3..b958fdd 100644
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosLabelAccessTranslationUnit.java
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosLabelAccessTranslationUnit.java
@@ -11,7 +11,7 @@
* Robert Bosch GmbH - initial API and implementation
*/
-package org.eclipse.app4mc.slg.ros2.translationUnits;
+package org.eclipse.app4mc.slg.ros2.generators;
import java.util.Arrays;
@@ -21,7 +21,7 @@
import org.eclipse.app4mc.amalthea.model.MinAvgMaxStatistic;
import org.eclipse.app4mc.amalthea.model.NumericStatistic;
import org.eclipse.app4mc.amalthea.model.SingleValueStatistic;
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TranslationUnit;
+import org.eclipse.app4mc.slg.commons.m2t.generators.TranslationUnit;
import org.eclipse.app4mc.transformation.util.OutputBuffer;
public class RosLabelAccessTranslationUnit extends TranslationUnit {
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosLabelTranslationUnit.java b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosLabelTranslationUnit.java
similarity index 95%
rename from load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosLabelTranslationUnit.java
rename to load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosLabelTranslationUnit.java
index bbe78e9..16c78dd 100644
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosLabelTranslationUnit.java
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosLabelTranslationUnit.java
@@ -11,10 +11,10 @@
* Robert Bosch GmbH - initial API and implementation
*/
-package org.eclipse.app4mc.slg.ros2.translationUnits;
+package org.eclipse.app4mc.slg.ros2.generators;
import org.eclipse.app4mc.amalthea.model.Label;
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.LabelTranslationUnit;
+import org.eclipse.app4mc.slg.commons.m2t.generators.LabelTranslationUnit;
import org.eclipse.app4mc.transformation.util.OutputBuffer;
import org.eclipse.xtend2.lib.StringConcatenation;
@@ -54,17 +54,14 @@
}
@Override
- public boolean genFiles() {
- boolean _xblockexpression = false;
- {
- if (this.isSrcFileEmpty()) {
- this.srcAppend("#include \"" + this.getIncFile() + "\"\n\n");
- this.srcAppend("#include <stdlib.h>\n");
+ public void genFiles() {
+ if (isSrcFileEmpty()) {
+ srcAppend("#include \"" + getIncFile() + "\"\n\n");
+ srcAppend("#include <stdlib.h>\n");
}
- this.incAppend(this.toH());
- _xblockexpression = this.srcAppend(this.toCpp());
- }
- return _xblockexpression;
+ incAppend(this.toH());
+ srcAppend(this.toCpp());
+
}
private String toH() {
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosRunnableTranslationUnit.java b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosRunnableTranslationUnit.java
new file mode 100644
index 0000000..df00a59
--- /dev/null
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosRunnableTranslationUnit.java
@@ -0,0 +1,300 @@
+/**
+ * Copyright (c) 2020-2021 Robert Bosch GmbH.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Robert Bosch GmbH - initial API and implementation
+ */
+
+package org.eclipse.app4mc.slg.ros2.generators;
+
+import java.util.ArrayList;
+import java.util.LinkedHashSet;
+import java.util.function.Consumer;
+import org.eclipse.app4mc.amalthea.model.ActivityGraph;
+import org.eclipse.app4mc.amalthea.model.ActivityGraphItem;
+import org.eclipse.app4mc.amalthea.model.BooleanObject;
+import org.eclipse.app4mc.amalthea.model.ChannelSend;
+import org.eclipse.app4mc.amalthea.model.InterProcessTrigger;
+import org.eclipse.app4mc.amalthea.model.Value;
+import org.eclipse.app4mc.slg.commons.m2t.generators.RunnableTranslationUnit;
+import org.eclipse.app4mc.slg.commons.m2t.generators.TranslationUnit;
+import org.eclipse.app4mc.slg.commons.m2t.transformers.ActivityGraphItemTransformer;
+import org.eclipse.app4mc.slg.ros2.transformers.utils.Utils;
+import org.eclipse.app4mc.transformation.util.OutputBuffer;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.EMap;
+import org.eclipse.xtend2.lib.StringConcatenation;
+import org.eclipse.xtext.xbase.lib.StringExtensions;
+
+public class RosRunnableTranslationUnit extends RunnableTranslationUnit {
+ private String param;
+
+ private String nodeParam;
+
+ private boolean measure_performance;
+
+ private ArrayList<String> publishers;
+
+ private ArrayList<String> client_declarations;
+
+ private ArrayList<String> client_inits;
+
+ public RosRunnableTranslationUnit(final OutputBuffer outputBuffer, final ActivityGraphItemTransformer transformer,
+ final org.eclipse.app4mc.amalthea.model.Runnable runnable) {
+ super(outputBuffer, transformer, runnable);
+ }
+
+ @Override
+ public String getCall() {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("run_");
+ String _name = this.runnable.getName();
+ _builder.append(_name);
+ _builder.append("(");
+ _builder.append(this.param);
+ _builder.append(")");
+ return _builder.toString();
+ }
+
+ public String getNodeCall() {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("run_");
+ String _name = this.runnable.getName();
+ _builder.append(_name);
+ _builder.append("(");
+ _builder.append(this.nodeParam);
+ _builder.append(")");
+ return _builder.toString();
+ }
+
+ public ArrayList<String> getPublishers() {
+ return this.publishers;
+ }
+
+ public ArrayList<String> getClientDeclarations() {
+ return this.client_declarations;
+ }
+
+ public ArrayList<String> getClientInits() {
+ return this.client_inits;
+ }
+
+ @Override
+ public void genFiles() {
+ this.param = "";
+ this.nodeParam = "";
+ ArrayList<String> _arrayList = new ArrayList<String>();
+ this.publishers = _arrayList;
+ ArrayList<String> _arrayList_1 = new ArrayList<String>();
+ this.client_declarations = _arrayList_1;
+ ArrayList<String> _arrayList_2 = new ArrayList<String>();
+ this.client_inits = _arrayList_2;
+ boolean _isSrcFileEmpty = this.isSrcFileEmpty();
+ if (_isSrcFileEmpty) {
+ String _incFile = this.getIncFile();
+ String _plus = ("#include \"" + _incFile);
+ String _plus_1 = (_plus + "\"\n");
+ this.srcAppend(_plus_1);
+ }
+ final LinkedHashSet<String> includes = new LinkedHashSet<String>();
+ final ArrayList<String> calls = new ArrayList<String>();
+ EMap<String, Value> _customProperties = null;
+ if (this.runnable != null) {
+ _customProperties = this.runnable.getCustomProperties();
+ }
+ Value _get = null;
+ if (_customProperties != null) {
+ _get = _customProperties.get("measure_performance");
+ }
+ boolean _isValue = false;
+ if (((BooleanObject) _get) != null) {
+ _isValue = ((BooleanObject) _get).isValue();
+ }
+ if (_isValue) {
+ includes.add("aml.h");
+ this.measure_performance = true;
+ }
+ ActivityGraph _activityGraph = null;
+ if (this.runnable != null) {
+ _activityGraph = this.runnable.getActivityGraph();
+ }
+ EList<ActivityGraphItem> _items = null;
+ if (_activityGraph != null) {
+ _items = _activityGraph.getItems();
+ }
+ final Consumer<ActivityGraphItem> _function = (ActivityGraphItem item) -> {
+ final TranslationUnit tmp = this.callGraphItemTransformer.transform(((ActivityGraphItem) item));
+ if (((!StringExtensions.isNullOrEmpty(tmp.getIncFile()))
+ && (!this.getIncFile().equals(tmp.getIncFile())))) {
+ includes.add(tmp.getIncFile());
+ }
+ if ((item instanceof ChannelSend)) {
+ String _name = ((ChannelSend) item).getData().getName();
+ String _plus_2 = (_name + "_publisher");
+ this.publishers.add(_plus_2);
+ String _nodeParam = this.nodeParam;
+ String _xifexpression = null;
+ boolean _equals = this.nodeParam.equals("");
+ if (_equals) {
+ _xifexpression = "";
+ } else {
+ _xifexpression = ";";
+ }
+ String _name_1 = ((ChannelSend) item).getData().getName();
+ String _plus_3 = (_xifexpression + _name_1);
+ String _plus_4 = (_plus_3 + "_publisher");
+ this.nodeParam = (_nodeParam + _plus_4);
+ String _xifexpression_1 = null;
+ boolean _equals_1 = this.param.equals("");
+ if (_equals_1) {
+ _xifexpression_1 = "";
+ } else {
+ _xifexpression_1 = ";";
+ }
+ String _plus_5 = (_xifexpression_1 + "rclcpp::Publisher<std_msgs::msg::String>::SharedPtr& ");
+ String _name_2 = ((ChannelSend) item).getData().getName();
+ String _plus_6 = (_plus_5 + _name_2);
+ String _plus_7 = (_plus_6 + "_publisher");
+ this.param = _plus_7;
+ }
+ if ((item instanceof InterProcessTrigger)) {
+ String _name_3 = ((InterProcessTrigger) item).getStimulus().getName();
+ String _plus_8 = (_name_3 + "_service/srv/");
+ String _name_4 = ((InterProcessTrigger) item).getStimulus().getName();
+ String _plus_9 = (_plus_8 + _name_4);
+ String _plus_10 = (_plus_9 + "_service");
+ String _plus_11 = (_plus_10 + ".hpp");
+ includes.add(_plus_11);
+ String _name_5 = ((InterProcessTrigger) item).getStimulus().getName();
+ String _plus_12 = ("rclcpp::Client<" + _name_5);
+ String _plus_13 = (_plus_12 + "_service::srv::");
+ String _name_6 = ((InterProcessTrigger) item).getStimulus().getName();
+ String _plus_14 = (_name_6 + "_service");
+ String _idlCompliantName = Utils.toIdlCompliantName(_plus_14);
+ String _plus_15 = (_plus_13 + _idlCompliantName);
+ String _plus_16 = (_plus_15 + ">::SharedPtr ");
+ String _name_7 = ((InterProcessTrigger) item).getStimulus().getName();
+ String _plus_17 = (_plus_16 + _name_7);
+ String _plus_18 = (_plus_17 + "_client");
+ this.client_declarations.add(_plus_18);
+ String _name_8 = ((InterProcessTrigger) item).getStimulus().getName();
+ String _plus_19 = (_name_8 + "_client = this->create_client<");
+ String _name_9 = ((InterProcessTrigger) item).getStimulus().getName();
+ String _plus_20 = (_plus_19 + _name_9);
+ String _plus_21 = (_plus_20 + "_service::srv::");
+ String _name_10 = ((InterProcessTrigger) item).getStimulus().getName();
+ String _plus_22 = (_name_10 + "_service");
+ String _idlCompliantName_1 = Utils.toIdlCompliantName(_plus_22);
+ String _plus_23 = (_plus_21 + _idlCompliantName_1);
+ String _plus_24 = (_plus_23 + ">");
+ String _plus_25 = (_plus_24 + "(\"");
+ String _name_11 = ((InterProcessTrigger) item).getStimulus().getName();
+ String _plus_26 = (_plus_25 + _name_11);
+ String _plus_27 = (_plus_26 + "_service\")");
+ this.client_inits.add(_plus_27);
+ String _nodeParam_1 = this.nodeParam;
+ String _xifexpression_2 = null;
+ boolean _equals_2 = this.nodeParam.equals("");
+ if (_equals_2) {
+ _xifexpression_2 = "";
+ } else {
+ _xifexpression_2 = ";";
+ }
+ String _name_12 = ((InterProcessTrigger) item).getStimulus().getName();
+ String _plus_28 = (_xifexpression_2 + _name_12);
+ String _plus_29 = (_plus_28 + "_client");
+ this.nodeParam = (_nodeParam_1 + _plus_29);
+ String _xifexpression_3 = null;
+ boolean _equals_3 = this.param.equals("");
+ if (_equals_3) {
+ _xifexpression_3 = "";
+ } else {
+ _xifexpression_3 = ";";
+ }
+ String _plus_30 = (_xifexpression_3 + "rclcpp::Client<");
+ String _name_13 = ((InterProcessTrigger) item).getStimulus().getName();
+ String _plus_31 = (_plus_30 + _name_13);
+ String _plus_32 = (_plus_31 + "_service::srv::");
+ String _name_14 = ((InterProcessTrigger) item).getStimulus().getName();
+ String _plus_33 = (_name_14 + "_service");
+ String _idlCompliantName_2 = Utils.toIdlCompliantName(_plus_33);
+ String _plus_34 = (_plus_32 + _idlCompliantName_2);
+ String _plus_35 = (_plus_34 + ">::SharedPtr& ");
+ String _name_15 = ((InterProcessTrigger) item).getStimulus().getName();
+ String _plus_36 = (_plus_35 + _name_15);
+ String _plus_37 = (_plus_36 + "_client");
+ this.param = _plus_37;
+ }
+ final String call = tmp.getCall();
+ boolean _isNullOrEmpty = StringExtensions.isNullOrEmpty(call);
+ boolean _not = (!_isNullOrEmpty);
+ if (_not) {
+ calls.add(call);
+ }
+ };
+ _items.forEach(_function);
+ String _name = this.runnable.getName();
+ String _plus_2 = ("\n//Runnable " + _name);
+ String _plus_3 = (_plus_2 + "----\n");
+ this.incAppend(_plus_3);
+ this.toH(includes);
+ String _name_1 = this.runnable.getName();
+ String _plus_4 = ("\n//Runnable " + _name_1);
+ String _plus_5 = (_plus_4 + "----\n");
+ this.srcAppend(_plus_5);
+ this.toCpp(includes, calls);
+ }
+
+ @Override
+ public void toH(final LinkedHashSet<String> includes) {
+ final Consumer<String> _function = (String include) -> {
+ this.incAppend((("#include \"" + include) + "\"\n"));
+ };
+ includes.forEach(_function);
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("void ");
+ String _call = this.getCall();
+ _builder.append(_call);
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ this.incAppend(_builder.toString());
+ }
+
+ @Override
+ public void toCpp(final LinkedHashSet<String> includes, final ArrayList<String> calls) {
+ String _call = this.getCall();
+ String _plus = ("void " + _call);
+ String _plus_1 = (_plus + "{\n");
+ this.srcAppend(_plus_1);
+ if (this.measure_performance) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("uint64_t event_list[] = {0x11, 0x13, 0x17}; //CPU CYCLES, MEM ACCESS, L2 Cache Refill");
+ _builder.newLine();
+ _builder.append("int total_events = sizeof(event_list)/sizeof(event_list[0]);");
+ _builder.newLine();
+ _builder.append("int fd = instrument_start(0,event_list, total_events);");
+ _builder.newLine();
+ this.srcAppend(_builder.toString());
+ }
+ final Consumer<String> _function = (String call) -> {
+ this.srcAppend((("\t" + call) + ";\n"));
+ };
+ calls.forEach(_function);
+ if (this.measure_performance) {
+ StringConcatenation _builder_1 = new StringConcatenation();
+ _builder_1.append("instrument_stop(fd, \"");
+ String _name = this.runnable.getName();
+ _builder_1.append(_name);
+ _builder_1.append(".log\");");
+ _builder_1.newLineIfNotEmpty();
+ this.srcAppend(_builder_1.toString());
+ }
+ this.srcAppend("}\n\n");
+ }
+}
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosTagTranslationUnit.java b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosTagTranslationUnit.java
new file mode 100644
index 0000000..f271d4c
--- /dev/null
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosTagTranslationUnit.java
@@ -0,0 +1,298 @@
+/**
+ * Copyright (c) 2020-2021 Robert Bosch GmbH.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Robert Bosch GmbH - initial API and implementation
+ */
+
+package org.eclipse.app4mc.slg.ros2.generators;
+
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.function.Consumer;
+
+import org.eclipse.app4mc.amalthea.model.Amalthea;
+import org.eclipse.app4mc.amalthea.model.SWModel;
+import org.eclipse.app4mc.amalthea.model.StringObject;
+import org.eclipse.app4mc.amalthea.model.Tag;
+import org.eclipse.app4mc.amalthea.model.Task;
+import org.eclipse.app4mc.amalthea.model.Value;
+import org.eclipse.app4mc.slg.commons.m2t.generators.TaskTranslationUnit;
+import org.eclipse.app4mc.slg.commons.m2t.generators.TranslationUnit;
+import org.eclipse.app4mc.slg.ros2.transformers.RosTaskTransformer;
+import org.eclipse.app4mc.transformation.util.OutputBuffer;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.xtend2.lib.StringConcatenation;
+
+public class RosTagTranslationUnit extends TranslationUnit {
+ private RosTaskTransformer rosTransformerTask;
+
+ private Tag tag;
+
+ private Amalthea model;
+
+ private HashSet<String> header = new HashSet<>();
+
+ private LinkedList<String> declaration = new LinkedList<>();
+
+ private LinkedList<String> initialization = new LinkedList<>();
+
+ private LinkedList<String> calls = new LinkedList<>();
+
+ private LinkedList<String> serviceCallbacks = new LinkedList<>();
+
+ private OutputBuffer outputBuffer;
+
+ public RosTagTranslationUnit(final OutputBuffer outputBuffer, final RosTaskTransformer rosTransformerTask,
+ final Tag tag, final Amalthea model) {
+ super();
+ this.tag = tag;
+ this.model = model;
+ this.rosTransformerTask = rosTransformerTask;
+ this.outputBuffer = outputBuffer;
+ this.genFiles();
+ }
+
+ public boolean genFiles() {
+ boolean _xblockexpression = false;
+ {
+ SWModel _swModel = null;
+ if (this.model != null) {
+ _swModel = this.model.getSwModel();
+ }
+ EList<Task> _tasks = null;
+ if (_swModel != null) {
+ _tasks = _swModel.getTasks();
+ }
+ final Consumer<Task> _function = (Task task) -> {
+ boolean _contains = task.getTags().contains(this.tag);
+ if (_contains) {
+ TaskTranslationUnit _transform = this.rosTransformerTask.transform(task, null);
+ final RosTaskTranslationUnit tu = ((RosTaskTranslationUnit) _transform);
+ this.header.add(tu.getHeaders().toString());
+ this.declaration.add(tu.getDeclaration().toString());
+ this.initialization.add(tu.getInitialisation(this.getModuleName()).toString());
+ this.calls.add(tu.getCallback().toString());
+ this.serviceCallbacks.add(tu.getServiceCallback().toString());
+ }
+ };
+ _tasks.forEach(_function);
+ _xblockexpression = this.srcAppend(
+ this.toCpp(this.header, this.declaration, this.initialization, this.calls, this.serviceCallbacks));
+ }
+ return _xblockexpression;
+ }
+
+ public String getBasePath() {
+ return "";
+ }
+
+ public String getModuleName() {
+ return this.tag.getName();
+ }
+
+ private String toCpp(final HashSet<String> headers, final LinkedList<String> declarations,
+ final LinkedList<String> inits, final LinkedList<String> calls, final LinkedList<String> serviceCallbacks) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("#include <chrono>");
+ _builder.newLine();
+ _builder.append("#include <memory>");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("#include \"rclcpp/rclcpp.hpp\"");
+ _builder.newLine();
+ _builder.append("#include \"std_msgs/msg/string.hpp\"");
+ _builder.newLine();
+ _builder.append("\t\t\t\t\t\t\t ");
+ _builder.newLine();
+ {
+ for (final String header : headers) {
+ _builder.append(header);
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.newLine();
+ _builder.append("using namespace std::chrono_literals;");
+ _builder.newLine();
+ _builder.append("using std::placeholders::_1;");
+ _builder.newLine();
+ _builder.newLine();
+ {
+ for (final String serviceCallback : serviceCallbacks) {
+ _builder.append(serviceCallback);
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.newLine();
+ _builder.append("class ");
+ String _moduleName = this.getModuleName();
+ _builder.append(_moduleName);
+ _builder.append(" : public rclcpp::Node");
+ _builder.newLineIfNotEmpty();
+ _builder.append("{");
+ _builder.newLine();
+ _builder.append("private:");
+ _builder.newLine();
+ {
+ for (final String declaration : declarations) {
+ _builder.append(" ");
+ _builder.append(declaration, " ");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public:");
+ _builder.newLine();
+ _builder.append("\t ");
+ String _moduleName_1 = this.getModuleName();
+ _builder.append(_moduleName_1, "\t ");
+ _builder.append("()");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t ");
+ _builder.append(": Node(\"");
+ String _lowerCase = this.getModuleName().toLowerCase();
+ _builder.append(_lowerCase, "\t ");
+ _builder.append("\")");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t ");
+ _builder.append("{");
+ _builder.newLine();
+ {
+ for (final String init : inits) {
+ _builder.append("\t \t");
+ _builder.append(init, "\t \t");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\t \t");
+ _builder.newLine();
+ _builder.append("\t \t");
+ _builder.append("}");
+ _builder.newLine();
+ {
+ for (final String call : calls) {
+ _builder.append("\t \t");
+ _builder.append(call, "\t \t");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\t \t");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("};");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("int main(int argc, char * argv[])");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("{\t\t ");
+ _builder.newLine();
+ _builder.append("\t\t ");
+ _builder.append("setvbuf(stdout, NULL, _IONBF, BUFSIZ);");
+ _builder.newLine();
+ _builder.append("\t\t ");
+ _builder.append("rclcpp::init(argc, argv);");
+ _builder.newLine();
+ {
+ Value _get = this.tag.getCustomProperties().get("executor_type");
+ boolean _tripleNotEquals = (_get != null);
+ if (_tripleNotEquals) {
+ {
+ Value _get_1 = this.tag.getCustomProperties().get("executor_type");
+ boolean _equals = ((StringObject) _get_1).getValue().equals("single_thread");
+ if (_equals) {
+ _builder.append("\t\t ");
+ _builder.append("rclcpp::executors::SingleThreadedExecutor executor;");
+ _builder.newLine();
+ } else {
+ _builder.append("\t\t ");
+ _builder.append("rclcpp::executors::MultiThreadedExecutor executor;");
+ _builder.newLine();
+ }
+ }
+ } else {
+ _builder.append("\t\t ");
+ _builder.append("rclcpp::executors::MultiThreadedExecutor executor;");
+ _builder.newLine();
+ }
+ }
+ _builder.append("\t\t");
+ _builder.newLine();
+ _builder.append("\t\t ");
+ _builder.append("auto node = std::make_shared<");
+ String _moduleName_2 = this.getModuleName();
+ _builder.append(_moduleName_2, "\t\t ");
+ _builder.append(">();");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
+ _builder.newLine();
+ _builder.append("\t\t ");
+ _builder.append("executor.add_node(node);");
+ _builder.newLine();
+ _builder.append("\t\t ");
+ _builder.append("executor.spin();");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.newLine();
+ _builder.append("\t\t ");
+ _builder.append("rclcpp::shutdown();");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.newLine();
+ _builder.append("\t\t ");
+ _builder.append("return 0;");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("}");
+ _builder.newLine();
+ return _builder.toString();
+ }
+
+ public String getModulePath() {
+ return getBasePath() + "/" + getModuleName();
+ }
+
+ @Override
+ public String getIncFile() {
+ return getModuleName() + ".hpp";
+ }
+
+ @Override
+ public String getSrcFile() {
+ return getModuleName() + ".cpp";
+ }
+
+ public String getIncPath() {
+ return getModulePath() + "/_inc/" + getIncFile();
+ }
+
+ public String getSrcPath() {
+ return getModulePath() + "/_src/" + getSrcFile();
+ }
+
+ public boolean isIncFileEmpty() {
+ return !outputBuffer.bufferExists("H", getModulePath() + "/_inc/" + getModuleName());
+ }
+
+ public boolean isSrcFileEmpty() {
+ return !outputBuffer.bufferExists("C", getModulePath() + "/_src/" + getModuleName());
+ }
+
+ public boolean incAppend(final String str) {
+ return outputBuffer.appendTo("H", getModulePath() + "/_inc/" + getModuleName(), str);
+ }
+
+ public boolean srcAppend(final String str) {
+ return outputBuffer.appendTo("C", getModulePath() + "/_src/" + getModuleName(), str);
+ }
+
+}
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosTaskTranslationUnit.java b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosTaskTranslationUnit.java
similarity index 97%
rename from load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosTaskTranslationUnit.java
rename to load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosTaskTranslationUnit.java
index 48eba8c..3ff80ce 100644
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosTaskTranslationUnit.java
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosTaskTranslationUnit.java
@@ -11,7 +11,7 @@
* Robert Bosch GmbH - initial API and implementation
*/
-package org.eclipse.app4mc.slg.ros2.translationUnits;
+package org.eclipse.app4mc.slg.ros2.generators;
import java.math.BigInteger;
import java.util.ArrayList;
@@ -32,9 +32,9 @@
import org.eclipse.app4mc.amalthea.model.Tag;
import org.eclipse.app4mc.amalthea.model.Task;
import org.eclipse.app4mc.amalthea.model.TimeUnit;
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.LabelTranslationUnit;
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.RunnableTranslationUnit;
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TaskTranslationUnit;
+import org.eclipse.app4mc.slg.commons.m2t.generators.LabelTranslationUnit;
+import org.eclipse.app4mc.slg.commons.m2t.generators.RunnableTranslationUnit;
+import org.eclipse.app4mc.slg.commons.m2t.generators.TaskTranslationUnit;
import org.eclipse.app4mc.slg.ros2.transformers.RosInterProcessStimulusTransformer;
import org.eclipse.app4mc.slg.ros2.transformers.RosLabelTransformer;
import org.eclipse.app4mc.slg.ros2.transformers.RosRunnableTransformer;
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosActivityGraphItemTransformer.xtend b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosActivityGraphItemTransformer.xtend
index 26b4850..f3db0fc 100644
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosActivityGraphItemTransformer.xtend
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosActivityGraphItemTransformer.xtend
@@ -19,7 +19,7 @@
import org.eclipse.app4mc.amalthea.model.ChannelSend
import org.eclipse.app4mc.amalthea.model.InterProcessTrigger
import org.eclipse.app4mc.slg.commons.m2t.transformers.ActivityGraphItemTransformer
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TranslationUnit
+import org.eclipse.app4mc.slg.commons.m2t.generators.TranslationUnit
@Singleton
class RosActivityGraphItemTransformer extends ActivityGraphItemTransformer {
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosChannelSendTransformer.xtend b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosChannelSendTransformer.xtend
index f5913ca..9d9e964 100644
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosChannelSendTransformer.xtend
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosChannelSendTransformer.xtend
@@ -16,7 +16,7 @@
import com.google.inject.Inject
import com.google.inject.Singleton
import org.eclipse.app4mc.amalthea.model.ChannelSend
-import org.eclipse.app4mc.slg.ros2.translationUnits.RosChannelSendTranslationUnit
+import org.eclipse.app4mc.slg.ros2.generators.RosChannelSendTranslationUnit
import org.eclipse.app4mc.transformation.templates.AbstractTransformer
import org.eclipse.app4mc.transformation.util.OutputBuffer
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosChannelSendUtilsTransformer.xtend b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosChannelSendUtilsTransformer.xtend
index bbbd8d9..482b413 100644
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosChannelSendUtilsTransformer.xtend
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosChannelSendUtilsTransformer.xtend
@@ -17,7 +17,7 @@
import com.google.inject.Singleton
import org.eclipse.app4mc.amalthea.model.ChannelSend
import org.eclipse.app4mc.slg.commons.m2t.transformers.SynteticTransformer
-import org.eclipse.app4mc.slg.ros2.translationUnits.RosChannelSendUtilsTranslationUnit
+import org.eclipse.app4mc.slg.ros2.generators.RosChannelSendUtilsTranslationUnit
import org.eclipse.app4mc.transformation.util.OutputBuffer
@Singleton
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosInterProcessStimulusTransformer.xtend b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosInterProcessStimulusTransformer.xtend
index 1bf1ec9..9f81595 100644
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosInterProcessStimulusTransformer.xtend
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosInterProcessStimulusTransformer.xtend
@@ -17,7 +17,7 @@
import com.google.inject.Singleton
import org.eclipse.app4mc.amalthea.model.InterProcessStimulus
import org.eclipse.app4mc.slg.commons.m2t.transformers.SynteticTransformer
-import org.eclipse.app4mc.slg.ros2.translationUnits.RosIpStimulusTranslationunit
+import org.eclipse.app4mc.slg.ros2.generators.RosIpStimulusTranslationunit
import org.eclipse.app4mc.transformation.util.OutputBuffer
@Singleton
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosInterProcessTriggerTransformer.xtend b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosInterProcessTriggerTransformer.xtend
index 30a308e..7432b8f 100644
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosInterProcessTriggerTransformer.xtend
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosInterProcessTriggerTransformer.xtend
@@ -16,7 +16,7 @@
import com.google.inject.Inject
import com.google.inject.Singleton
import org.eclipse.app4mc.amalthea.model.InterProcessTrigger
-import org.eclipse.app4mc.slg.ros2.translationUnits.RosInterProcessTriggerTranslationUnit
+import org.eclipse.app4mc.slg.ros2.generators.RosInterProcessTriggerTranslationUnit
import org.eclipse.app4mc.transformation.templates.AbstractTransformer
import org.eclipse.app4mc.transformation.util.OutputBuffer
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosInterProcessTriggerUtilsTransformer.xtend b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosInterProcessTriggerUtilsTransformer.xtend
index ddb5924..f6a9bfe 100644
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosInterProcessTriggerUtilsTransformer.xtend
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosInterProcessTriggerUtilsTransformer.xtend
@@ -17,7 +17,7 @@
import com.google.inject.Singleton
import org.eclipse.app4mc.amalthea.model.InterProcessTrigger
import org.eclipse.app4mc.slg.commons.m2t.transformers.SynteticTransformer
-import org.eclipse.app4mc.slg.ros2.translationUnits.RosInterProcessTriggerUtilsTranslationUnit
+import org.eclipse.app4mc.slg.ros2.generators.RosInterProcessTriggerUtilsTranslationUnit
import org.eclipse.app4mc.transformation.util.OutputBuffer
@Singleton
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosLabelTransformer.xtend b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosLabelTransformer.xtend
index 09e5213..6ad0d0b 100644
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosLabelTransformer.xtend
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosLabelTransformer.xtend
@@ -16,7 +16,7 @@
import com.google.inject.Inject
import org.eclipse.app4mc.amalthea.model.Label
import org.eclipse.app4mc.slg.commons.m2t.transformers.LabelTransformer
-import org.eclipse.app4mc.slg.ros2.translationUnits.RosLabelTranslationUnit
+import org.eclipse.app4mc.slg.ros2.generators.RosLabelTranslationUnit
import org.eclipse.app4mc.transformation.util.OutputBuffer
class RosLabelTransformer extends LabelTransformer {
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosRunnableTransformer.xtend b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosRunnableTransformer.xtend
index f278a90..a096e98 100644
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosRunnableTransformer.xtend
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosRunnableTransformer.xtend
@@ -16,7 +16,7 @@
import com.google.inject.Inject
import org.eclipse.app4mc.amalthea.model.Runnable
import org.eclipse.app4mc.slg.commons.m2t.transformers.RunnableTransformer
-import org.eclipse.app4mc.slg.ros2.translationUnits.RosRunnableTranslationUnit
+import org.eclipse.app4mc.slg.ros2.generators.RosRunnableTranslationUnit
import org.eclipse.app4mc.transformation.util.OutputBuffer
class RosRunnableTransformer extends RunnableTransformer {
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosTagTransformer.xtend b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosTagTransformer.xtend
index c795101..f2673dc 100644
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosTagTransformer.xtend
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosTagTransformer.xtend
@@ -18,7 +18,7 @@
import org.eclipse.app4mc.amalthea.model.Amalthea
import org.eclipse.app4mc.amalthea.model.Tag
import org.eclipse.app4mc.slg.commons.m2t.transformers.BaseTransformer
-import org.eclipse.app4mc.slg.ros2.translationUnits.RosTagTranslationUnit
+import org.eclipse.app4mc.slg.ros2.generators.RosTagTranslationUnit
import org.eclipse.app4mc.transformation.util.OutputBuffer
@Singleton
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosTaskTransformer.xtend b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosTaskTransformer.xtend
index 21658d6..96cbddf 100644
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosTaskTransformer.xtend
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosTaskTransformer.xtend
@@ -18,7 +18,7 @@
import org.eclipse.app4mc.amalthea.model.Component
import org.eclipse.app4mc.amalthea.model.Task
import org.eclipse.app4mc.slg.commons.m2t.transformers.TaskTransformer
-import org.eclipse.app4mc.slg.ros2.translationUnits.RosTaskTranslationUnit
+import org.eclipse.app4mc.slg.ros2.generators.RosTaskTranslationUnit
import org.eclipse.app4mc.transformation.util.OutputBuffer
@Singleton
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/utils/RosAmlWriter.java b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/utils/RosAmlWriter.java
index 6fe1cbe..753fe8b 100644
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/utils/RosAmlWriter.java
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/utils/RosAmlWriter.java
@@ -12,7 +12,7 @@
*/
package org.eclipse.app4mc.slg.ros2.transformers.utils;
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TranslationUnit;
+import org.eclipse.app4mc.slg.commons.m2t.generators.TranslationUnit;
import org.eclipse.xtend2.lib.StringConcatenation;
public class RosAmlWriter extends TranslationUnit {
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosRunnableTranslationUnit.java b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosRunnableTranslationUnit.java
deleted file mode 100644
index 362dd25..0000000
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosRunnableTranslationUnit.java
+++ /dev/null
@@ -1,313 +0,0 @@
-/**
- * Copyright (c) 2020-2021 Robert Bosch GmbH.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- */
-
-package org.eclipse.app4mc.slg.ros2.translationUnits;
-
-import java.util.ArrayList;
-import java.util.LinkedHashSet;
-import java.util.function.Consumer;
-import org.eclipse.app4mc.amalthea.model.ActivityGraph;
-import org.eclipse.app4mc.amalthea.model.ActivityGraphItem;
-import org.eclipse.app4mc.amalthea.model.BooleanObject;
-import org.eclipse.app4mc.amalthea.model.ChannelSend;
-import org.eclipse.app4mc.amalthea.model.InterProcessTrigger;
-import org.eclipse.app4mc.amalthea.model.Value;
-import org.eclipse.app4mc.slg.commons.m2t.transformers.ActivityGraphItemTransformer;
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.RunnableTranslationUnit;
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TranslationUnit;
-import org.eclipse.app4mc.slg.ros2.transformers.utils.Utils;
-import org.eclipse.app4mc.transformation.util.OutputBuffer;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.emf.common.util.EMap;
-import org.eclipse.xtend2.lib.StringConcatenation;
-import org.eclipse.xtext.xbase.lib.StringExtensions;
-
-public class RosRunnableTranslationUnit extends RunnableTranslationUnit {
- private String param;
-
- private String nodeParam;
-
- private boolean measure_performance;
-
- private ArrayList<String> publishers;
-
- private ArrayList<String> client_declarations;
-
- private ArrayList<String> client_inits;
-
- public RosRunnableTranslationUnit(final OutputBuffer outputBuffer, final ActivityGraphItemTransformer transformer, final org.eclipse.app4mc.amalthea.model.Runnable runnable) {
- super(outputBuffer, transformer, runnable);
- }
-
- @Override
- public String getCall() {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("run_");
- String _name = this.runnable.getName();
- _builder.append(_name);
- _builder.append("(");
- _builder.append(this.param);
- _builder.append(")");
- return _builder.toString();
- }
-
- public String getNodeCall() {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("run_");
- String _name = this.runnable.getName();
- _builder.append(_name);
- _builder.append("(");
- _builder.append(this.nodeParam);
- _builder.append(")");
- return _builder.toString();
- }
-
- public ArrayList<String> getPublishers() {
- return this.publishers;
- }
-
- public ArrayList<String> getClientDeclarations() {
- return this.client_declarations;
- }
-
- public ArrayList<String> getClientInits() {
- return this.client_inits;
- }
-
- @Override
- public boolean genFiles() {
- boolean _xblockexpression = false;
- {
- this.param = "";
- this.nodeParam = "";
- ArrayList<String> _arrayList = new ArrayList<String>();
- this.publishers = _arrayList;
- ArrayList<String> _arrayList_1 = new ArrayList<String>();
- this.client_declarations = _arrayList_1;
- ArrayList<String> _arrayList_2 = new ArrayList<String>();
- this.client_inits = _arrayList_2;
- boolean _isSrcFileEmpty = this.isSrcFileEmpty();
- if (_isSrcFileEmpty) {
- String _incFile = this.getIncFile();
- String _plus = ("#include \"" + _incFile);
- String _plus_1 = (_plus + "\"\n");
- this.srcAppend(_plus_1);
- }
- final LinkedHashSet<String> includes = new LinkedHashSet<String>();
- final ArrayList<String> calls = new ArrayList<String>();
- EMap<String, Value> _customProperties = null;
- if (this.runnable!=null) {
- _customProperties=this.runnable.getCustomProperties();
- }
- Value _get = null;
- if (_customProperties!=null) {
- _get=_customProperties.get("measure_performance");
- }
- boolean _isValue = false;
- if (((BooleanObject) _get)!=null) {
- _isValue=((BooleanObject) _get).isValue();
- }
- if (_isValue) {
- includes.add("aml.h");
- this.measure_performance = true;
- }
- ActivityGraph _activityGraph = null;
- if (this.runnable!=null) {
- _activityGraph=this.runnable.getActivityGraph();
- }
- EList<ActivityGraphItem> _items = null;
- if (_activityGraph!=null) {
- _items=_activityGraph.getItems();
- }
- final Consumer<ActivityGraphItem> _function = (ActivityGraphItem item) -> {
- final TranslationUnit tmp = this.callGraphItemTransformer.transform(((ActivityGraphItem) item));
- if (((!StringExtensions.isNullOrEmpty(tmp.getIncFile())) && (!this.getIncFile().equals(tmp.getIncFile())))) {
- includes.add(tmp.getIncFile());
- }
- if ((item instanceof ChannelSend)) {
- String _name = ((ChannelSend) item).getData().getName();
- String _plus_2 = (_name + "_publisher");
- this.publishers.add(_plus_2);
- String _nodeParam = this.nodeParam;
- String _xifexpression = null;
- boolean _equals = this.nodeParam.equals("");
- if (_equals) {
- _xifexpression = "";
- } else {
- _xifexpression = ";";
- }
- String _name_1 = ((ChannelSend) item).getData().getName();
- String _plus_3 = (_xifexpression + _name_1);
- String _plus_4 = (_plus_3 + "_publisher");
- this.nodeParam = (_nodeParam + _plus_4);
- String _xifexpression_1 = null;
- boolean _equals_1 = this.param.equals("");
- if (_equals_1) {
- _xifexpression_1 = "";
- } else {
- _xifexpression_1 = ";";
- }
- String _plus_5 = (_xifexpression_1 + "rclcpp::Publisher<std_msgs::msg::String>::SharedPtr& ");
- String _name_2 = ((ChannelSend) item).getData().getName();
- String _plus_6 = (_plus_5 + _name_2);
- String _plus_7 = (_plus_6 + "_publisher");
- this.param = _plus_7;
- }
- if ((item instanceof InterProcessTrigger)) {
- String _name_3 = ((InterProcessTrigger)item).getStimulus().getName();
- String _plus_8 = (_name_3 + "_service/srv/");
- String _name_4 = ((InterProcessTrigger)item).getStimulus().getName();
- String _plus_9 = (_plus_8 + _name_4);
- String _plus_10 = (_plus_9 + "_service");
- String _plus_11 = (_plus_10 + ".hpp");
- includes.add(_plus_11);
- String _name_5 = ((InterProcessTrigger) item).getStimulus().getName();
- String _plus_12 = ("rclcpp::Client<" + _name_5);
- String _plus_13 = (_plus_12 + "_service::srv::");
- String _name_6 = ((InterProcessTrigger) item).getStimulus().getName();
- String _plus_14 = (_name_6 + "_service");
- String _idlCompliantName = Utils.toIdlCompliantName(_plus_14);
- String _plus_15 = (_plus_13 + _idlCompliantName);
- String _plus_16 = (_plus_15 +
- ">::SharedPtr ");
- String _name_7 = ((InterProcessTrigger) item).getStimulus().getName();
- String _plus_17 = (_plus_16 + _name_7);
- String _plus_18 = (_plus_17 + "_client");
- this.client_declarations.add(_plus_18);
- String _name_8 = ((InterProcessTrigger) item).getStimulus().getName();
- String _plus_19 = (_name_8 + "_client = this->create_client<");
- String _name_9 = ((InterProcessTrigger) item).getStimulus().getName();
- String _plus_20 = (_plus_19 + _name_9);
- String _plus_21 = (_plus_20 + "_service::srv::");
- String _name_10 = ((InterProcessTrigger) item).getStimulus().getName();
- String _plus_22 = (_name_10 + "_service");
- String _idlCompliantName_1 = Utils.toIdlCompliantName(_plus_22);
- String _plus_23 = (_plus_21 + _idlCompliantName_1);
- String _plus_24 = (_plus_23 + ">");
- String _plus_25 = (_plus_24 +
- "(\"");
- String _name_11 = ((InterProcessTrigger) item).getStimulus().getName();
- String _plus_26 = (_plus_25 + _name_11);
- String _plus_27 = (_plus_26 + "_service\")");
- this.client_inits.add(_plus_27);
- String _nodeParam_1 = this.nodeParam;
- String _xifexpression_2 = null;
- boolean _equals_2 = this.nodeParam.equals("");
- if (_equals_2) {
- _xifexpression_2 = "";
- } else {
- _xifexpression_2 = ";";
- }
- String _name_12 = ((InterProcessTrigger) item).getStimulus().getName();
- String _plus_28 = (_xifexpression_2 + _name_12);
- String _plus_29 = (_plus_28 + "_client");
- this.nodeParam = (_nodeParam_1 + _plus_29);
- String _xifexpression_3 = null;
- boolean _equals_3 = this.param.equals("");
- if (_equals_3) {
- _xifexpression_3 = "";
- } else {
- _xifexpression_3 = ";";
- }
- String _plus_30 = (_xifexpression_3 + "rclcpp::Client<");
- String _name_13 = ((InterProcessTrigger) item).getStimulus().getName();
- String _plus_31 = (_plus_30 + _name_13);
- String _plus_32 = (_plus_31 + "_service::srv::");
- String _name_14 = ((InterProcessTrigger) item).getStimulus().getName();
- String _plus_33 = (_name_14 + "_service");
- String _idlCompliantName_2 = Utils.toIdlCompliantName(_plus_33);
- String _plus_34 = (_plus_32 + _idlCompliantName_2);
- String _plus_35 = (_plus_34 +
- ">::SharedPtr& ");
- String _name_15 = ((InterProcessTrigger) item).getStimulus().getName();
- String _plus_36 = (_plus_35 + _name_15);
- String _plus_37 = (_plus_36 + "_client");
- this.param = _plus_37;
- }
- final String call = tmp.getCall();
- boolean _isNullOrEmpty = StringExtensions.isNullOrEmpty(call);
- boolean _not = (!_isNullOrEmpty);
- if (_not) {
- calls.add(call);
- }
- };
- _items.forEach(_function);
- String _name = this.runnable.getName();
- String _plus_2 = ("\n//Runnable " + _name);
- String _plus_3 = (_plus_2 + "----\n");
- this.incAppend(_plus_3);
- this.toH(includes);
- String _name_1 = this.runnable.getName();
- String _plus_4 = ("\n//Runnable " + _name_1);
- String _plus_5 = (_plus_4 + "----\n");
- this.srcAppend(_plus_5);
- _xblockexpression = this.toCpp(includes, calls);
- }
- return _xblockexpression;
- }
-
- @Override
- public boolean toH(final LinkedHashSet<String> includes) {
- boolean _xblockexpression = false;
- {
- final Consumer<String> _function = (String include) -> {
- this.incAppend((("#include \"" + include) + "\"\n"));
- };
- includes.forEach(_function);
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("void ");
- String _call = this.getCall();
- _builder.append(_call);
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _xblockexpression = this.incAppend(_builder.toString());
- }
- return _xblockexpression;
- }
-
- @Override
- public boolean toCpp(final LinkedHashSet<String> includes, final ArrayList<String> calls) {
- boolean _xblockexpression = false;
- {
- String _call = this.getCall();
- String _plus = ("void " + _call);
- String _plus_1 = (_plus + "{\n");
- this.srcAppend(_plus_1);
- if (this.measure_performance) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("uint64_t event_list[] = {0x11, 0x13, 0x17}; //CPU CYCLES, MEM ACCESS, L2 Cache Refill");
- _builder.newLine();
- _builder.append("int total_events = sizeof(event_list)/sizeof(event_list[0]);");
- _builder.newLine();
- _builder.append("int fd = instrument_start(0,event_list, total_events);");
- _builder.newLine();
- this.srcAppend(_builder.toString());
- }
- final Consumer<String> _function = (String call) -> {
- this.srcAppend((("\t" + call) + ";\n"));
- };
- calls.forEach(_function);
- if (this.measure_performance) {
- StringConcatenation _builder_1 = new StringConcatenation();
- _builder_1.append("instrument_stop(fd, \"");
- String _name = this.runnable.getName();
- _builder_1.append(_name);
- _builder_1.append(".log\");");
- _builder_1.newLineIfNotEmpty();
- this.srcAppend(_builder_1.toString());
- }
- _xblockexpression = this.srcAppend("}\n\n");
- }
- return _xblockexpression;
- }
-}
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosTagTranslationUnit.java b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosTagTranslationUnit.java
deleted file mode 100644
index a72ab13..0000000
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosTagTranslationUnit.java
+++ /dev/null
@@ -1,323 +0,0 @@
-/**
- * Copyright (c) 2020-2021 Robert Bosch GmbH.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- */
-
-package org.eclipse.app4mc.slg.ros2.translationUnits;
-
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.function.Consumer;
-
-import org.eclipse.app4mc.amalthea.model.Amalthea;
-import org.eclipse.app4mc.amalthea.model.SWModel;
-import org.eclipse.app4mc.amalthea.model.StringObject;
-import org.eclipse.app4mc.amalthea.model.Tag;
-import org.eclipse.app4mc.amalthea.model.Task;
-import org.eclipse.app4mc.amalthea.model.Value;
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TaskTranslationUnit;
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TranslationUnit;
-import org.eclipse.app4mc.slg.ros2.transformers.RosTaskTransformer;
-import org.eclipse.app4mc.transformation.util.OutputBuffer;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.xtend2.lib.StringConcatenation;
-
-public class RosTagTranslationUnit extends TranslationUnit {
- private RosTaskTransformer rosTransformerTask;
-
- private Tag tag;
-
- private Amalthea model;
-
- private HashSet<String> header = new HashSet<>();
-
- private LinkedList<String> declaration = new LinkedList<>();
-
- private LinkedList<String> initialization = new LinkedList<>();
-
- private LinkedList<String> calls = new LinkedList<>();
-
- private LinkedList<String> serviceCallbacks = new LinkedList<>();
-
-private OutputBuffer outputBuffer;
-
- public RosTagTranslationUnit(final OutputBuffer outputBuffer, final RosTaskTransformer rosTransformerTask, final Tag tag, final Amalthea model) {
- super();
- this.tag = tag;
- this.model = model;
- this.rosTransformerTask = rosTransformerTask;
- this.outputBuffer = outputBuffer;
- this.genFiles();
- }
-
- public boolean genFiles() {
- boolean _xblockexpression = false;
- {
- SWModel _swModel = null;
- if (this.model!=null) {
- _swModel=this.model.getSwModel();
- }
- EList<Task> _tasks = null;
- if (_swModel!=null) {
- _tasks=_swModel.getTasks();
- }
- final Consumer<Task> _function = (Task task) -> {
- boolean _contains = task.getTags().contains(this.tag);
- if (_contains) {
- TaskTranslationUnit _transform = this.rosTransformerTask.transform(task, null);
- final RosTaskTranslationUnit tu = ((RosTaskTranslationUnit) _transform);
- this.header.add(tu.getHeaders().toString());
- this.declaration.add(tu.getDeclaration().toString());
- this.initialization.add(tu.getInitialisation(this.getModuleName()).toString());
- this.calls.add(tu.getCallback().toString());
- this.serviceCallbacks.add(tu.getServiceCallback().toString());
- }
- };
- _tasks.forEach(_function);
- _xblockexpression = this.srcAppend(this.toCpp(this.header, this.declaration, this.initialization, this.calls, this.serviceCallbacks));
- }
- return _xblockexpression;
- }
-
- public String getBasePath() {
- return "";
- }
-
- public String getModuleName() {
- return this.tag.getName();
- }
-
- private String toCpp(final HashSet<String> headers, final LinkedList<String> declarations, final LinkedList<String> inits, final LinkedList<String> calls, final LinkedList<String> serviceCallbacks) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("#include <chrono>");
- _builder.newLine();
- _builder.append("#include <memory>");
- _builder.newLine();
- _builder.newLine();
- _builder.append("#include \"rclcpp/rclcpp.hpp\"");
- _builder.newLine();
- _builder.append("#include \"std_msgs/msg/string.hpp\"");
- _builder.newLine();
- _builder.append("\t\t\t\t\t\t\t ");
- _builder.newLine();
- {
- for(final String header : headers) {
- _builder.append(header);
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.newLine();
- _builder.append("using namespace std::chrono_literals;");
- _builder.newLine();
- _builder.append("using std::placeholders::_1;");
- _builder.newLine();
- _builder.newLine();
- {
- for(final String serviceCallback : serviceCallbacks) {
- _builder.append(serviceCallback);
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.newLine();
- _builder.append("class ");
- String _moduleName = this.getModuleName();
- _builder.append(_moduleName);
- _builder.append(" : public rclcpp::Node");
- _builder.newLineIfNotEmpty();
- _builder.append("{");
- _builder.newLine();
- _builder.append("private:");
- _builder.newLine();
- {
- for(final String declaration : declarations) {
- _builder.append(" ");
- _builder.append(declaration, " ");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.newLine();
- _builder.append("\t");
- _builder.append("public:");
- _builder.newLine();
- _builder.append("\t ");
- String _moduleName_1 = this.getModuleName();
- _builder.append(_moduleName_1, "\t ");
- _builder.append("()");
- _builder.newLineIfNotEmpty();
- _builder.append("\t ");
- _builder.append(": Node(\"");
- String _lowerCase = this.getModuleName().toLowerCase();
- _builder.append(_lowerCase, "\t ");
- _builder.append("\")");
- _builder.newLineIfNotEmpty();
- _builder.append("\t ");
- _builder.append("{");
- _builder.newLine();
- {
- for(final String init : inits) {
- _builder.append("\t \t");
- _builder.append(init, "\t \t");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("\t \t");
- _builder.newLine();
- _builder.append("\t \t");
- _builder.append("}");
- _builder.newLine();
- {
- for(final String call : calls) {
- _builder.append("\t \t");
- _builder.append(call, "\t \t");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("\t \t");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("};");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("int main(int argc, char * argv[])");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("{\t\t ");
- _builder.newLine();
- _builder.append("\t\t ");
- _builder.append("setvbuf(stdout, NULL, _IONBF, BUFSIZ);");
- _builder.newLine();
- _builder.append("\t\t ");
- _builder.append("rclcpp::init(argc, argv);");
- _builder.newLine();
- {
- Value _get = this.tag.getCustomProperties().get("executor_type");
- boolean _tripleNotEquals = (_get != null);
- if (_tripleNotEquals) {
- {
- Value _get_1 = this.tag.getCustomProperties().get("executor_type");
- boolean _equals = ((StringObject) _get_1).getValue().equals("single_thread");
- if (_equals) {
- _builder.append("\t\t ");
- _builder.append("rclcpp::executors::SingleThreadedExecutor executor;");
- _builder.newLine();
- } else {
- _builder.append("\t\t ");
- _builder.append("rclcpp::executors::MultiThreadedExecutor executor;");
- _builder.newLine();
- }
- }
- } else {
- _builder.append("\t\t ");
- _builder.append("rclcpp::executors::MultiThreadedExecutor executor;");
- _builder.newLine();
- }
- }
- _builder.append("\t\t");
- _builder.newLine();
- _builder.append("\t\t ");
- _builder.append("auto node = std::make_shared<");
- String _moduleName_2 = this.getModuleName();
- _builder.append(_moduleName_2, "\t\t ");
- _builder.append(">();");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.newLine();
- _builder.append("\t\t ");
- _builder.append("executor.add_node(node);");
- _builder.newLine();
- _builder.append("\t\t ");
- _builder.append("executor.spin();");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.newLine();
- _builder.append("\t\t ");
- _builder.append("rclcpp::shutdown();");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.newLine();
- _builder.append("\t\t ");
- _builder.append("return 0;");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("}");
- _builder.newLine();
- return _builder.toString();
- }
-
-public String getModulePath() {
- String _basePath = this.getBasePath();
- String _plus = (_basePath + "/");
- String _moduleName = this.getModuleName();
- return (_plus + _moduleName);
- }
-
-@Override
-public String getIncFile() {
- String _moduleName = this.getModuleName();
- return (_moduleName + ".hpp");
- }
-
-@Override
-public String getSrcFile() {
- String _moduleName = this.getModuleName();
- return (_moduleName + ".cpp");
- }
-
-public String getIncPath() {
- String _modulePath = this.getModulePath();
- String _plus = (_modulePath + "/_inc/");
- String _incFile = this.getIncFile();
- return (_plus + _incFile);
- }
-
-public String getSrcPath() {
- String _modulePath = this.getModulePath();
- String _plus = (_modulePath + "/_src/");
- String _srcFile = this.getSrcFile();
- return (_plus + _srcFile);
- }
-
-public boolean isIncFileEmpty() {
- String _modulePath = this.getModulePath();
- String _plus = (_modulePath + "/_inc/");
- String _moduleName = this.getModuleName();
- String _plus_1 = (_plus + _moduleName);
- boolean _bufferExists = this.outputBuffer.bufferExists("H", _plus_1);
- return (!_bufferExists);
- }
-
-public boolean isSrcFileEmpty() {
- String _modulePath = this.getModulePath();
- String _plus = (_modulePath + "/_src/");
- String _moduleName = this.getModuleName();
- String _plus_1 = (_plus + _moduleName);
- boolean _bufferExists = this.outputBuffer.bufferExists("C", _plus_1);
- return (!_bufferExists);
- }
-
-public boolean incAppend(final String str) {
- String _modulePath = this.getModulePath();
- String _plus = (_modulePath + "/_inc/");
- String _moduleName = this.getModuleName();
- String _plus_1 = (_plus + _moduleName);
- return this.outputBuffer.appendTo("H", _plus_1, str);
- }
-
-public boolean srcAppend(final String str) {
- String _modulePath = this.getModulePath();
- String _plus = (_modulePath + "/_src/");
- String _moduleName = this.getModuleName();
- String _plus_1 = (_plus + _moduleName);
- return this.outputBuffer.appendTo("C", _plus_1, str);
- }
-}