Skip to content

Commit bd36152

Browse files
committed
Working implementation of the generic trace constructor and state manager
1 parent 3af0e83 commit bd36152

File tree

17 files changed

+348
-56
lines changed

17 files changed

+348
-56
lines changed

trace/commons/plugins/fr.inria.diverse.trace.commons.model/model/GenericTraceImpl.ecore

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<eGenericSuperTypes>
77
<eTypeArguments eClassifier="//GenericStep"/>
88
<eTypeArguments eClassifier="//GenericState"/>
9-
<eClassifier xsi:type="ecore:EClass" href="GenericTrace.ecore#//BigStep"/>
9+
<eClassifier xsi:type="ecore:EClass" href="GenericTrace.ecore#//SequentialStep"/>
1010
</eGenericSuperTypes>
1111
</eClassifiers>
1212
<eClassifiers xsi:type="ecore:EClass" name="GenericParallelStep" eSuperTypes="//GenericStep"/>
@@ -22,6 +22,11 @@
2222
</eGenericSuperTypes>
2323
</eClassifiers>
2424
<eClassifiers xsi:type="ecore:EClass" name="GenericTracedObject">
25+
<eOperations name="getDimensionsInternal" upperBound="-1" eType="//GenericDimension">
26+
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
27+
<details key="body" value="final EList&lt;GenericDimension> result = new org.eclipse.emf.ecore.util.BasicInternalEList&lt;GenericDimension>(Object.class);&#xA;result.addAll(super.getDimensionsInternal());&#xA;result.addAll(getAllDimensions());&#xA;return result;&#xA;"/>
28+
</eAnnotations>
29+
</eOperations>
2530
<eStructuralFeatures xsi:type="ecore:EReference" name="originalObject">
2631
<eType xsi:type="ecore:EClass" href="../../org.eclipse.emf.ecore/model/Ecore.ecore#//EObject"/>
2732
</eStructuralFeatures>

trace/commons/plugins/fr.inria.diverse.trace.commons.model/src/fr/inria/diverse/trace/commons/model/generictrace/GenericSequentialStep.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
*/
33
package fr.inria.diverse.trace.commons.model.generictrace;
44

5-
import fr.inria.diverse.trace.commons.model.trace.BigStep;
5+
import fr.inria.diverse.trace.commons.model.trace.SequentialStep;
66

77

88
/**
@@ -15,5 +15,5 @@
1515
* @model
1616
* @generated
1717
*/
18-
public interface GenericSequentialStep extends GenericStep, BigStep<GenericStep, GenericState> {
18+
public interface GenericSequentialStep extends GenericStep, SequentialStep<GenericStep, GenericState> {
1919
} // GenericSequentialStep

trace/commons/plugins/fr.inria.diverse.trace.commons.model/src/fr/inria/diverse/trace/commons/model/generictrace/GenericTracedObject.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,4 +66,13 @@ public interface GenericTracedObject extends TracedObject<GenericDimension> {
6666
* @generated
6767
*/
6868
EList<GenericDimension> getAllDimensions();
69+
70+
/**
71+
* <!-- begin-user-doc -->
72+
* <!-- end-user-doc -->
73+
* @model kind="operation"
74+
* annotation="http://www.eclipse.org/emf/2002/GenModel body='final EList<GenericDimension> result = new org.eclipse.emf.ecore.util.BasicInternalEList<GenericDimension>(Object.class);\nresult.addAll(super.getDimensionsInternal());\nresult.addAll(getAllDimensions());\nreturn result;\n'"
75+
* @generated
76+
*/
77+
EList<GenericDimension> getDimensionsInternal();
6978
} // GenericTracedObject

trace/commons/plugins/fr.inria.diverse.trace.commons.model/src/fr/inria/diverse/trace/commons/model/generictrace/GenerictracePackage.java

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import org.eclipse.emf.ecore.EAttribute;
88
import org.eclipse.emf.ecore.EClass;
99
import org.eclipse.emf.ecore.EDataType;
10+
import org.eclipse.emf.ecore.EOperation;
1011
import org.eclipse.emf.ecore.EPackage;
1112
import org.eclipse.emf.ecore.EReference;
1213

@@ -461,7 +462,7 @@ public interface GenerictracePackage extends EPackage {
461462
* @generated
462463
* @ordered
463464
*/
464-
int GENERIC_TRACED_OBJECT___GET_DIMENSIONS_INTERNAL = TracePackage.TRACED_OBJECT___GET_DIMENSIONS_INTERNAL;
465+
int GENERIC_TRACED_OBJECT___GET_DIMENSIONS_INTERNAL = TracePackage.TRACED_OBJECT_OPERATION_COUNT + 0;
465466

466467
/**
467468
* The number of operations of the '<em>Generic Traced Object</em>' class.
@@ -470,7 +471,7 @@ public interface GenerictracePackage extends EPackage {
470471
* @generated
471472
* @ordered
472473
*/
473-
int GENERIC_TRACED_OBJECT_OPERATION_COUNT = TracePackage.TRACED_OBJECT_OPERATION_COUNT + 0;
474+
int GENERIC_TRACED_OBJECT_OPERATION_COUNT = TracePackage.TRACED_OBJECT_OPERATION_COUNT + 1;
474475

475476
/**
476477
* The meta object id for the '{@link fr.inria.diverse.trace.commons.model.generictrace.impl.GenericStateImpl <em>Generic State</em>}' class.
@@ -961,6 +962,16 @@ public interface GenerictracePackage extends EPackage {
961962
*/
962963
EReference getGenericTracedObject_AllDimensions();
963964

965+
/**
966+
* Returns the meta object for the '{@link fr.inria.diverse.trace.commons.model.generictrace.GenericTracedObject#getDimensionsInternal() <em>Get Dimensions Internal</em>}' operation.
967+
* <!-- begin-user-doc -->
968+
* <!-- end-user-doc -->
969+
* @return the meta object for the '<em>Get Dimensions Internal</em>' operation.
970+
* @see fr.inria.diverse.trace.commons.model.generictrace.GenericTracedObject#getDimensionsInternal()
971+
* @generated
972+
*/
973+
EOperation getGenericTracedObject__GetDimensionsInternal();
974+
964975
/**
965976
* Returns the meta object for class '{@link fr.inria.diverse.trace.commons.model.generictrace.GenericState <em>Generic State</em>}'.
966977
* <!-- begin-user-doc -->
@@ -1233,6 +1244,14 @@ interface Literals {
12331244
*/
12341245
EReference GENERIC_TRACED_OBJECT__ALL_DIMENSIONS = eINSTANCE.getGenericTracedObject_AllDimensions();
12351246

1247+
/**
1248+
* The meta object literal for the '<em><b>Get Dimensions Internal</b></em>' operation.
1249+
* <!-- begin-user-doc -->
1250+
* <!-- end-user-doc -->
1251+
* @generated
1252+
*/
1253+
EOperation GENERIC_TRACED_OBJECT___GET_DIMENSIONS_INTERNAL = eINSTANCE.getGenericTracedObject__GetDimensionsInternal();
1254+
12361255
/**
12371256
* The meta object literal for the '{@link fr.inria.diverse.trace.commons.model.generictrace.impl.GenericStateImpl <em>Generic State</em>}' class.
12381257
* <!-- begin-user-doc -->

trace/commons/plugins/fr.inria.diverse.trace.commons.model/src/fr/inria/diverse/trace/commons/model/generictrace/impl/GenericSequentialStepImpl.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import fr.inria.diverse.trace.commons.model.generictrace.GenerictracePackage;
88

99
import fr.inria.diverse.trace.commons.model.trace.BigStep;
10+
import fr.inria.diverse.trace.commons.model.trace.SequentialStep;
1011
import fr.inria.diverse.trace.commons.model.trace.TracePackage;
1112
import java.util.Collection;
1213
import org.eclipse.emf.common.notify.NotificationChain;
@@ -158,6 +159,11 @@ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
158159
default: return -1;
159160
}
160161
}
162+
if (baseClass == SequentialStep.class) {
163+
switch (derivedFeatureID) {
164+
default: return -1;
165+
}
166+
}
161167
return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
162168
}
163169

@@ -174,6 +180,11 @@ public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
174180
default: return -1;
175181
}
176182
}
183+
if (baseClass == SequentialStep.class) {
184+
switch (baseFeatureID) {
185+
default: return -1;
186+
}
187+
}
177188
return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
178189
}
179190

trace/commons/plugins/fr.inria.diverse.trace.commons.model/src/fr/inria/diverse/trace/commons/model/generictrace/impl/GenericTracedObjectImpl.java

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,10 @@
66
import fr.inria.diverse.trace.commons.model.generictrace.GenericTracedObject;
77
import fr.inria.diverse.trace.commons.model.generictrace.GenerictracePackage;
88

9+
import fr.inria.diverse.trace.commons.model.trace.TracePackage;
10+
import fr.inria.diverse.trace.commons.model.trace.TracedObject;
911
import fr.inria.diverse.trace.commons.model.trace.impl.TracedObjectImpl;
12+
import java.lang.reflect.InvocationTargetException;
1013
import java.util.Collection;
1114
import org.eclipse.emf.common.notify.Notification;
1215
import org.eclipse.emf.common.notify.NotificationChain;
@@ -122,6 +125,19 @@ public EList<GenericDimension> getAllDimensions() {
122125
return allDimensions;
123126
}
124127

128+
/**
129+
* <!-- begin-user-doc -->
130+
* <!-- end-user-doc -->
131+
* @generated
132+
*/
133+
public EList<GenericDimension> getDimensionsInternal() {
134+
final EList<GenericDimension> result = new org.eclipse.emf.ecore.util.BasicInternalEList<GenericDimension>(Object.class);
135+
result.addAll(super.getDimensionsInternal());
136+
result.addAll(getAllDimensions());
137+
return result;
138+
139+
}
140+
125141
/**
126142
* <!-- begin-user-doc -->
127143
* <!-- end-user-doc -->
@@ -207,4 +223,34 @@ public boolean eIsSet(int featureID) {
207223
return super.eIsSet(featureID);
208224
}
209225

226+
/**
227+
* <!-- begin-user-doc -->
228+
* <!-- end-user-doc -->
229+
* @generated
230+
*/
231+
@Override
232+
public int eDerivedOperationID(int baseOperationID, Class<?> baseClass) {
233+
if (baseClass == TracedObject.class) {
234+
switch (baseOperationID) {
235+
case TracePackage.TRACED_OBJECT___GET_DIMENSIONS_INTERNAL: return GenerictracePackage.GENERIC_TRACED_OBJECT___GET_DIMENSIONS_INTERNAL;
236+
default: return super.eDerivedOperationID(baseOperationID, baseClass);
237+
}
238+
}
239+
return super.eDerivedOperationID(baseOperationID, baseClass);
240+
}
241+
242+
/**
243+
* <!-- begin-user-doc -->
244+
* <!-- end-user-doc -->
245+
* @generated
246+
*/
247+
@Override
248+
public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
249+
switch (operationID) {
250+
case GenerictracePackage.GENERIC_TRACED_OBJECT___GET_DIMENSIONS_INTERNAL:
251+
return getDimensionsInternal();
252+
}
253+
return super.eInvoke(operationID, arguments);
254+
}
255+
210256
} //GenericTracedObjectImpl

trace/commons/plugins/fr.inria.diverse.trace.commons.model/src/fr/inria/diverse/trace/commons/model/generictrace/impl/GenerictracePackageImpl.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import org.eclipse.emf.ecore.EClass;
2828
import org.eclipse.emf.ecore.EDataType;
2929
import org.eclipse.emf.ecore.EGenericType;
30+
import org.eclipse.emf.ecore.EOperation;
3031
import org.eclipse.emf.ecore.EPackage;
3132
import org.eclipse.emf.ecore.EReference;
3233
import org.eclipse.emf.ecore.ETypeParameter;
@@ -305,6 +306,15 @@ public EReference getGenericTracedObject_AllDimensions() {
305306
return (EReference)genericTracedObjectEClass.getEStructuralFeatures().get(1);
306307
}
307308

309+
/**
310+
* <!-- begin-user-doc -->
311+
* <!-- end-user-doc -->
312+
* @generated
313+
*/
314+
public EOperation getGenericTracedObject__GetDimensionsInternal() {
315+
return genericTracedObjectEClass.getEOperations().get(0);
316+
}
317+
308318
/**
309319
* <!-- begin-user-doc -->
310320
* <!-- end-user-doc -->
@@ -491,6 +501,7 @@ public void createPackageContents() {
491501
genericTracedObjectEClass = createEClass(GENERIC_TRACED_OBJECT);
492502
createEReference(genericTracedObjectEClass, GENERIC_TRACED_OBJECT__ORIGINAL_OBJECT);
493503
createEReference(genericTracedObjectEClass, GENERIC_TRACED_OBJECT__ALL_DIMENSIONS);
504+
createEOperation(genericTracedObjectEClass, GENERIC_TRACED_OBJECT___GET_DIMENSIONS_INTERNAL);
494505

495506
genericStateEClass = createEClass(GENERIC_STATE);
496507

@@ -558,7 +569,7 @@ public void initializePackageContents() {
558569
// Add supertypes to classes
559570
g1 = createEGenericType(this.getGenericStep());
560571
genericSequentialStepEClass.getEGenericSuperTypes().add(g1);
561-
g1 = createEGenericType(theTracePackage.getBigStep());
572+
g1 = createEGenericType(theTracePackage.getSequentialStep());
562573
EGenericType g2 = createEGenericType(this.getGenericStep());
563574
g1.getETypeArguments().add(g2);
564575
g2 = createEGenericType(this.getGenericState());
@@ -620,6 +631,8 @@ public void initializePackageContents() {
620631
initEReference(getGenericTracedObject_OriginalObject(), theEcorePackage.getEObject(), null, "originalObject", null, 0, 1, GenericTracedObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
621632
initEReference(getGenericTracedObject_AllDimensions(), this.getGenericDimension(), null, "allDimensions", null, 0, -1, GenericTracedObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
622633

634+
initEOperation(getGenericTracedObject__GetDimensionsInternal(), this.getGenericDimension(), "getDimensionsInternal", 0, -1, IS_UNIQUE, IS_ORDERED);
635+
623636
initEClass(genericStateEClass, GenericState.class, "GenericState", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
624637

625638
initEClass(genericTraceEClass, GenericTrace.class, "GenericTrace", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

trace/commons/plugins/fr.inria.diverse.trace.commons.model/src/fr/inria/diverse/trace/commons/model/generictrace/util/GenerictraceAdapterFactory.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
import fr.inria.diverse.trace.commons.model.trace.BigStep;
88
import fr.inria.diverse.trace.commons.model.trace.Dimension;
9+
import fr.inria.diverse.trace.commons.model.trace.SequentialStep;
910
import fr.inria.diverse.trace.commons.model.trace.State;
1011
import fr.inria.diverse.trace.commons.model.trace.Step;
1112
import fr.inria.diverse.trace.commons.model.trace.Trace;
@@ -148,6 +149,10 @@ public Adapter caseManyReferenceValue(ManyReferenceValue object) {
148149
return createBigStepAdapter();
149150
}
150151
@Override
152+
public <StepSubtype extends Step<StateSubType>, StateSubType extends State<?, ?>> Adapter caseSequentialStep(SequentialStep<StepSubtype, StateSubType> object) {
153+
return createSequentialStepAdapter();
154+
}
155+
@Override
151156
public <StateSubType extends State<?, ?>> Adapter caseValue(Value<StateSubType> object) {
152157
return createValueAdapter();
153158
}
@@ -439,6 +444,20 @@ public Adapter createBigStepAdapter() {
439444
return null;
440445
}
441446

447+
/**
448+
* Creates a new adapter for an object of class '{@link fr.inria.diverse.trace.commons.model.trace.SequentialStep <em>Sequential Step</em>}'.
449+
* <!-- begin-user-doc -->
450+
* This default implementation returns null so that we can easily ignore cases;
451+
* it's useful to ignore a case when inheritance will catch all the cases anyway.
452+
* <!-- end-user-doc -->
453+
* @return the new adapter.
454+
* @see fr.inria.diverse.trace.commons.model.trace.SequentialStep
455+
* @generated
456+
*/
457+
public Adapter createSequentialStepAdapter() {
458+
return null;
459+
}
460+
442461
/**
443462
* Creates a new adapter for an object of class '{@link fr.inria.diverse.trace.commons.model.trace.Value <em>Value</em>}'.
444463
* <!-- begin-user-doc -->

trace/commons/plugins/fr.inria.diverse.trace.commons.model/src/fr/inria/diverse/trace/commons/model/generictrace/util/GenerictraceSwitch.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
import fr.inria.diverse.trace.commons.model.trace.BigStep;
88
import fr.inria.diverse.trace.commons.model.trace.Dimension;
9+
import fr.inria.diverse.trace.commons.model.trace.SequentialStep;
910
import fr.inria.diverse.trace.commons.model.trace.State;
1011
import fr.inria.diverse.trace.commons.model.trace.Step;
1112
import fr.inria.diverse.trace.commons.model.trace.Trace;
@@ -78,6 +79,7 @@ protected T doSwitch(int classifierID, EObject theEObject) {
7879
GenericSequentialStep genericSequentialStep = (GenericSequentialStep)theEObject;
7980
T result = caseGenericSequentialStep(genericSequentialStep);
8081
if (result == null) result = caseGenericStep(genericSequentialStep);
82+
if (result == null) result = caseSequentialStep(genericSequentialStep);
8183
if (result == null) result = caseBigStep(genericSequentialStep);
8284
if (result == null) result = caseStep(genericSequentialStep);
8385
if (result == null) result = defaultCase(theEObject);
@@ -476,6 +478,21 @@ public T caseManyReferenceValue(ManyReferenceValue object) {
476478
return null;
477479
}
478480

481+
/**
482+
* Returns the result of interpreting the object as an instance of '<em>Sequential Step</em>'.
483+
* <!-- begin-user-doc -->
484+
* This implementation returns null;
485+
* returning a non-null result will terminate the switch.
486+
* <!-- end-user-doc -->
487+
* @param object the target of the switch.
488+
* @return the result of interpreting the object as an instance of '<em>Sequential Step</em>'.
489+
* @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
490+
* @generated
491+
*/
492+
public <StepSubtype extends Step<StateSubType>, StateSubType extends State<?, ?>> T caseSequentialStep(SequentialStep<StepSubtype, StateSubType> object) {
493+
return null;
494+
}
495+
479496
/**
480497
* Returns the result of interpreting the object as an instance of '<em>Value</em>'.
481498
* <!-- begin-user-doc -->

trace/generator/plugins/fr.inria.diverse.trace.gemoc/META-INF/MANIFEST.MF

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
Manifest-Version: 1.0
22
Bundle-ManifestVersion: 2
33
Bundle-Name: fr.inria.diverse.tracemm.gemoctrace
4-
Bundle-SymbolicName: fr.inria.diverse.trace.gemoc
4+
Bundle-SymbolicName: fr.inria.diverse.trace.gemoc;singleton:=true
55
Bundle-Version: 2.3.0.qualifier
66
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
77
Require-Bundle: fr.obeo.timeline;bundle-version="1.0.0",
@@ -16,4 +16,5 @@ Require-Bundle: fr.obeo.timeline;bundle-version="1.0.0",
1616
org.gemoc.commons.eclipse;bundle-version="0.1.0",
1717
org.eclipse.emf.compare
1818
Export-Package: fr.inria.diverse.trace.gemoc.traceaddon
19+
Bundle-ActivationPolicy: lazy
1920

0 commit comments

Comments
 (0)