diff options
Diffstat (limited to 'plugins/org.eclipse.etrice.core.room/xtend-gen/org/eclipse/etrice/core/room/util/CommonDataCalculator.java')
-rw-r--r-- | plugins/org.eclipse.etrice.core.room/xtend-gen/org/eclipse/etrice/core/room/util/CommonDataCalculator.java | 46 |
1 files changed, 39 insertions, 7 deletions
diff --git a/plugins/org.eclipse.etrice.core.room/xtend-gen/org/eclipse/etrice/core/room/util/CommonDataCalculator.java b/plugins/org.eclipse.etrice.core.room/xtend-gen/org/eclipse/etrice/core/room/util/CommonDataCalculator.java index 846d02797..976d28914 100644 --- a/plugins/org.eclipse.etrice.core.room/xtend-gen/org/eclipse/etrice/core/room/util/CommonDataCalculator.java +++ b/plugins/org.eclipse.etrice.core.room/xtend-gen/org/eclipse/etrice/core/room/util/CommonDataCalculator.java @@ -10,6 +10,7 @@ */ package org.eclipse.etrice.core.room.util; +import com.google.common.base.Objects; import com.google.common.collect.Iterables; import java.util.List; import java.util.Set; @@ -26,13 +27,17 @@ import org.eclipse.etrice.core.genmodel.fsm.fsmgen.Link; import org.eclipse.etrice.core.room.DataType; import org.eclipse.etrice.core.room.Message; import org.eclipse.etrice.core.room.RefableType; +import org.eclipse.etrice.core.room.RoomFactory; import org.eclipse.etrice.core.room.VarDecl; +import org.eclipse.etrice.core.room.util.RoomHelpers; import org.eclipse.xtext.xbase.lib.Functions.Function1; import org.eclipse.xtext.xbase.lib.IterableExtensions; import org.eclipse.xtext.xbase.lib.ListExtensions; @SuppressWarnings("all") public class CommonDataCalculator implements ICommonDataCalculator { + private RoomHelpers roomHelpers = new RoomHelpers(); + @Override public EObject calculateCommonData(final Link l) { boolean _isIfitemTriggered = l.isIfitemTriggered(); @@ -66,14 +71,20 @@ public class CommonDataCalculator implements ICommonDataCalculator { }; Iterable<EList<MessageFromIf>> _map_2 = IterableExtensions.<Trigger, EList<MessageFromIf>>map(triggers, _function_2); Iterable<MessageFromIf> _flatten = Iterables.<MessageFromIf>concat(_map_2); - final Function1<MessageFromIf, DataType> _function_3 = new Function1<MessageFromIf, DataType>() { + final Function1<MessageFromIf, VarDecl> _function_3 = new Function1<MessageFromIf, VarDecl>() { @Override - public DataType apply(final MessageFromIf it) { + public VarDecl apply(final MessageFromIf it) { EObject _message = it.getMessage(); - VarDecl _data = ((Message) _message).getData(); + return ((Message) _message).getData(); + } + }; + final Iterable<VarDecl> varDeclarations = IterableExtensions.<MessageFromIf, VarDecl>map(_flatten, _function_3); + final Function1<VarDecl, DataType> _function_4 = new Function1<VarDecl, DataType>() { + @Override + public DataType apply(final VarDecl it) { RefableType _refType = null; - if (_data!=null) { - _refType=_data.getRefType(); + if (it!=null) { + _refType=it.getRefType(); } DataType _type = null; if (_refType!=null) { @@ -82,12 +93,33 @@ public class CommonDataCalculator implements ICommonDataCalculator { return _type; } }; - Iterable<DataType> _map_3 = IterableExtensions.<MessageFromIf, DataType>map(_flatten, _function_3); + Iterable<DataType> _map_3 = IterableExtensions.<VarDecl, DataType>map(varDeclarations, _function_4); final Set<DataType> allData = IterableExtensions.<DataType>toSet(_map_3); int _size = allData.size(); boolean _equals = (_size == 1); if (_equals) { - return IterableExtensions.<DataType>head(allData); + return IterableExtensions.<VarDecl>head(varDeclarations); + } else { + final Function1<VarDecl, RefableType> _function_5 = new Function1<VarDecl, RefableType>() { + @Override + public RefableType apply(final VarDecl it) { + RefableType _refType = null; + if (it!=null) { + _refType=it.getRefType(); + } + return _refType; + } + }; + Iterable<RefableType> _map_4 = IterableExtensions.<VarDecl, RefableType>map(varDeclarations, _function_5); + final List<RefableType> types = IterableExtensions.<RefableType>toList(_map_4); + final RefableType rt = this.roomHelpers.getLastCommonSuperType(types); + boolean _notEquals = (!Objects.equal(rt, null)); + if (_notEquals) { + final VarDecl vd = RoomFactory.eINSTANCE.createVarDecl(); + vd.setName("data"); + vd.setRefType(rt); + return vd; + } } } return null; |