Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenrik Rentz-Reichert2011-10-18 16:40:42 +0000
committerHenrik Rentz-Reichert2011-10-18 16:40:42 +0000
commit9c0bac35c125377854e0e41a316c56ee4d760425 (patch)
tree514ad0b208d5012fab4f9420b346833cf37bc80e /plugins
parentc1966f50777c144648a50828ed568a45960a8427 (diff)
downloadorg.eclipse.etrice-9c0bac35c125377854e0e41a316c56ee4d760425.tar.gz
org.eclipse.etrice-9c0bac35c125377854e0e41a316c56ee4d760425.tar.xz
org.eclipse.etrice-9c0bac35c125377854e0e41a316c56ee4d760425.zip
[generator] DetailCodeTranslator distinguishes in and outgoing
allow write for outgoing: port.myOut() allow read for incoming: port.myIn
Diffstat (limited to 'plugins')
-rw-r--r--plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/room/util/RoomHelpers.java27
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/base/DetailCodeTranslator.java35
2 files changed, 37 insertions, 25 deletions
diff --git a/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/room/util/RoomHelpers.java b/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/room/util/RoomHelpers.java
index d4f398c47..844570e0c 100644
--- a/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/room/util/RoomHelpers.java
+++ b/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/room/util/RoomHelpers.java
@@ -29,10 +29,14 @@ import org.eclipse.etrice.core.room.InterfaceItem;
import org.eclipse.etrice.core.room.KeyValue;
import org.eclipse.etrice.core.room.LayerConnection;
import org.eclipse.etrice.core.room.LogicalSystem;
+import org.eclipse.etrice.core.room.Message;
import org.eclipse.etrice.core.room.Operation;
import org.eclipse.etrice.core.room.Port;
+import org.eclipse.etrice.core.room.ProtocolClass;
import org.eclipse.etrice.core.room.RefinedState;
import org.eclipse.etrice.core.room.RoomPackage;
+import org.eclipse.etrice.core.room.SAPRef;
+import org.eclipse.etrice.core.room.SPPRef;
import org.eclipse.etrice.core.room.ServiceImplementation;
import org.eclipse.etrice.core.room.State;
import org.eclipse.etrice.core.room.StateGraph;
@@ -543,4 +547,27 @@ public class RoomHelpers {
return true;
}
+
+ public static List<Message> getMessageList(InterfaceItem item, boolean outgoing) {
+ ProtocolClass protocol = null;
+ if (item instanceof Port) {
+ protocol = ((Port) item).getProtocol();
+ if (((Port) item).isConjugated())
+ outgoing = !outgoing;
+ }
+ else if (item instanceof SAPRef) {
+ outgoing = !outgoing;
+ protocol = ((SAPRef)item).getProtocol();
+ }
+ else if (item instanceof SPPRef) {
+ protocol = ((SPPRef)item).getProtocol();
+ }
+ else {
+ assert(false): "unexpected sub type";
+ return null;
+ }
+
+ return outgoing? protocol.getOutgoingMessages():protocol.getIncomingMessages();
+ }
+
}
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/base/DetailCodeTranslator.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/base/DetailCodeTranslator.java
index 077f94e39..f698ae774 100644
--- a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/base/DetailCodeTranslator.java
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/base/DetailCodeTranslator.java
@@ -22,9 +22,6 @@ import org.eclipse.etrice.core.room.DetailCode;
import org.eclipse.etrice.core.room.InterfaceItem;
import org.eclipse.etrice.core.room.Message;
import org.eclipse.etrice.core.room.Operation;
-import org.eclipse.etrice.core.room.Port;
-import org.eclipse.etrice.core.room.SAPRef;
-import org.eclipse.etrice.core.room.SPPRef;
import org.eclipse.etrice.core.room.util.RoomHelpers;
/**
@@ -114,16 +111,21 @@ public class DetailCodeTranslator {
else {
InterfaceItem item = name2item.get(token);
if (item!=null) {
- Message msg = getMessage(text, curr, item);
- ArrayList<String> args = getArgs(text, curr);
+ int start = curr.pos;
+ Message msg = getMessage(text, curr, item, true);
if (msg!=null) {
+ ArrayList<String> args = getArgs(text, curr);
if (args!=null) {
if (argsMatching(msg, args)) {
String orig = text.substring(last, curr.pos);
translated = provider.getInterfaceItemMessageText(item, msg, args, orig);
}
}
- else {
+ }
+ else {
+ curr.pos = start;
+ msg = getMessage(text, curr, item, false);
+ if (msg!=null) {
if (text.charAt(curr.pos)!='(') {
String orig = text.substring(last, curr.pos);
translated = provider.getInterfaceItemMessageValue(item, msg, orig);
@@ -187,7 +189,7 @@ public class DetailCodeTranslator {
}
}
- private Message getMessage(String text, Position curr, InterfaceItem item) {
+ private Message getMessage(String text, Position curr, InterfaceItem item, boolean outgoing) {
proceedToToken(text, curr);
if (text.charAt(curr.pos)!='.')
@@ -198,24 +200,7 @@ public class DetailCodeTranslator {
String token = getToken(text, curr);
- List<Message> messages = null;
- if (item instanceof Port) {
- if (((Port) item).isConjugated())
- messages = ((Port) item).getProtocol().getIncomingMessages();
- else
- messages = ((Port) item).getProtocol().getOutgoingMessages();
- }
- else if (item instanceof SAPRef) {
- messages = ((SAPRef)item).getProtocol().getIncomingMessages();
- }
- else if (item instanceof SPPRef) {
- messages = ((SPPRef)item).getProtocol().getOutgoingMessages();
- }
- else {
- assert(false): "unexpected sub type";
- return null;
- }
-
+ List<Message> messages = RoomHelpers.getMessageList(item, outgoing);
for (Message message : messages) {
if (message.getName().equals(token))
return message;

Back to the top