Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenrik Rentz-Reichert2012-01-09 18:21:33 +0000
committerHenrik Rentz-Reichert2012-01-09 18:21:33 +0000
commit5d1cd48b70f2969e3eab620ff24af10ea6d44037 (patch)
tree45ab06340d858da02cbf6f9ddc5130aee108c8e3 /plugins
parent04f7c4ba9a479f3c1a5e6c51861b4a44ea93e3c8 (diff)
downloadorg.eclipse.etrice-5d1cd48b70f2969e3eab620ff24af10ea6d44037.tar.gz
org.eclipse.etrice-5d1cd48b70f2969e3eab620ff24af10ea6d44037.tar.xz
org.eclipse.etrice-5d1cd48b70f2969e3eab620ff24af10ea6d44037.zip
[generator.java] bug fix for derived data classes
Diffstat (limited to 'plugins')
-rw-r--r--plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/DataClassGen.xtend14
-rw-r--r--plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/ProtocolClassGen.xtend54
-rw-r--r--plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/DataClassGen.java141
-rw-r--r--plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/ProtocolClassGen.java300
4 files changed, 357 insertions, 152 deletions
diff --git a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/DataClassGen.xtend b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/DataClassGen.xtend
index b3aa4444e..9987d2c96 100644
--- a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/DataClassGen.xtend
+++ b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/DataClassGen.xtend
@@ -66,9 +66,23 @@ class DataClassGen {
// default constructor
public «dc.name»() {
+ super();
«dc.attributes.attributeInitialization»
}
+ // constructor using fields
+ public «dc.name»(«IF dc.base!=null»«dc.base.name» _super, «ENDIF»«FOR a : dc.attributes SEPARATOR ", "»«a.type.typeName» «a.name»«ENDFOR») {
+ super();
+ «IF dc.base!=null»
+ «FOR a : dc.base.attributes»
+ this.«a.name» = _super.«a.name»;
+ «ENDFOR»
+ «ENDIF»
+ «FOR a : dc.attributes»
+ this.«a.name» = «a.name»;
+ «ENDFOR»
+ }
+
// deep copy
public «dc.name» deepCopy() {
«dc.name» copy = new «dc.name»();
diff --git a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/ProtocolClassGen.xtend b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/ProtocolClassGen.xtend
index ee1b2fa66..3087db7c9 100644
--- a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/ProtocolClassGen.xtend
+++ b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/ProtocolClassGen.xtend
@@ -17,6 +17,7 @@ import com.google.inject.Singleton
import org.eclipse.etrice.core.room.Message
import org.eclipse.etrice.core.room.ProtocolClass
import org.eclipse.etrice.core.room.PrimitiveType
+import org.eclipse.etrice.core.room.DataClass
import org.eclipse.etrice.generator.base.ILogger
import org.eclipse.etrice.generator.etricegen.Root
import org.eclipse.xtext.generator.JavaIoFileSystemAccess
@@ -227,35 +228,42 @@ class ProtocolClassGen {
}
def messageSignature(Message m) {
- '''
- public void «m.name» («IF m.data!=null»«m.data.type.typeName» «m.data.name»«ENDIF»)
- '''
+ '''public void «m.name»(«IF m.data!=null»«m.data.type.typeName» «m.data.name»«ENDIF»)'''
+ }
+
+ def messageSignatureExplicit(Message m) {
+ var dc = (m.data.type as DataClass)
+ '''public void «m.name»(«IF dc.base!=null»«dc.base.typeName» _super, «ENDIF»«FOR a : dc.attributes SEPARATOR ", "»«a.type.typeName» «a.name»«ENDFOR»)'''
}
def messageCall(Message m) {
- '''
- «m.name»(«IF m.data!=null» «m.data.name»«ENDIF»)
- '''}
+ '''«m.name»(«IF m.data!=null» «m.data.name»«ENDIF»)'''
+ }
def sendMessage(Message m, boolean conj) {
- '''
- «var dir = if (conj) "IN" else "OUT"»
- «var hdlr = m.getSendHandler(conj)»
- «messageSignature(m)»{
- «IF hdlr!=null»
- «FOR command : hdlr.detailCode.commands» «command»
- «ENDFOR»
- «ELSE»
- if (messageStrings[ «dir»_«m.name»] != "timerTick"){
- // TODOTS: model switch for activation
- DebuggingService.getInstance().addMessageAsyncOut(getAddress(), getPeerAddress(), messageStrings[«dir»_«m.name»]);
- }
- if (getPeerAddress()!=null)
- «IF m.data==null»getPeerMsgReceiver().receive(new EventMessage(getPeerAddress(), «dir»_«m.name»));
- «ELSE»getPeerMsgReceiver().receive(new EventWithDataMessage(getPeerAddress(), «dir»_«m.name», «m.data.name»«IF (!m.data.ref && !(m.data.type instanceof PrimitiveType))».deepCopy()«ENDIF»));
+ var dir = if (conj) "IN" else "OUT"
+ var hdlr = m.getSendHandler(conj)
+ '''
+ «messageSignature(m)» {
+ «IF hdlr!=null»
+ «FOR command : hdlr.detailCode.commands» «command»
+ «ENDFOR»
+ «ELSE»
+ if (messageStrings[ «dir»_«m.name»] != "timerTick"){
+ // TODOTS: model switch for activation
+ DebuggingService.getInstance().addMessageAsyncOut(getAddress(), getPeerAddress(), messageStrings[«dir»_«m.name»]);
+ }
+ if (getPeerAddress()!=null)
+ «IF m.data==null»getPeerMsgReceiver().receive(new EventMessage(getPeerAddress(), «dir»_«m.name»));
+ «ELSE»getPeerMsgReceiver().receive(new EventWithDataMessage(getPeerAddress(), «dir»_«m.name», «m.data.name»«IF (!m.data.ref && !(m.data.type instanceof PrimitiveType))».deepCopy()«ENDIF»));
+ «ENDIF»
«ENDIF»
+ }
+ «IF m.data!=null && m.data.type instanceof DataClass»
+ «messageSignatureExplicit(m)» {
+ «m.name»(new «m.data.type.name»(«IF (m.data.type as DataClass).base!=null»_super, «ENDIF»«FOR a : (m.data.type as DataClass).attributes SEPARATOR ", "»«a.name»«ENDFOR»));
+ }
«ENDIF»
- }
- '''
+ '''
}
} \ No newline at end of file
diff --git a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/DataClassGen.java b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/DataClassGen.java
index 5c8b1f3b4..eb99e1fb8 100644
--- a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/DataClassGen.java
+++ b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/DataClassGen.java
@@ -148,6 +148,9 @@ public class DataClassGen {
_builder.append("() {");
_builder.newLineIfNotEmpty();
_builder.append("\t\t");
+ _builder.append("super();");
+ _builder.newLine();
+ _builder.append("\t\t");
EList<Attribute> _attributes_2 = dc.getAttributes();
StringConcatenation _attributeInitialization = this.helpers.attributeInitialization(_attributes_2);
_builder.append(_attributeInitialization, " ");
@@ -158,56 +161,136 @@ public class DataClassGen {
_builder.append("\t");
_builder.newLine();
_builder.append("\t");
- _builder.append("// deep copy");
+ _builder.append("// constructor using fields");
_builder.newLine();
_builder.append("\t");
_builder.append("public ");
String _name_6 = dc.getName();
_builder.append(_name_6, " ");
+ _builder.append("(");
+ {
+ DataClass _base_2 = dc.getBase();
+ boolean _operator_notEquals_1 = ObjectExtensions.operator_notEquals(_base_2, null);
+ if (_operator_notEquals_1) {
+ DataClass _base_3 = dc.getBase();
+ String _name_7 = _base_3.getName();
+ _builder.append(_name_7, " ");
+ _builder.append(" _super, ");
+ }
+ }
+ {
+ EList<Attribute> _attributes_3 = dc.getAttributes();
+ boolean hasAnyElements = false;
+ for(final Attribute a : _attributes_3) {
+ if (!hasAnyElements) {
+ hasAnyElements = true;
+ } else {
+ _builder.appendImmediate(", ", " ");
+ }
+ DataType _type = a.getType();
+ String _typeName = this.typeHelpers.typeName(_type);
+ _builder.append(_typeName, " ");
+ _builder.append(" ");
+ String _name_8 = a.getName();
+ _builder.append(_name_8, " ");
+ }
+ }
+ _builder.append(") {");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
+ _builder.append("super();");
+ _builder.newLine();
+ {
+ DataClass _base_4 = dc.getBase();
+ boolean _operator_notEquals_2 = ObjectExtensions.operator_notEquals(_base_4, null);
+ if (_operator_notEquals_2) {
+ {
+ DataClass _base_5 = dc.getBase();
+ EList<Attribute> _attributes_4 = _base_5.getAttributes();
+ for(final Attribute a_1 : _attributes_4) {
+ _builder.append("\t\t");
+ _builder.append("this.");
+ String _name_9 = a_1.getName();
+ _builder.append(_name_9, " ");
+ _builder.append(" = _super.");
+ String _name_10 = a_1.getName();
+ _builder.append(_name_10, " ");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ }
+ }
+ {
+ EList<Attribute> _attributes_5 = dc.getAttributes();
+ for(final Attribute a_2 : _attributes_5) {
+ _builder.append("\t\t");
+ _builder.append("this.");
+ String _name_11 = a_2.getName();
+ _builder.append(_name_11, " ");
+ _builder.append(" = ");
+ String _name_12 = a_2.getName();
+ _builder.append(_name_12, " ");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("// deep copy");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public ");
+ String _name_13 = dc.getName();
+ _builder.append(_name_13, " ");
_builder.append(" deepCopy() {");
_builder.newLineIfNotEmpty();
_builder.append("\t\t");
- String _name_7 = dc.getName();
- _builder.append(_name_7, " ");
+ String _name_14 = dc.getName();
+ _builder.append(_name_14, " ");
_builder.append(" copy = new ");
- String _name_8 = dc.getName();
- _builder.append(_name_8, " ");
+ String _name_15 = dc.getName();
+ _builder.append(_name_15, " ");
_builder.append("();");
_builder.newLineIfNotEmpty();
{
- EList<Attribute> _attributes_3 = dc.getAttributes();
- for(final Attribute a : _attributes_3) {
+ EList<Attribute> _attributes_6 = dc.getAttributes();
+ for(final Attribute a_3 : _attributes_6) {
{
- DataType _type = a.getType();
- if ((_type instanceof ComplexType)) {
+ DataType _type_1 = a_3.getType();
+ if ((_type_1 instanceof ComplexType)) {
{
- int _size = a.getSize();
+ int _size = a_3.getSize();
boolean _operator_equals = ObjectExtensions.operator_equals(((Integer)_size), ((Integer)0));
if (_operator_equals) {
_builder.append("\t\t");
_builder.append("copy.");
- String _name_9 = a.getName();
- _builder.append(_name_9, " ");
+ String _name_16 = a_3.getName();
+ _builder.append(_name_16, " ");
_builder.append(" = ");
- String _name_10 = a.getName();
- _builder.append(_name_10, " ");
+ String _name_17 = a_3.getName();
+ _builder.append(_name_17, " ");
_builder.append(".deepCopy();");
_builder.newLineIfNotEmpty();
} else {
_builder.append("\t\t");
_builder.append("for (int i=0;i<");
- int _size_1 = a.getSize();
+ int _size_1 = a_3.getSize();
_builder.append(_size_1, " ");
_builder.append(";i++){");
_builder.newLineIfNotEmpty();
_builder.append("\t\t");
_builder.append("\t");
_builder.append("copy.");
- String _name_11 = a.getName();
- _builder.append(_name_11, " ");
+ String _name_18 = a_3.getName();
+ _builder.append(_name_18, " ");
_builder.append("[i] = ");
- String _name_12 = a.getName();
- _builder.append(_name_12, " ");
+ String _name_19 = a_3.getName();
+ _builder.append(_name_19, " ");
_builder.append("[i].deepCopy();");
_builder.newLineIfNotEmpty();
_builder.append("\t\t");
@@ -217,33 +300,33 @@ public class DataClassGen {
}
} else {
{
- int _size_2 = a.getSize();
+ int _size_2 = a_3.getSize();
boolean _operator_equals_1 = ObjectExtensions.operator_equals(((Integer)_size_2), ((Integer)0));
if (_operator_equals_1) {
_builder.append("\t\t");
_builder.append("copy.");
- String _name_13 = a.getName();
- _builder.append(_name_13, " ");
+ String _name_20 = a_3.getName();
+ _builder.append(_name_20, " ");
_builder.append(" = ");
- String _name_14 = a.getName();
- _builder.append(_name_14, " ");
+ String _name_21 = a_3.getName();
+ _builder.append(_name_21, " ");
_builder.append(";");
_builder.newLineIfNotEmpty();
} else {
_builder.append("\t\t");
_builder.append("for (int i=0;i<");
- int _size_3 = a.getSize();
+ int _size_3 = a_3.getSize();
_builder.append(_size_3, " ");
_builder.append(";i++){");
_builder.newLineIfNotEmpty();
_builder.append("\t\t");
_builder.append("\t");
_builder.append("copy.");
- String _name_15 = a.getName();
- _builder.append(_name_15, " ");
+ String _name_22 = a_3.getName();
+ _builder.append(_name_22, " ");
_builder.append("[i] = ");
- String _name_16 = a.getName();
- _builder.append(_name_16, " ");
+ String _name_23 = a_3.getName();
+ _builder.append(_name_23, " ");
_builder.append("[i];");
_builder.newLineIfNotEmpty();
_builder.append("\t\t");
diff --git a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/ProtocolClassGen.java b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/ProtocolClassGen.java
index 1a6219dbc..253c0ccd5 100644
--- a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/ProtocolClassGen.java
+++ b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/ProtocolClassGen.java
@@ -5,6 +5,7 @@ import com.google.inject.Singleton;
import java.util.List;
import org.eclipse.emf.common.util.EList;
import org.eclipse.etrice.core.room.Attribute;
+import org.eclipse.etrice.core.room.DataClass;
import org.eclipse.etrice.core.room.DataType;
import org.eclipse.etrice.core.room.DetailCode;
import org.eclipse.etrice.core.room.Message;
@@ -623,7 +624,7 @@ public class ProtocolClassGen {
_builder.append("public void ");
String _name = m.getName();
_builder.append(_name, "");
- _builder.append(" (");
+ _builder.append("(");
{
VarDecl _data = m.getData();
boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_data, null);
@@ -639,10 +640,53 @@ public class ProtocolClassGen {
}
}
_builder.append(")");
- _builder.newLineIfNotEmpty();
return _builder;
}
+ public StringConcatenation messageSignatureExplicit(final Message m) {
+ StringConcatenation _xblockexpression = null;
+ {
+ VarDecl _data = m.getData();
+ DataType _type = _data.getType();
+ DataClass dc = ((DataClass) _type);
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("public void ");
+ String _name = m.getName();
+ _builder.append(_name, "");
+ _builder.append("(");
+ {
+ DataClass _base = dc.getBase();
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_base, null);
+ if (_operator_notEquals) {
+ DataClass _base_1 = dc.getBase();
+ String _typeName = this._typeHelpers.typeName(_base_1);
+ _builder.append(_typeName, "");
+ _builder.append(" _super, ");
+ }
+ }
+ {
+ EList<Attribute> _attributes = dc.getAttributes();
+ boolean hasAnyElements = false;
+ for(final Attribute a : _attributes) {
+ if (!hasAnyElements) {
+ hasAnyElements = true;
+ } else {
+ _builder.appendImmediate(", ", "");
+ }
+ DataType _type_1 = a.getType();
+ String _typeName_1 = this._typeHelpers.typeName(_type_1);
+ _builder.append(_typeName_1, "");
+ _builder.append(" ");
+ String _name_1 = a.getName();
+ _builder.append(_name_1, "");
+ }
+ }
+ _builder.append(")");
+ _xblockexpression = (_builder);
+ }
+ return _xblockexpression;
+ }
+
public StringConcatenation messageCall(final Message m) {
StringConcatenation _builder = new StringConcatenation();
String _name = m.getName();
@@ -659,117 +703,173 @@ public class ProtocolClassGen {
}
}
_builder.append(")");
- _builder.newLineIfNotEmpty();
return _builder;
}
public StringConcatenation sendMessage(final Message m, final boolean conj) {
- StringConcatenation _builder = new StringConcatenation();
- String _xifexpression = null;
- if (conj) {
- _xifexpression = "IN";
- } else {
- _xifexpression = "OUT";
- }
- String dir = _xifexpression;
- _builder.newLineIfNotEmpty();
- MessageHandler _sendHandler = this.roomExt.getSendHandler(m, conj);
- MessageHandler hdlr = _sendHandler;
- _builder.newLineIfNotEmpty();
- StringConcatenation _messageSignature = this.messageSignature(m);
- _builder.append(_messageSignature, "");
- _builder.append("{");
- _builder.newLineIfNotEmpty();
+ StringConcatenation _xblockexpression = null;
{
- boolean _operator_notEquals = ObjectExtensions.operator_notEquals(hdlr, null);
- if (_operator_notEquals) {
- _builder.append("\t");
- {
- DetailCode _detailCode = hdlr.getDetailCode();
- EList<String> _commands = _detailCode.getCommands();
- for(final String command : _commands) {
- _builder.append("\t");
- _builder.append(command, " ");
- _builder.newLineIfNotEmpty();
+ String _xifexpression = null;
+ if (conj) {
+ _xifexpression = "IN";
+ } else {
+ _xifexpression = "OUT";
+ }
+ String dir = _xifexpression;
+ MessageHandler _sendHandler = this.roomExt.getSendHandler(m, conj);
+ MessageHandler hdlr = _sendHandler;
+ StringConcatenation _builder = new StringConcatenation();
+ StringConcatenation _messageSignature = this.messageSignature(m);
+ _builder.append(_messageSignature, "");
+ _builder.append(" {");
+ _builder.newLineIfNotEmpty();
+ {
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(hdlr, null);
+ if (_operator_notEquals) {
+ _builder.append("\t");
+ {
+ DetailCode _detailCode = hdlr.getDetailCode();
+ EList<String> _commands = _detailCode.getCommands();
+ for(final String command : _commands) {
+ _builder.append("\t");
+ _builder.append(command, " ");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ } else {
+ _builder.append("\t");
+ _builder.append("if (messageStrings[ ");
+ _builder.append(dir, " ");
+ _builder.append("_");
+ String _name = m.getName();
+ _builder.append(_name, " ");
+ _builder.append("] != \"timerTick\"){");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("// TODOTS: model switch for activation");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("DebuggingService.getInstance().addMessageAsyncOut(getAddress(), getPeerAddress(), messageStrings[");
+ _builder.append(dir, " ");
+ _builder.append("_");
+ String _name_1 = m.getName();
+ _builder.append(_name_1, " ");
+ _builder.append("]);");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("if (getPeerAddress()!=null)");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("\t");
+ {
+ VarDecl _data = m.getData();
+ boolean _operator_equals = ObjectExtensions.operator_equals(_data, null);
+ if (_operator_equals) {
+ _builder.append("getPeerMsgReceiver().receive(new EventMessage(getPeerAddress(), ");
+ _builder.append(dir, " ");
+ _builder.append("_");
+ String _name_2 = m.getName();
+ _builder.append(_name_2, " ");
+ _builder.append("));");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.append("\t");
+ } else {
+ _builder.append("getPeerMsgReceiver().receive(new EventWithDataMessage(getPeerAddress(), ");
+ _builder.append(dir, " ");
+ _builder.append("_");
+ String _name_3 = m.getName();
+ _builder.append(_name_3, " ");
+ _builder.append(", ");
+ VarDecl _data_1 = m.getData();
+ String _name_4 = _data_1.getName();
+ _builder.append(_name_4, " ");
+ {
+ boolean _operator_and = false;
+ VarDecl _data_2 = m.getData();
+ boolean _isRef = _data_2.isRef();
+ boolean _operator_not = BooleanExtensions.operator_not(_isRef);
+ if (!_operator_not) {
+ _operator_and = false;
+ } else {
+ VarDecl _data_3 = m.getData();
+ DataType _type = _data_3.getType();
+ boolean _operator_not_1 = BooleanExtensions.operator_not((_type instanceof PrimitiveType));
+ _operator_and = BooleanExtensions.operator_and(_operator_not, _operator_not_1);
+ }
+ if (_operator_and) {
+ _builder.append(".deepCopy()");
+ }
+ }
+ _builder.append("));");
+ _builder.newLineIfNotEmpty();
+ }
}
}
- } else {
- _builder.append("\t");
- _builder.append("if (messageStrings[ ");
- _builder.append(dir, " ");
- _builder.append("_");
- String _name = m.getName();
- _builder.append(_name, " ");
- _builder.append("] != \"timerTick\"){");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("// TODOTS: model switch for activation");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("DebuggingService.getInstance().addMessageAsyncOut(getAddress(), getPeerAddress(), messageStrings[");
- _builder.append(dir, " ");
- _builder.append("_");
- String _name_1 = m.getName();
- _builder.append(_name_1, " ");
- _builder.append("]);");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("if (getPeerAddress()!=null)");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("\t");
- {
- VarDecl _data = m.getData();
- boolean _operator_equals = ObjectExtensions.operator_equals(_data, null);
- if (_operator_equals) {
- _builder.append("getPeerMsgReceiver().receive(new EventMessage(getPeerAddress(), ");
- _builder.append(dir, " ");
- _builder.append("_");
- String _name_2 = m.getName();
- _builder.append(_name_2, " ");
- _builder.append("));");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("\t");
- } else {
- _builder.append("getPeerMsgReceiver().receive(new EventWithDataMessage(getPeerAddress(), ");
- _builder.append(dir, " ");
- _builder.append("_");
- String _name_3 = m.getName();
- _builder.append(_name_3, " ");
- _builder.append(", ");
- VarDecl _data_1 = m.getData();
- String _name_4 = _data_1.getName();
- _builder.append(_name_4, " ");
- {
- boolean _operator_and = false;
- VarDecl _data_2 = m.getData();
- boolean _isRef = _data_2.isRef();
- boolean _operator_not = BooleanExtensions.operator_not(_isRef);
- if (!_operator_not) {
- _operator_and = false;
+ }
+ _builder.append("}");
+ _builder.newLine();
+ {
+ boolean _operator_and_1 = false;
+ VarDecl _data_4 = m.getData();
+ boolean _operator_notEquals_1 = ObjectExtensions.operator_notEquals(_data_4, null);
+ if (!_operator_notEquals_1) {
+ _operator_and_1 = false;
+ } else {
+ VarDecl _data_5 = m.getData();
+ DataType _type_1 = _data_5.getType();
+ _operator_and_1 = BooleanExtensions.operator_and(_operator_notEquals_1, (_type_1 instanceof DataClass));
+ }
+ if (_operator_and_1) {
+ StringConcatenation _messageSignatureExplicit = this.messageSignatureExplicit(m);
+ _builder.append(_messageSignatureExplicit, "");
+ _builder.append(" {");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ String _name_5 = m.getName();
+ _builder.append(_name_5, " ");
+ _builder.append("(new ");
+ VarDecl _data_6 = m.getData();
+ DataType _type_2 = _data_6.getType();
+ String _name_6 = _type_2.getName();
+ _builder.append(_name_6, " ");
+ _builder.append("(");
+ {
+ VarDecl _data_7 = m.getData();
+ DataType _type_3 = _data_7.getType();
+ DataClass _base = ((DataClass) _type_3).getBase();
+ boolean _operator_notEquals_2 = ObjectExtensions.operator_notEquals(_base, null);
+ if (_operator_notEquals_2) {
+ _builder.append("_super, ");
+ }
+ }
+ {
+ VarDecl _data_8 = m.getData();
+ DataType _type_4 = _data_8.getType();
+ EList<Attribute> _attributes = ((DataClass) _type_4).getAttributes();
+ boolean hasAnyElements = false;
+ for(final Attribute a : _attributes) {
+ if (!hasAnyElements) {
+ hasAnyElements = true;
} else {
- VarDecl _data_3 = m.getData();
- DataType _type = _data_3.getType();
- boolean _operator_not_1 = BooleanExtensions.operator_not((_type instanceof PrimitiveType));
- _operator_and = BooleanExtensions.operator_and(_operator_not, _operator_not_1);
- }
- if (_operator_and) {
- _builder.append(".deepCopy()");
+ _builder.appendImmediate(", ", " ");
}
+ String _name_7 = a.getName();
+ _builder.append(_name_7, " ");
}
- _builder.append("));");
- _builder.newLineIfNotEmpty();
}
+ _builder.append("));");
+ _builder.newLineIfNotEmpty();
+ _builder.append("}");
+ _builder.newLine();
}
}
+ _xblockexpression = (_builder);
}
- _builder.append("}");
- _builder.newLine();
- return _builder;
+ return _xblockexpression;
}
}

Back to the top