Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.etrice.core.genmodel/src/org/eclipse/etrice/core/genmodel')
-rw-r--r--plugins/org.eclipse.etrice.core.genmodel/src/org/eclipse/etrice/core/genmodel/RoomGenmodelValidator.java4
-rw-r--r--plugins/org.eclipse.etrice.core.genmodel/src/org/eclipse/etrice/core/genmodel/builder/BindingUtil.java2
-rw-r--r--plugins/org.eclipse.etrice.core.genmodel/src/org/eclipse/etrice/core/genmodel/builder/GeneratorModelBuilder.java19
-rw-r--r--plugins/org.eclipse.etrice.core.genmodel/src/org/eclipse/etrice/core/genmodel/etricegen/ETriceGenPackage.java48
-rw-r--r--plugins/org.eclipse.etrice.core.genmodel/src/org/eclipse/etrice/core/genmodel/etricegen/ExpandedActorClass.java37
-rw-r--r--plugins/org.eclipse.etrice.core.genmodel/src/org/eclipse/etrice/core/genmodel/etricegen/impl/ETriceGenPackageImpl.java16
-rw-r--r--plugins/org.eclipse.etrice.core.genmodel/src/org/eclipse/etrice/core/genmodel/etricegen/impl/ExpandedActorClassImpl.java273
-rw-r--r--plugins/org.eclipse.etrice.core.genmodel/src/org/eclipse/etrice/core/genmodel/etricegen/util/ETriceGenAdapterFactory.java44
-rw-r--r--plugins/org.eclipse.etrice.core.genmodel/src/org/eclipse/etrice/core/genmodel/etricegen/util/ETriceGenSwitch.java42
9 files changed, 273 insertions, 212 deletions
diff --git a/plugins/org.eclipse.etrice.core.genmodel/src/org/eclipse/etrice/core/genmodel/RoomGenmodelValidator.java b/plugins/org.eclipse.etrice.core.genmodel/src/org/eclipse/etrice/core/genmodel/RoomGenmodelValidator.java
index 142917c15..e8492bc73 100644
--- a/plugins/org.eclipse.etrice.core.genmodel/src/org/eclipse/etrice/core/genmodel/RoomGenmodelValidator.java
+++ b/plugins/org.eclipse.etrice.core.genmodel/src/org/eclipse/etrice/core/genmodel/RoomGenmodelValidator.java
@@ -24,8 +24,8 @@ import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.etrice.core.common.validation.ICustomValidator;
import org.eclipse.etrice.core.genmodel.builder.GeneratorModelBuilder;
-import org.eclipse.etrice.core.genmodel.fsm.base.NullLogger;
-import org.eclipse.etrice.core.genmodel.fsm.fsmgen.IDiagnostician;
+import org.eclipse.etrice.core.genmodel.fsm.IDiagnostician;
+import org.eclipse.etrice.core.genmodel.fsm.NullLogger;
import org.eclipse.etrice.core.room.RoomModel;
import org.eclipse.etrice.core.room.RoomPackage;
import org.eclipse.xtext.validation.CheckMode;
diff --git a/plugins/org.eclipse.etrice.core.genmodel/src/org/eclipse/etrice/core/genmodel/builder/BindingUtil.java b/plugins/org.eclipse.etrice.core.genmodel/src/org/eclipse/etrice/core/genmodel/builder/BindingUtil.java
index 6d3330305..bbf1d9050 100644
--- a/plugins/org.eclipse.etrice.core.genmodel/src/org/eclipse/etrice/core/genmodel/builder/BindingUtil.java
+++ b/plugins/org.eclipse.etrice.core.genmodel/src/org/eclipse/etrice/core/genmodel/builder/BindingUtil.java
@@ -26,7 +26,7 @@ import org.eclipse.etrice.core.genmodel.etricegen.PortInstance;
import org.eclipse.etrice.core.genmodel.etricegen.PortKind;
import org.eclipse.etrice.core.genmodel.etricegen.StructureInstance;
import org.eclipse.etrice.core.genmodel.etricegen.SubSystemInstance;
-import org.eclipse.etrice.core.genmodel.fsm.fsmgen.IDiagnostician;
+import org.eclipse.etrice.core.genmodel.fsm.IDiagnostician;
import org.eclipse.etrice.core.room.ActorClass;
import org.eclipse.etrice.core.room.ActorContainerRef;
import org.eclipse.etrice.core.room.ActorRef;
diff --git a/plugins/org.eclipse.etrice.core.genmodel/src/org/eclipse/etrice/core/genmodel/builder/GeneratorModelBuilder.java b/plugins/org.eclipse.etrice.core.genmodel/src/org/eclipse/etrice/core/genmodel/builder/GeneratorModelBuilder.java
index 19c1002d7..aa84d3e58 100644
--- a/plugins/org.eclipse.etrice.core.genmodel/src/org/eclipse/etrice/core/genmodel/builder/GeneratorModelBuilder.java
+++ b/plugins/org.eclipse.etrice.core.genmodel/src/org/eclipse/etrice/core/genmodel/builder/GeneratorModelBuilder.java
@@ -26,6 +26,7 @@ import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.common.util.TreeIterator;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.etrice.core.RoomStandaloneSetup;
import org.eclipse.etrice.core.genmodel.etricegen.AbstractInstance;
import org.eclipse.etrice.core.genmodel.etricegen.ActorInstance;
import org.eclipse.etrice.core.genmodel.etricegen.ActorInterfaceInstance;
@@ -47,8 +48,10 @@ import org.eclipse.etrice.core.genmodel.etricegen.SubSystemInstance;
import org.eclipse.etrice.core.genmodel.etricegen.SystemInstance;
import org.eclipse.etrice.core.genmodel.etricegen.impl.AbstractInstanceImpl;
import org.eclipse.etrice.core.genmodel.etricegen.impl.StructureInstanceImpl;
-import org.eclipse.etrice.core.genmodel.fsm.base.ILogger;
-import org.eclipse.etrice.core.genmodel.fsm.fsmgen.IDiagnostician;
+import org.eclipse.etrice.core.genmodel.fsm.ExtendedFsmGenBuilder;
+import org.eclipse.etrice.core.genmodel.fsm.IDiagnostician;
+import org.eclipse.etrice.core.genmodel.fsm.ILogger;
+import org.eclipse.etrice.core.genmodel.fsm.fsmgen.GraphContainer;
import org.eclipse.etrice.core.room.ActorClass;
import org.eclipse.etrice.core.room.ActorContainerClass;
import org.eclipse.etrice.core.room.ActorContainerRef;
@@ -74,6 +77,8 @@ import org.eclipse.etrice.core.room.SubSystemClass;
import org.eclipse.etrice.core.room.SubSystemRef;
import org.eclipse.etrice.core.room.util.RoomHelpers;
+import com.google.inject.Injector;
+
/**
* A class for the creation of an intermediate model combining all information needed by
* the code generator.
@@ -1256,9 +1261,13 @@ public class GeneratorModelBuilder {
+" of "+((RoomModel)ac.eContainer()).getName());
ExpandedActorClass xpac = ETriceGenFactory.eINSTANCE.createExpandedActorClass();
- xpac.setModelComponent(ac);
-
- xpac.prepare(diagnostician);
+ Injector injector = new RoomStandaloneSetup().createInjectorAndDoEMFRegistration();
+ ExtendedFsmGenBuilder builder = new ExtendedFsmGenBuilder(injector, diagnostician);
+ GraphContainer gc = builder.createTransformedModel(ac);
+ builder.withChainHeads(gc);
+ builder.withCommonData(gc);
+ builder.withTriggersInStates(gc);
+ xpac.setGraphContainer(gc);
return xpac;
}
diff --git a/plugins/org.eclipse.etrice.core.genmodel/src/org/eclipse/etrice/core/genmodel/etricegen/ETriceGenPackage.java b/plugins/org.eclipse.etrice.core.genmodel/src/org/eclipse/etrice/core/genmodel/etricegen/ETriceGenPackage.java
index b43db7179..b1d782965 100644
--- a/plugins/org.eclipse.etrice.core.genmodel/src/org/eclipse/etrice/core/genmodel/etricegen/ETriceGenPackage.java
+++ b/plugins/org.eclipse.etrice.core.genmodel/src/org/eclipse/etrice/core/genmodel/etricegen/ETriceGenPackage.java
@@ -16,7 +16,6 @@ import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EEnum;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EReference;
-import org.eclipse.etrice.core.genmodel.fsm.fsmgen.FsmGenPackage;
/**
* <!-- begin-user-doc -->
@@ -2061,40 +2060,22 @@ public interface ETriceGenPackage extends EPackage {
int WIRED_SUB_SYSTEM_CLASS_FEATURE_COUNT = WIRED_STRUCTURE_CLASS_FEATURE_COUNT + 1;
/**
- * The feature id for the '<em><b>Model Component</b></em>' reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int EXPANDED_ACTOR_CLASS__MODEL_COMPONENT = FsmGenPackage.EXPANDED_MODEL_COMPONENT__MODEL_COMPONENT;
-
- /**
- * The feature id for the '<em><b>State Machine</b></em>' containment reference.
+ * The feature id for the '<em><b>Actor Class</b></em>' reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
* @ordered
*/
- int EXPANDED_ACTOR_CLASS__STATE_MACHINE = FsmGenPackage.EXPANDED_MODEL_COMPONENT__STATE_MACHINE;
+ int EXPANDED_ACTOR_CLASS__ACTOR_CLASS = 0;
/**
- * The feature id for the '<em><b>Transition Chains</b></em>' containment reference list.
+ * The feature id for the '<em><b>Graph Container</b></em>' containment reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
* @ordered
*/
- int EXPANDED_ACTOR_CLASS__TRANSITION_CHAINS = FsmGenPackage.EXPANDED_MODEL_COMPONENT__TRANSITION_CHAINS;
-
- /**
- * The feature id for the '<em><b>Actor Class</b></em>' reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int EXPANDED_ACTOR_CLASS__ACTOR_CLASS = FsmGenPackage.EXPANDED_MODEL_COMPONENT_FEATURE_COUNT + 0;
+ int EXPANDED_ACTOR_CLASS__GRAPH_CONTAINER = 1;
/**
* The number of structural features of the '<em>Expanded Actor Class</em>' class.
@@ -2103,7 +2084,7 @@ public interface ETriceGenPackage extends EPackage {
* @generated
* @ordered
*/
- int EXPANDED_ACTOR_CLASS_FEATURE_COUNT = FsmGenPackage.EXPANDED_MODEL_COMPONENT_FEATURE_COUNT + 1;
+ int EXPANDED_ACTOR_CLASS_FEATURE_COUNT = 2;
/**
* The meta object id for the '{@link org.eclipse.etrice.core.genmodel.etricegen.PortKind <em>Port Kind</em>}' enum.
@@ -2936,6 +2917,17 @@ public interface ETriceGenPackage extends EPackage {
EReference getExpandedActorClass_ActorClass();
/**
+ * Returns the meta object for the containment reference '{@link org.eclipse.etrice.core.genmodel.etricegen.ExpandedActorClass#getGraphContainer <em>Graph Container</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Graph Container</em>'.
+ * @see org.eclipse.etrice.core.genmodel.etricegen.ExpandedActorClass#getGraphContainer()
+ * @see #getExpandedActorClass()
+ * @generated
+ */
+ EReference getExpandedActorClass_GraphContainer();
+
+ /**
* Returns the meta object for class '{@link org.eclipse.etrice.core.genmodel.etricegen.WiredStructureClass <em>Wired Structure Class</em>}'.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -3813,6 +3805,14 @@ public interface ETriceGenPackage extends EPackage {
EReference EXPANDED_ACTOR_CLASS__ACTOR_CLASS = eINSTANCE.getExpandedActorClass_ActorClass();
/**
+ * The meta object literal for the '<em><b>Graph Container</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference EXPANDED_ACTOR_CLASS__GRAPH_CONTAINER = eINSTANCE.getExpandedActorClass_GraphContainer();
+
+ /**
* The meta object literal for the '{@link org.eclipse.etrice.core.genmodel.etricegen.impl.WiredStructureClassImpl <em>Wired Structure Class</em>}' class.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
diff --git a/plugins/org.eclipse.etrice.core.genmodel/src/org/eclipse/etrice/core/genmodel/etricegen/ExpandedActorClass.java b/plugins/org.eclipse.etrice.core.genmodel/src/org/eclipse/etrice/core/genmodel/etricegen/ExpandedActorClass.java
index 980dfc04c..92082868d 100644
--- a/plugins/org.eclipse.etrice.core.genmodel/src/org/eclipse/etrice/core/genmodel/etricegen/ExpandedActorClass.java
+++ b/plugins/org.eclipse.etrice.core.genmodel/src/org/eclipse/etrice/core/genmodel/etricegen/ExpandedActorClass.java
@@ -12,10 +12,10 @@
package org.eclipse.etrice.core.genmodel.etricegen;
-import org.eclipse.etrice.core.fsm.fSM.Transition;
-import org.eclipse.etrice.core.genmodel.fsm.fsmgen.ExpandedModelComponent;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.etrice.core.fsm.fSM.AbstractInterfaceItem;
+import org.eclipse.etrice.core.genmodel.fsm.fsmgen.GraphContainer;
import org.eclipse.etrice.core.room.ActorClass;
-import org.eclipse.etrice.core.room.VarDecl;
/**
* <!-- begin-user-doc -->
@@ -29,13 +29,14 @@ import org.eclipse.etrice.core.room.VarDecl;
* </p>
* <ul>
* <li>{@link org.eclipse.etrice.core.genmodel.etricegen.ExpandedActorClass#getActorClass <em>Actor Class</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.genmodel.etricegen.ExpandedActorClass#getGraphContainer <em>Graph Container</em>}</li>
* </ul>
*
* @see org.eclipse.etrice.core.genmodel.etricegen.ETriceGenPackage#getExpandedActorClass()
* @model
* @generated
*/
-public interface ExpandedActorClass extends ExpandedModelComponent {
+public interface ExpandedActorClass extends EObject {
/**
* Returns the value of the '<em><b>Actor Class</b></em>' reference.
* <!-- begin-user-doc -->
@@ -51,11 +52,37 @@ public interface ExpandedActorClass extends ExpandedModelComponent {
ActorClass getActorClass();
/**
+ * Returns the value of the '<em><b>Graph Container</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Graph Container</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Graph Container</em>' containment reference.
+ * @see #setGraphContainer(GraphContainer)
+ * @see org.eclipse.etrice.core.genmodel.etricegen.ETriceGenPackage#getExpandedActorClass_GraphContainer()
+ * @model containment="true"
+ * @generated
+ */
+ GraphContainer getGraphContainer();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.etrice.core.genmodel.etricegen.ExpandedActorClass#getGraphContainer <em>Graph Container</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Graph Container</em>' containment reference.
+ * @see #getGraphContainer()
+ * @generated
+ */
+ void setGraphContainer(GraphContainer value);
+
+ /**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @model
* @generated
*/
- VarDecl getVarDeclData(Transition trans);
+ int getInterfaceItemLocalId(AbstractInterfaceItem ifitem);
} // ExpandedActorClass
diff --git a/plugins/org.eclipse.etrice.core.genmodel/src/org/eclipse/etrice/core/genmodel/etricegen/impl/ETriceGenPackageImpl.java b/plugins/org.eclipse.etrice.core.genmodel/src/org/eclipse/etrice/core/genmodel/etricegen/impl/ETriceGenPackageImpl.java
index ff18bb954..a9497b38b 100644
--- a/plugins/org.eclipse.etrice.core.genmodel/src/org/eclipse/etrice/core/genmodel/etricegen/impl/ETriceGenPackageImpl.java
+++ b/plugins/org.eclipse.etrice.core.genmodel/src/org/eclipse/etrice/core/genmodel/etricegen/impl/ETriceGenPackageImpl.java
@@ -978,6 +978,15 @@ public class ETriceGenPackageImpl extends EPackageImpl implements ETriceGenPacka
* <!-- end-user-doc -->
* @generated
*/
+ public EReference getExpandedActorClass_GraphContainer() {
+ return (EReference)expandedActorClassEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
public EClass getWiredStructureClass() {
return wiredStructureClassEClass;
}
@@ -1298,6 +1307,7 @@ public class ETriceGenPackageImpl extends EPackageImpl implements ETriceGenPacka
expandedActorClassEClass = createEClass(EXPANDED_ACTOR_CLASS);
createEReference(expandedActorClassEClass, EXPANDED_ACTOR_CLASS__ACTOR_CLASS);
+ createEReference(expandedActorClassEClass, EXPANDED_ACTOR_CLASS__GRAPH_CONTAINER);
// Create enums
portKindEEnum = createEEnum(PORT_KIND);
@@ -1350,7 +1360,6 @@ public class ETriceGenPackageImpl extends EPackageImpl implements ETriceGenPacka
serviceImplInstanceEClass.getESuperTypes().add(this.getInterfaceItemInstance());
wiredActorClassEClass.getESuperTypes().add(this.getWiredStructureClass());
wiredSubSystemClassEClass.getESuperTypes().add(this.getWiredStructureClass());
- expandedActorClassEClass.getESuperTypes().add(theFsmGenPackage.getExpandedModelComponent());
// Initialize classes and features; add operations and parameters
initEClass(rootEClass, Root.class, "Root", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
@@ -1512,9 +1521,10 @@ public class ETriceGenPackageImpl extends EPackageImpl implements ETriceGenPacka
initEClass(expandedActorClassEClass, ExpandedActorClass.class, "ExpandedActorClass", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEReference(getExpandedActorClass_ActorClass(), theRoomPackage.getActorClass(), null, "actorClass", null, 0, 1, ExpandedActorClass.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ initEReference(getExpandedActorClass_GraphContainer(), theFsmGenPackage.getGraphContainer(), null, "graphContainer", null, 0, 1, ExpandedActorClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
- op = addEOperation(expandedActorClassEClass, theRoomPackage.getVarDecl(), "getVarDeclData", 0, 1, IS_UNIQUE, IS_ORDERED);
- addEParameter(op, theFSMPackage.getTransition(), "trans", 0, 1, IS_UNIQUE, IS_ORDERED);
+ op = addEOperation(expandedActorClassEClass, ecorePackage.getEInt(), "getInterfaceItemLocalId", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, theFSMPackage.getAbstractInterfaceItem(), "ifitem", 0, 1, IS_UNIQUE, IS_ORDERED);
// Initialize enums and add enum literals
initEEnum(portKindEEnum, PortKind.class, "PortKind");
diff --git a/plugins/org.eclipse.etrice.core.genmodel/src/org/eclipse/etrice/core/genmodel/etricegen/impl/ExpandedActorClassImpl.java b/plugins/org.eclipse.etrice.core.genmodel/src/org/eclipse/etrice/core/genmodel/etricegen/impl/ExpandedActorClassImpl.java
index dd5a909b0..838a0eb99 100644
--- a/plugins/org.eclipse.etrice.core.genmodel/src/org/eclipse/etrice/core/genmodel/etricegen/impl/ExpandedActorClassImpl.java
+++ b/plugins/org.eclipse.etrice.core.genmodel/src/org/eclipse/etrice/core/genmodel/etricegen/impl/ExpandedActorClassImpl.java
@@ -11,33 +11,21 @@
*/
package org.eclipse.etrice.core.genmodel.etricegen.impl;
-import java.util.ArrayList;
+import java.util.HashMap;
-import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
import org.eclipse.etrice.core.fsm.fSM.AbstractInterfaceItem;
-import org.eclipse.etrice.core.fsm.fSM.FSMPackage;
-import org.eclipse.etrice.core.fsm.fSM.MessageFromIf;
-import org.eclipse.etrice.core.fsm.fSM.Transition;
-import org.eclipse.etrice.core.fsm.fSM.Trigger;
-import org.eclipse.etrice.core.fsm.fSM.TriggeredTransition;
+import org.eclipse.etrice.core.fsm.fSM.ModelComponent;
import org.eclipse.etrice.core.genmodel.etricegen.ETriceGenPackage;
import org.eclipse.etrice.core.genmodel.etricegen.ExpandedActorClass;
-import org.eclipse.etrice.core.genmodel.fsm.fsmgen.TransitionChain;
-import org.eclipse.etrice.core.genmodel.fsm.fsmgen.impl.ExpandedModelComponentImpl;
+import org.eclipse.etrice.core.genmodel.fsm.fsmgen.GraphContainer;
import org.eclipse.etrice.core.room.ActorClass;
-import org.eclipse.etrice.core.room.InterfaceItem;
-import org.eclipse.etrice.core.room.Message;
-import org.eclipse.etrice.core.room.Port;
-import org.eclipse.etrice.core.room.RefableType;
-import org.eclipse.etrice.core.room.RoomFactory;
-import org.eclipse.etrice.core.room.SAP;
-import org.eclipse.etrice.core.room.SPP;
-import org.eclipse.etrice.core.room.VarDecl;
-import org.eclipse.etrice.core.room.util.RoomHelpers;
/**
* <!-- begin-user-doc -->
@@ -48,15 +36,24 @@ import org.eclipse.etrice.core.room.util.RoomHelpers;
* </p>
* <ul>
* <li>{@link org.eclipse.etrice.core.genmodel.etricegen.impl.ExpandedActorClassImpl#getActorClass <em>Actor Class</em>}</li>
+ * <li>{@link org.eclipse.etrice.core.genmodel.etricegen.impl.ExpandedActorClassImpl#getGraphContainer <em>Graph Container</em>}</li>
* </ul>
*
* @generated
*/
-public class ExpandedActorClassImpl extends ExpandedModelComponentImpl implements ExpandedActorClass {
-
- private RoomHelpers roomHelpers = new RoomHelpers();
+public class ExpandedActorClassImpl extends EObjectImpl implements ExpandedActorClass {
/**
+ * The cached value of the '{@link #getGraphContainer() <em>Graph Container</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getGraphContainer()
+ * @generated
+ * @ordered
+ */
+ protected GraphContainer graphContainer;
+
+ /**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
@@ -91,16 +88,16 @@ public class ExpandedActorClassImpl extends ExpandedModelComponentImpl implement
* @generated NOT
*/
public ActorClass basicGetActorClass() {
- return (ActorClass) getModelComponent();
+ return (ActorClass) getGraphContainer().getComponent();
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated NOT
+ * @generated
*/
- public VarDecl getVarDeclData(Transition trans) {
- return (VarDecl) getData(trans);
+ public GraphContainer getGraphContainer() {
+ return graphContainer;
}
/**
@@ -108,14 +105,37 @@ public class ExpandedActorClassImpl extends ExpandedModelComponentImpl implement
* <!-- end-user-doc -->
* @generated
*/
- @Override
- public Object eGet(int featureID, boolean resolve, boolean coreType) {
- switch (featureID) {
- case ETriceGenPackage.EXPANDED_ACTOR_CLASS__ACTOR_CLASS:
- if (resolve) return getActorClass();
- return basicGetActorClass();
+ public NotificationChain basicSetGraphContainer(GraphContainer newGraphContainer, NotificationChain msgs) {
+ GraphContainer oldGraphContainer = graphContainer;
+ graphContainer = newGraphContainer;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ETriceGenPackage.EXPANDED_ACTOR_CLASS__GRAPH_CONTAINER, oldGraphContainer, newGraphContainer);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
}
- return super.eGet(featureID, resolve, coreType);
+ return msgs;
+ }
+
+ /**
+ * we maintain a map of local IDs for interface items
+ */
+ private HashMap<AbstractInterfaceItem, Integer> ifitem2localId;
+
+ /**
+ * the recursive computation of the local IDs of interface items
+ */
+ private int computeInterfaceItemLocalIds(ModelComponent mc, int offset) {
+ if (mc.getBase()!=null) {
+ // first recurse into base class
+ offset = computeInterfaceItemLocalIds(mc.getBase(), offset);
+ }
+
+ EList<AbstractInterfaceItem> items = mc.getAbstractInterfaceItems();
+ for (AbstractInterfaceItem item : items) {
+ ifitem2localId.put(item, offset);
+ ++offset;
+ }
+
+ return offset;
}
/**
@@ -123,128 +143,113 @@ public class ExpandedActorClassImpl extends ExpandedModelComponentImpl implement
* <!-- end-user-doc -->
* @generated
*/
- @Override
- public boolean eIsSet(int featureID) {
- switch (featureID) {
- case ETriceGenPackage.EXPANDED_ACTOR_CLASS__ACTOR_CLASS:
- return basicGetActorClass() != null;
+ public void setGraphContainer(GraphContainer newGraphContainer) {
+ if (newGraphContainer != graphContainer) {
+ NotificationChain msgs = null;
+ if (graphContainer != null)
+ msgs = ((InternalEObject)graphContainer).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ETriceGenPackage.EXPANDED_ACTOR_CLASS__GRAPH_CONTAINER, null, msgs);
+ if (newGraphContainer != null)
+ msgs = ((InternalEObject)newGraphContainer).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ETriceGenPackage.EXPANDED_ACTOR_CLASS__GRAPH_CONTAINER, null, msgs);
+ msgs = basicSetGraphContainer(newGraphContainer, msgs);
+ if (msgs != null) msgs.dispatch();
}
- return super.eIsSet(featureID);
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ETriceGenPackage.EXPANDED_ACTOR_CLASS__GRAPH_CONTAINER, newGraphContainer, newGraphContainer));
}
-
- /* (non-Javadoc)
- * @see org.eclipse.etrice.core.genmodel.fsm.fsmgen.impl.ExpandedModelComponentImpl#addTransitionChain(org.eclipse.etrice.core.fsm.fSM.Transition)
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
*/
- @Override
- public TransitionChain addTransitionChain(Transition t) {
- TransitionChain tc = super.addTransitionChain(t);
-
- if (t instanceof TriggeredTransition) {
- VarDecl data = null;
-
- // TODO: after introduction of VarDecl after 'action' leave this to validation
-
- boolean first = true;
- for (Trigger tr : ((TriggeredTransition)t).getTriggers()) {
- for (MessageFromIf mif : tr.getMsgFromIfPairs()) {
- VarDecl msgData = ((Message)mif.getMessage()).getData();
- if (first) {
- first = false;
- data = msgData;
- }
- else {
- if (data!=null) {
- if (msgData==null) {
- validationError("If one MessageFromIf has data all have to have data for a given transition!", t, FSMPackage.eINSTANCE.getTriggeredTransition_Triggers());
- }
- else {
- VarDecl a = msgData;
- if (data.getRefType().getType()!=a.getRefType().getType())
- validationError("The data types of all MessageFromIf have to be the same!", t, FSMPackage.eINSTANCE.getTriggeredTransition_Triggers());
- if (data.getRefType().isRef() !=a.getRefType().isRef())
- validationError("The data types of all MessageFromIf have to be the same ref type!", t, FSMPackage.eINSTANCE.getTriggeredTransition_Triggers());
- }
- }
- else {
- if (msgData!=null)
- validationError("If one MessageFromIf has no data all have to have no data for a given transition!", t, FSMPackage.eINSTANCE.getTriggeredTransition_Triggers());
- }
- }
- }
- }
-
- if (first)
- validationError("Triggered transition has to have a message from interface!", t, FSMPackage.eINSTANCE.getTriggeredTransition_Triggers());
-
- tc.setData(data);
+ public int getInterfaceItemLocalId(AbstractInterfaceItem ifitem) {
+ if (ifitem2localId==null) {
+ ifitem2localId = new HashMap<AbstractInterfaceItem, Integer>();
+ computeInterfaceItemLocalIds(getActorClass(), 0);
}
- return tc;
+ Integer localId = ifitem2localId.get(ifitem);
+ if (localId!=null)
+ return localId.intValue();
+ else
+ return -1;
}
-
- /* (non-Javadoc)
- * @see org.eclipse.etrice.core.genmodel.fsm.fsmgen.impl.ExpandedModelComponentImpl#getIncomingMessages(org.eclipse.etrice.core.fsm.fSM.AbstractInterfaceItem)
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
*/
@Override
- public EList<EObject> getIncomingMessages(AbstractInterfaceItem ifitem) {
- return new BasicEList<EObject>(roomHelpers.getMessageListDeep((InterfaceItem) ifitem, false));
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case ETriceGenPackage.EXPANDED_ACTOR_CLASS__GRAPH_CONTAINER:
+ return basicSetGraphContainer(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
}
- /* (non-Javadoc)
- * @see org.eclipse.etrice.core.genmodel.fsm.fsmgen.impl.ExpandedModelComponentImpl#getMessageID(org.eclipse.etrice.core.fsm.fSM.MessageFromIf)
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
*/
@Override
- public String getMessageID(MessageFromIf mif) {
- if (mif.getFrom() instanceof Port) {
- Port p = (Port) mif.getFrom();
- return p.getProtocol().getName()+(p.isConjugated()?".OUT_":".IN_")+fsmNameProvider.getMessageName(mif.getMessage());
- }
- else if (mif.getFrom() instanceof SAP) {
- SAP sap = (SAP) mif.getFrom();
- return sap.getProtocol().getName()+".OUT_"+fsmNameProvider.getMessageName(mif.getMessage());
- }
- else if (mif.getFrom() instanceof SPP) {
- SPP spp = (SPP) mif.getFrom();
- return spp.getProtocol().getName()+".IN_"+fsmNameProvider.getMessageName(mif.getMessage());
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ETriceGenPackage.EXPANDED_ACTOR_CLASS__ACTOR_CLASS:
+ if (resolve) return getActorClass();
+ return basicGetActorClass();
+ case ETriceGenPackage.EXPANDED_ACTOR_CLASS__GRAPH_CONTAINER:
+ return getGraphContainer();
}
+ return super.eGet(featureID, resolve, coreType);
+ }
- return "unknown interface item";
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ETriceGenPackage.EXPANDED_ACTOR_CLASS__GRAPH_CONTAINER:
+ setGraphContainer((GraphContainer)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
}
-
- /* (non-Javadoc)
- * @see org.eclipse.etrice.core.genmodel.fsm.fsmgen.impl.ExpandedModelComponentImpl#computeCommonChainData(org.eclipse.emf.common.util.EList)
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
*/
@Override
- public EObject computeCommonChainData(EList<TransitionChain> chains) {
- if (chains.size()==1)
- return chains.get(0).getData();
- else {
- ArrayList<RefableType> types = new ArrayList<RefableType>();
- for (TransitionChain chain : chains) {
- if (chain.getData()!=null)
- types.add(((VarDecl) chain.getData()).getRefType());
- else
- types.add(null);
- }
- RefableType rt = roomHelpers.getLastCommonSuperType(types);
- if (rt!=null) {
- VarDecl vd = RoomFactory.eINSTANCE.createVarDecl();
- vd.setName("data");
- vd.setRefType(rt);
- return vd;
- }
- else {
- return null;
- }
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ETriceGenPackage.EXPANDED_ACTOR_CLASS__GRAPH_CONTAINER:
+ setGraphContainer((GraphContainer)null);
+ return;
}
+ super.eUnset(featureID);
}
-
- /* (non-Javadoc)
- * @see org.eclipse.etrice.core.genmodel.fsm.fsmgen.impl.ExpandedModelComponentImpl#getModelComponentName()
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
*/
@Override
- public String getModelComponentName() {
- return getActorClass().getName();
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ETriceGenPackage.EXPANDED_ACTOR_CLASS__ACTOR_CLASS:
+ return basicGetActorClass() != null;
+ case ETriceGenPackage.EXPANDED_ACTOR_CLASS__GRAPH_CONTAINER:
+ return graphContainer != null;
+ }
+ return super.eIsSet(featureID);
}
} //ExpandedActorClassImpl
diff --git a/plugins/org.eclipse.etrice.core.genmodel/src/org/eclipse/etrice/core/genmodel/etricegen/util/ETriceGenAdapterFactory.java b/plugins/org.eclipse.etrice.core.genmodel/src/org/eclipse/etrice/core/genmodel/etricegen/util/ETriceGenAdapterFactory.java
index de1b193b4..ff4eebb8b 100644
--- a/plugins/org.eclipse.etrice.core.genmodel/src/org/eclipse/etrice/core/genmodel/etricegen/util/ETriceGenAdapterFactory.java
+++ b/plugins/org.eclipse.etrice.core.genmodel/src/org/eclipse/etrice/core/genmodel/etricegen/util/ETriceGenAdapterFactory.java
@@ -16,8 +16,30 @@ import org.eclipse.emf.common.notify.Adapter;
import org.eclipse.emf.common.notify.Notifier;
import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
import org.eclipse.emf.ecore.EObject;
-import org.eclipse.etrice.core.genmodel.etricegen.*;
-import org.eclipse.etrice.core.genmodel.fsm.fsmgen.ExpandedModelComponent;
+import org.eclipse.etrice.core.genmodel.etricegen.AbstractInstance;
+import org.eclipse.etrice.core.genmodel.etricegen.ActorInstance;
+import org.eclipse.etrice.core.genmodel.etricegen.ActorInterfaceInstance;
+import org.eclipse.etrice.core.genmodel.etricegen.BindingInstance;
+import org.eclipse.etrice.core.genmodel.etricegen.ConnectionInstance;
+import org.eclipse.etrice.core.genmodel.etricegen.ETriceGenPackage;
+import org.eclipse.etrice.core.genmodel.etricegen.ExpandedActorClass;
+import org.eclipse.etrice.core.genmodel.etricegen.InstanceBase;
+import org.eclipse.etrice.core.genmodel.etricegen.InterfaceItemInstance;
+import org.eclipse.etrice.core.genmodel.etricegen.OpenBinding;
+import org.eclipse.etrice.core.genmodel.etricegen.OpenServiceConnection;
+import org.eclipse.etrice.core.genmodel.etricegen.OptionalActorInstance;
+import org.eclipse.etrice.core.genmodel.etricegen.PortInstance;
+import org.eclipse.etrice.core.genmodel.etricegen.Root;
+import org.eclipse.etrice.core.genmodel.etricegen.SAPInstance;
+import org.eclipse.etrice.core.genmodel.etricegen.SPPInstance;
+import org.eclipse.etrice.core.genmodel.etricegen.ServiceImplInstance;
+import org.eclipse.etrice.core.genmodel.etricegen.StructureInstance;
+import org.eclipse.etrice.core.genmodel.etricegen.SubSystemInstance;
+import org.eclipse.etrice.core.genmodel.etricegen.SystemInstance;
+import org.eclipse.etrice.core.genmodel.etricegen.Wire;
+import org.eclipse.etrice.core.genmodel.etricegen.WiredActorClass;
+import org.eclipse.etrice.core.genmodel.etricegen.WiredStructureClass;
+import org.eclipse.etrice.core.genmodel.etricegen.WiredSubSystemClass;
/**
* <!-- begin-user-doc -->
@@ -168,10 +190,6 @@ public class ETriceGenAdapterFactory extends AdapterFactoryImpl {
return createExpandedActorClassAdapter();
}
@Override
- public Adapter caseExpandedModelComponent(ExpandedModelComponent object) {
- return createExpandedModelComponentAdapter();
- }
- @Override
public Adapter defaultCase(EObject object) {
return createEObjectAdapter();
}
@@ -416,20 +434,6 @@ public class ETriceGenAdapterFactory extends AdapterFactoryImpl {
}
/**
- * Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.genmodel.fsm.fsmgen.ExpandedModelComponent <em>Expanded Model Component</em>}'.
- * <!-- begin-user-doc -->
- * This default implementation returns null so that we can easily ignore cases;
- * it's useful to ignore a case when inheritance will catch all the cases anyway.
- * <!-- end-user-doc -->
- * @return the new adapter.
- * @see org.eclipse.etrice.core.genmodel.fsm.fsmgen.ExpandedModelComponent
- * @generated
- */
- public Adapter createExpandedModelComponentAdapter() {
- return null;
- }
-
- /**
* Creates a new adapter for an object of class '{@link org.eclipse.etrice.core.genmodel.etricegen.ExpandedActorClass <em>Expanded Actor Class</em>}'.
* <!-- begin-user-doc -->
* This default implementation returns null so that we can easily ignore cases;
diff --git a/plugins/org.eclipse.etrice.core.genmodel/src/org/eclipse/etrice/core/genmodel/etricegen/util/ETriceGenSwitch.java b/plugins/org.eclipse.etrice.core.genmodel/src/org/eclipse/etrice/core/genmodel/etricegen/util/ETriceGenSwitch.java
index b9de6a85f..1a3fdfdbf 100644
--- a/plugins/org.eclipse.etrice.core.genmodel/src/org/eclipse/etrice/core/genmodel/etricegen/util/ETriceGenSwitch.java
+++ b/plugins/org.eclipse.etrice.core.genmodel/src/org/eclipse/etrice/core/genmodel/etricegen/util/ETriceGenSwitch.java
@@ -15,8 +15,30 @@ package org.eclipse.etrice.core.genmodel.etricegen.util;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.util.Switch;
-import org.eclipse.etrice.core.genmodel.etricegen.*;
-import org.eclipse.etrice.core.genmodel.fsm.fsmgen.ExpandedModelComponent;
+import org.eclipse.etrice.core.genmodel.etricegen.AbstractInstance;
+import org.eclipse.etrice.core.genmodel.etricegen.ActorInstance;
+import org.eclipse.etrice.core.genmodel.etricegen.ActorInterfaceInstance;
+import org.eclipse.etrice.core.genmodel.etricegen.BindingInstance;
+import org.eclipse.etrice.core.genmodel.etricegen.ConnectionInstance;
+import org.eclipse.etrice.core.genmodel.etricegen.ETriceGenPackage;
+import org.eclipse.etrice.core.genmodel.etricegen.ExpandedActorClass;
+import org.eclipse.etrice.core.genmodel.etricegen.InstanceBase;
+import org.eclipse.etrice.core.genmodel.etricegen.InterfaceItemInstance;
+import org.eclipse.etrice.core.genmodel.etricegen.OpenBinding;
+import org.eclipse.etrice.core.genmodel.etricegen.OpenServiceConnection;
+import org.eclipse.etrice.core.genmodel.etricegen.OptionalActorInstance;
+import org.eclipse.etrice.core.genmodel.etricegen.PortInstance;
+import org.eclipse.etrice.core.genmodel.etricegen.Root;
+import org.eclipse.etrice.core.genmodel.etricegen.SAPInstance;
+import org.eclipse.etrice.core.genmodel.etricegen.SPPInstance;
+import org.eclipse.etrice.core.genmodel.etricegen.ServiceImplInstance;
+import org.eclipse.etrice.core.genmodel.etricegen.StructureInstance;
+import org.eclipse.etrice.core.genmodel.etricegen.SubSystemInstance;
+import org.eclipse.etrice.core.genmodel.etricegen.SystemInstance;
+import org.eclipse.etrice.core.genmodel.etricegen.Wire;
+import org.eclipse.etrice.core.genmodel.etricegen.WiredActorClass;
+import org.eclipse.etrice.core.genmodel.etricegen.WiredStructureClass;
+import org.eclipse.etrice.core.genmodel.etricegen.WiredSubSystemClass;
/**
* <!-- begin-user-doc -->
@@ -235,7 +257,6 @@ public class ETriceGenSwitch<T> extends Switch<T> {
case ETriceGenPackage.EXPANDED_ACTOR_CLASS: {
ExpandedActorClass expandedActorClass = (ExpandedActorClass)theEObject;
T result = caseExpandedActorClass(expandedActorClass);
- if (result == null) result = caseExpandedModelComponent(expandedActorClass);
if (result == null) result = defaultCase(theEObject);
return result;
}
@@ -499,21 +520,6 @@ public class ETriceGenSwitch<T> extends Switch<T> {
}
/**
- * Returns the result of interpreting the object as an instance of '<em>Expanded Model Component</em>'.
- * <!-- begin-user-doc -->
- * This implementation returns null;
- * returning a non-null result will terminate the switch.
- * <!-- end-user-doc -->
- * @param object the target of the switch.
- * @return the result of interpreting the object as an instance of '<em>Expanded Model Component</em>'.
- * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
- * @generated
- */
- public T caseExpandedModelComponent(ExpandedModelComponent object) {
- return null;
- }
-
- /**
* Returns the result of interpreting the object as an instance of '<em>Wired Structure Class</em>'.
* <!-- begin-user-doc -->
* This implementation returns null;

Back to the top