Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenrik Rentz-Reichert2013-01-29 17:01:51 +0000
committerHenrik Rentz-Reichert2013-01-29 17:01:51 +0000
commit7c7b973bf15cbe494c4134b50fb77193abcd5823 (patch)
tree02d0ff7def1e8993a8671db29e7cdf8f89f8a528
parentea206e0ea4cd8b609417b0ab8a40c7587312679a (diff)
downloadorg.eclipse.etrice-7c7b973bf15cbe494c4134b50fb77193abcd5823.tar.gz
org.eclipse.etrice-7c7b973bf15cbe494c4134b50fb77193abcd5823.tar.xz
org.eclipse.etrice-7c7b973bf15cbe494c4134b50fb77193abcd5823.zip
[generator] added more extension methods
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/generic/RoomExtensions.xtend42
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/generic/TypeHelpers.xtend37
-rw-r--r--plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/generic/RoomExtensions.java62
-rw-r--r--plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/generic/TypeHelpers.java51
4 files changed, 191 insertions, 1 deletions
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/generic/RoomExtensions.xtend b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/generic/RoomExtensions.xtend
index 3ca6b8f36..b1a382982 100644
--- a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/generic/RoomExtensions.xtend
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/generic/RoomExtensions.xtend
@@ -20,6 +20,7 @@ import com.google.inject.Singleton
import java.io.File
import java.util.ArrayList
import java.util.List
+import java.util.Collections
import org.eclipse.emf.ecore.EObject
import org.eclipse.etrice.core.genmodel.etricegen.ActiveTrigger
import org.eclipse.etrice.core.genmodel.etricegen.ExpandedActorClass
@@ -55,6 +56,7 @@ import org.eclipse.etrice.core.room.Trigger
import static org.eclipse.etrice.generator.base.CodegenHelpers.*
import static extension org.eclipse.etrice.core.room.util.RoomHelpers.*
+import org.eclipse.etrice.core.room.InterfaceItem
@Singleton
class RoomExtensions {
@@ -280,6 +282,28 @@ class RoomExtensions {
return pc.getAllOutgoingMessages()
}
+ def List<Message> getIncoming(InterfaceItem p) {
+ if (p.protocol!=null)
+ p.protocol.getIncoming(p.conjugated)
+ else
+ Collections::emptyList()
+ }
+
+ def List<Message> getOutgoing(InterfaceItem p) {
+ if (p.protocol!=null)
+ p.protocol.getOutgoing(p.conjugated)
+ else
+ Collections::emptyList()
+ }
+
+ def boolean isOnlyOutgoing(InterfaceItem p){
+ getIncoming(p).empty
+ }
+
+ def boolean isOnlyIncoming(InterfaceItem p){
+ getOutgoing(p).empty
+ }
+
def PortClass getPortClass(ProtocolClass pc, boolean conj) {
if (conj)
return pc.conjugate
@@ -309,6 +333,22 @@ class RoomExtensions {
return false;
}
+ def boolean isConjugated(InterfaceItem iii) {
+ if (iii instanceof Port) {
+ return (iii as Port).conjugated
+ }
+ else if (iii instanceof SAPRef) {
+ return true
+ }
+ else if (iii instanceof SPPRef) {
+ return false
+ }
+ else {
+ // should not happen
+ return false
+ }
+ }
+
def boolean isConjugated(InterfaceItemInstance iii) {
if (iii instanceof PortInstance) {
return (iii as PortInstance).port.conjugated
@@ -592,6 +632,6 @@ class RoomExtensions {
}
return result;
- }
+ }
}
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/generic/TypeHelpers.xtend b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/generic/TypeHelpers.xtend
index 9e6a86f9e..3938c6a7d 100644
--- a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/generic/TypeHelpers.xtend
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/generic/TypeHelpers.xtend
@@ -34,6 +34,8 @@ import org.eclipse.etrice.core.room.PrimitiveType
import org.eclipse.etrice.core.room.VarDecl
import org.eclipse.etrice.core.room.util.RoomHelpers
import org.eclipse.etrice.generator.base.IDataConfiguration
+import org.eclipse.etrice.core.room.RefableType
+import org.eclipse.etrice.core.room.Message
@Singleton
class TypeHelpers {
@@ -49,6 +51,41 @@ class TypeHelpers {
else
return type.name
}
+
+ def String getTypeName(DataType t) {
+ typeName(t)
+ }
+
+ def String getTypeName(RefableType t) {
+ typeName(t.getType())
+ }
+
+ def String getTypeName(Message m) {
+ getTypeName(m.getData().getRefType())
+ }
+
+ def String getTypeName(Attribute att) {
+ getTypeName(att.getRefType())
+ }
+
+ /**
+ * This function returns the name of the primitive type.
+ * It can be overridden to map room types to the target language. This (basic) implementation returns the room type
+ *
+ * @param t
+ * @return
+ */
+ def String getPrimitiveTypeName(RefableType t) {
+ t.getType().getName()
+ }
+
+ def String getPrimitiveTypeName(Message m) {
+ getPrimitiveTypeName(m.getData().getRefType())
+ }
+
+ def String getPrimitiveTypeName(Attribute att) {
+ getPrimitiveTypeName(att.getRefType())
+ }
def String defaultValue(VarDecl a) {
return languageExt.defaultValue(a.refType.type)
diff --git a/plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/generic/RoomExtensions.java b/plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/generic/RoomExtensions.java
index 9c1dd65dd..447733a8b 100644
--- a/plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/generic/RoomExtensions.java
+++ b/plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/generic/RoomExtensions.java
@@ -6,6 +6,7 @@ import com.google.inject.Singleton;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collections;
import java.util.List;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.common.util.URI;
@@ -27,6 +28,7 @@ import org.eclipse.etrice.core.room.ExternalPort;
import org.eclipse.etrice.core.room.GeneralProtocolClass;
import org.eclipse.etrice.core.room.Guard;
import org.eclipse.etrice.core.room.InitialTransition;
+import org.eclipse.etrice.core.room.InterfaceItem;
import org.eclipse.etrice.core.room.Message;
import org.eclipse.etrice.core.room.MessageHandler;
import org.eclipse.etrice.core.room.Port;
@@ -394,6 +396,50 @@ public class RoomExtensions {
}
}
+ public List<Message> getIncoming(final InterfaceItem p) {
+ List<Message> _xifexpression = null;
+ ProtocolClass _protocol = RoomHelpers.getProtocol(p);
+ boolean _notEquals = (!Objects.equal(_protocol, null));
+ if (_notEquals) {
+ ProtocolClass _protocol_1 = RoomHelpers.getProtocol(p);
+ boolean _isConjugated = this.isConjugated(p);
+ List<Message> _incoming = this.getIncoming(_protocol_1, _isConjugated);
+ _xifexpression = _incoming;
+ } else {
+ List<Message> _emptyList = Collections.<Message>emptyList();
+ _xifexpression = _emptyList;
+ }
+ return _xifexpression;
+ }
+
+ public List<Message> getOutgoing(final InterfaceItem p) {
+ List<Message> _xifexpression = null;
+ ProtocolClass _protocol = RoomHelpers.getProtocol(p);
+ boolean _notEquals = (!Objects.equal(_protocol, null));
+ if (_notEquals) {
+ ProtocolClass _protocol_1 = RoomHelpers.getProtocol(p);
+ boolean _isConjugated = this.isConjugated(p);
+ List<Message> _outgoing = this.getOutgoing(_protocol_1, _isConjugated);
+ _xifexpression = _outgoing;
+ } else {
+ List<Message> _emptyList = Collections.<Message>emptyList();
+ _xifexpression = _emptyList;
+ }
+ return _xifexpression;
+ }
+
+ public boolean isOnlyOutgoing(final InterfaceItem p) {
+ List<Message> _incoming = this.getIncoming(p);
+ boolean _isEmpty = _incoming.isEmpty();
+ return _isEmpty;
+ }
+
+ public boolean isOnlyIncoming(final InterfaceItem p) {
+ List<Message> _outgoing = this.getOutgoing(p);
+ boolean _isEmpty = _outgoing.isEmpty();
+ return _isEmpty;
+ }
+
public PortClass getPortClass(final ProtocolClass pc, final boolean conj) {
if (conj) {
return pc.getConjugate();
@@ -442,6 +488,22 @@ public class RoomExtensions {
return false;
}
+ public boolean isConjugated(final InterfaceItem iii) {
+ if ((iii instanceof Port)) {
+ return ((Port) iii).isConjugated();
+ } else {
+ if ((iii instanceof SAPRef)) {
+ return true;
+ } else {
+ if ((iii instanceof SPPRef)) {
+ return false;
+ } else {
+ return false;
+ }
+ }
+ }
+ }
+
public boolean isConjugated(final InterfaceItemInstance iii) {
if ((iii instanceof PortInstance)) {
Port _port = ((PortInstance) iii).getPort();
diff --git a/plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/generic/TypeHelpers.java b/plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/generic/TypeHelpers.java
index 4a0366656..713de8e17 100644
--- a/plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/generic/TypeHelpers.java
+++ b/plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/generic/TypeHelpers.java
@@ -13,6 +13,7 @@ import org.eclipse.etrice.core.room.DataClass;
import org.eclipse.etrice.core.room.DataType;
import org.eclipse.etrice.core.room.ExternalType;
import org.eclipse.etrice.core.room.LiteralType;
+import org.eclipse.etrice.core.room.Message;
import org.eclipse.etrice.core.room.PortClass;
import org.eclipse.etrice.core.room.PrimitiveType;
import org.eclipse.etrice.core.room.ProtocolClass;
@@ -44,6 +45,56 @@ public class TypeHelpers {
}
}
+ public String getTypeName(final DataType t) {
+ String _typeName = this.typeName(t);
+ return _typeName;
+ }
+
+ public String getTypeName(final RefableType t) {
+ DataType _type = t.getType();
+ String _typeName = this.typeName(_type);
+ return _typeName;
+ }
+
+ public String getTypeName(final Message m) {
+ VarDecl _data = m.getData();
+ RefableType _refType = _data.getRefType();
+ String _typeName = this.getTypeName(_refType);
+ return _typeName;
+ }
+
+ public String getTypeName(final Attribute att) {
+ RefableType _refType = att.getRefType();
+ String _typeName = this.getTypeName(_refType);
+ return _typeName;
+ }
+
+ /**
+ * This function returns the name of the primitive type.
+ * It can be overridden to map room types to the target language. This (basic) implementation returns the room type
+ *
+ * @param t
+ * @return
+ */
+ public String getPrimitiveTypeName(final RefableType t) {
+ DataType _type = t.getType();
+ String _name = _type.getName();
+ return _name;
+ }
+
+ public String getPrimitiveTypeName(final Message m) {
+ VarDecl _data = m.getData();
+ RefableType _refType = _data.getRefType();
+ String _primitiveTypeName = this.getPrimitiveTypeName(_refType);
+ return _primitiveTypeName;
+ }
+
+ public String getPrimitiveTypeName(final Attribute att) {
+ RefableType _refType = att.getRefType();
+ String _primitiveTypeName = this.getPrimitiveTypeName(_refType);
+ return _primitiveTypeName;
+ }
+
public String defaultValue(final VarDecl a) {
RefableType _refType = a.getRefType();
DataType _type = _refType.getType();

Back to the top