Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordwagelaar2013-08-01 19:47:40 +0000
committerdwagelaar2013-08-01 19:47:40 +0000
commit8489908c225e1cf646755ca0ed5fc43a281f6cc4 (patch)
treedf53170ef149e097db9d28dd3af30e583dcfe3ff /plugins
parent81b677bf2f5928ac2e51d1803096ab0456c9dc66 (diff)
downloadorg.eclipse.atl-8489908c225e1cf646755ca0ed5fc43a281f6cc4.tar.gz
org.eclipse.atl-8489908c225e1cf646755ca0ed5fc43a281f6cc4.tar.xz
org.eclipse.atl-8489908c225e1cf646755ca0ed5fc43a281f6cc4.zip
Fix + test + bytecode format change.
413110: Refining mode rules resolves default traces to the second target element when available https://bugs.eclipse.org/bugs/show_bug.cgi?id=413110
Diffstat (limited to 'plugins')
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm.compiler/transformations/ATLWFR.emftvmbin47380 -> 47452 bytes
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm.compiler/transformations/ATLtoEMFTVM.atl13
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm.compiler/transformations/ATLtoEMFTVM.emftvmbin131751 -> 133158 bytes
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm.compiler/transformations/EMFTVMCopy.atl1
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm.compiler/transformations/EMFTVMCopy.emftvmbin30407 -> 30827 bytes
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm.compiler/transformations/InlineCodeblocks.emftvmbin31877 -> 31949 bytes
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm.compiler/transformations/OCLtoEMFTVM.emftvmbin94612 -> 94836 bytes
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm.edit/META-INF/MANIFEST.MF1
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm.edit/plugin.properties1
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm.edit/src/org/eclipse/m2m/atl/emftvm/provider/InputRuleElementItemProvider.java28
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm.editor/src/org/eclipse/m2m/atl/emftvm/presentation/EmftvmEditor.java78
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm.launcher/META-INF/MANIFEST.MF7
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm.trace.edit/plugin.properties1
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm.trace.edit/src/org/eclipse/m2m/atl/emftvm/trace/provider/SourceElementItemProvider.java31
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm.trace.editor/src/org/eclipse/m2m/atl/emftvm/trace/presentation/TraceEditor.java78
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm.trace/META-INF/MANIFEST.MF2
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm.trace/model/trace.ecore2
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm.trace/model/trace.genmodel2
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm.trace/src/org/eclipse/m2m/atl/emftvm/trace/SourceElement.java27
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm.trace/src/org/eclipse/m2m/atl/emftvm/trace/TracePackage.java30
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm.trace/src/org/eclipse/m2m/atl/emftvm/trace/impl/SourceElementImpl.java54
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm.trace/src/org/eclipse/m2m/atl/emftvm/trace/impl/SourceElementListImpl.java4
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm.trace/src/org/eclipse/m2m/atl/emftvm/trace/impl/TargetElementImpl.java2
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm.trace/src/org/eclipse/m2m/atl/emftvm/trace/impl/TraceFactoryImpl.java2
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm.trace/src/org/eclipse/m2m/atl/emftvm/trace/impl/TraceLinkImpl.java2
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm.trace/src/org/eclipse/m2m/atl/emftvm/trace/impl/TracePackageImpl.java11
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm.trace/src/org/eclipse/m2m/atl/emftvm/trace/impl/TracedRuleImpl.java2
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm/META-INF/MANIFEST.MF2
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm/doc/EMFTVM.html58
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm/doc/EMFTVM.odsbin19161 -> 24719 bytes
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm/doc/EMFTVM.xlsbin37888 -> 37888 bytes
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm/model/emftvm.ecore9
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm/model/emftvm.genmodel6
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/EmftvmPackage.java30
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/ExecEnv.java4
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/InputRuleElement.java27
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/Instruction.java4
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/Rule.java13
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/CodeBlockImpl.java14
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/EmftvmFactoryImpl.java2
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/EmftvmPackageImpl.java18
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/FeatureImpl.java2
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/FieldImpl.java2
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/InputRuleElementImpl.java69
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/InstructionImpl.java2
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/LineNumberImpl.java2
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/LocalVariableImpl.java2
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/ModelDeclarationImpl.java6
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/OutputRuleElementImpl.java2
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/ParameterImpl.java2
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/RuleImpl.java27
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/resource/EMFTVMResourceImpl.java81
-rw-r--r--plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/util/OCLOperations.java8
53 files changed, 607 insertions, 164 deletions
diff --git a/plugins/org.eclipse.m2m.atl.emftvm.compiler/transformations/ATLWFR.emftvm b/plugins/org.eclipse.m2m.atl.emftvm.compiler/transformations/ATLWFR.emftvm
index a935730e..95dd8185 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm.compiler/transformations/ATLWFR.emftvm
+++ b/plugins/org.eclipse.m2m.atl.emftvm.compiler/transformations/ATLWFR.emftvm
Binary files differ
diff --git a/plugins/org.eclipse.m2m.atl.emftvm.compiler/transformations/ATLtoEMFTVM.atl b/plugins/org.eclipse.m2m.atl.emftvm.compiler/transformations/ATLtoEMFTVM.atl
index 4e33e4fa..522e9419 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm.compiler/transformations/ATLtoEMFTVM.atl
+++ b/plugins/org.eclipse.m2m.atl.emftvm.compiler/transformations/ATLtoEMFTVM.atl
@@ -200,10 +200,18 @@ helper context ATL!VariableDeclaration def : isRefiningElement : Boolean =
--- Returns 'true' if self is an output element that represents a refined input element.
helper context ATL!OutPatternElement def : isRefiningElement : Boolean =
self.outModel.isRefiningModel and
- (let inModel : ATL!OclModel = self.outModel.refines in
- let sourceElement : ATL!InPatternElement = self.actualSourceElement in
+ (let sourceElement : ATL!InPatternElement = self.actualSourceElement in
not sourceElement.oclIsUndefined() and sourceElement.type.sameAs(self.type));
+--- Returns 'true' if self has an output element that represents a refinement of this input element.
+helper context ATL!InPatternElement def : hasRefiningElement : Boolean =
+ not self.inPattern."rule".outPattern.oclIsUndefined() and
+ self.inPattern."rule".outPattern.elements->exists(outElement |
+ outElement.outModel.isRefiningModel and
+ self = outElement.actualSourceElement and
+ self.type.sameAs(outElement.type)
+ );
+
--- Returns 'OclUndefined'.
helper context ATL!VariableDeclaration def : actualSourceElement : ATL!InPatternElement =
OclUndefined;
@@ -408,6 +416,7 @@ rule InPatternElement {
name <- s.varName,
type <- s.type.typeName,
typeModel <- s.type.modelName,
+ mapsToSelf <- s.hasRefiningElement,
models <- s.models->collect(m|m.name)),
ov : EMFTVM!LocalVariable (
name <- s.varName,
diff --git a/plugins/org.eclipse.m2m.atl.emftvm.compiler/transformations/ATLtoEMFTVM.emftvm b/plugins/org.eclipse.m2m.atl.emftvm.compiler/transformations/ATLtoEMFTVM.emftvm
index 76996512..916d4d5c 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm.compiler/transformations/ATLtoEMFTVM.emftvm
+++ b/plugins/org.eclipse.m2m.atl.emftvm.compiler/transformations/ATLtoEMFTVM.emftvm
Binary files differ
diff --git a/plugins/org.eclipse.m2m.atl.emftvm.compiler/transformations/EMFTVMCopy.atl b/plugins/org.eclipse.m2m.atl.emftvm.compiler/transformations/EMFTVMCopy.atl
index 8f2b651f..b7bd08ed 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm.compiler/transformations/EMFTVMCopy.atl
+++ b/plugins/org.eclipse.m2m.atl.emftvm.compiler/transformations/EMFTVMCopy.atl
@@ -126,6 +126,7 @@ rule InputRuleElement {
name <- s.name,
type <- s.type,
typeModel <- s.typeModel,
+ mapsToSelf <- s.mapsToSelf,
models <- s.models,
binding <- s.binding)
}
diff --git a/plugins/org.eclipse.m2m.atl.emftvm.compiler/transformations/EMFTVMCopy.emftvm b/plugins/org.eclipse.m2m.atl.emftvm.compiler/transformations/EMFTVMCopy.emftvm
index 9eb34d56..345f8774 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm.compiler/transformations/EMFTVMCopy.emftvm
+++ b/plugins/org.eclipse.m2m.atl.emftvm.compiler/transformations/EMFTVMCopy.emftvm
Binary files differ
diff --git a/plugins/org.eclipse.m2m.atl.emftvm.compiler/transformations/InlineCodeblocks.emftvm b/plugins/org.eclipse.m2m.atl.emftvm.compiler/transformations/InlineCodeblocks.emftvm
index 9fca0b92..eae1a5e2 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm.compiler/transformations/InlineCodeblocks.emftvm
+++ b/plugins/org.eclipse.m2m.atl.emftvm.compiler/transformations/InlineCodeblocks.emftvm
Binary files differ
diff --git a/plugins/org.eclipse.m2m.atl.emftvm.compiler/transformations/OCLtoEMFTVM.emftvm b/plugins/org.eclipse.m2m.atl.emftvm.compiler/transformations/OCLtoEMFTVM.emftvm
index 300ec750..93eedced 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm.compiler/transformations/OCLtoEMFTVM.emftvm
+++ b/plugins/org.eclipse.m2m.atl.emftvm.compiler/transformations/OCLtoEMFTVM.emftvm
Binary files differ
diff --git a/plugins/org.eclipse.m2m.atl.emftvm.edit/META-INF/MANIFEST.MF b/plugins/org.eclipse.m2m.atl.emftvm.edit/META-INF/MANIFEST.MF
index 0e2f3a07..e68b162e 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm.edit/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.m2m.atl.emftvm.edit/META-INF/MANIFEST.MF
@@ -14,5 +14,6 @@ Require-Bundle: org.eclipse.core.runtime,
org.eclipse.emf.edit;visibility:=reexport,
org.eclipse.emf.ecore;visibility:=reexport,
org.eclipse.emf.ecore.edit;visibility:=reexport,
+ org.eclipse.m2m.atl.emftvm.trace;visibility:=reexport,
org.eclipse.m2m.atl.emftvm.trace.edit
Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.m2m.atl.emftvm.edit/plugin.properties b/plugins/org.eclipse.m2m.atl.emftvm.edit/plugin.properties
index 845e5f74..f38000b8 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm.edit/plugin.properties
+++ b/plugins/org.eclipse.m2m.atl.emftvm.edit/plugin.properties
@@ -452,3 +452,4 @@ _UI_ExecEnv_uniqueResults_feature = Unique Results
_UI_Rule_withLeaves_feature = With Leaves
_UI_ExecEnv_jitDisabled_feature = Jit Disabled
_UI_ExecEnv_currentPhase_feature = Current Phase
+_UI_InputRuleElement_mapsToSelf_feature = Maps To Self
diff --git a/plugins/org.eclipse.m2m.atl.emftvm.edit/src/org/eclipse/m2m/atl/emftvm/provider/InputRuleElementItemProvider.java b/plugins/org.eclipse.m2m.atl.emftvm.edit/src/org/eclipse/m2m/atl/emftvm/provider/InputRuleElementItemProvider.java
index b12c225f..f09c2317 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm.edit/src/org/eclipse/m2m/atl/emftvm/provider/InputRuleElementItemProvider.java
+++ b/plugins/org.eclipse.m2m.atl.emftvm.edit/src/org/eclipse/m2m/atl/emftvm/provider/InputRuleElementItemProvider.java
@@ -17,12 +17,14 @@ import java.util.List;
import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
import org.eclipse.emf.edit.provider.IItemLabelProvider;
import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
import org.eclipse.emf.edit.provider.IItemPropertySource;
import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
import org.eclipse.emf.edit.provider.ViewerNotification;
import org.eclipse.m2m.atl.emftvm.EmftvmFactory;
import org.eclipse.m2m.atl.emftvm.EmftvmPackage;
@@ -64,11 +66,34 @@ public class InputRuleElementItemProvider
if (itemPropertyDescriptors == null) {
super.getPropertyDescriptors(object);
+ addMapsToSelfPropertyDescriptor(object);
}
return itemPropertyDescriptors;
}
/**
+ * This adds a property descriptor for the Maps To Self feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addMapsToSelfPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_InputRuleElement_mapsToSelf_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_InputRuleElement_mapsToSelf_feature", "_UI_InputRuleElement_type"),
+ EmftvmPackage.Literals.INPUT_RULE_ELEMENT__MAPS_TO_SELF,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
* This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
* {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
* {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
@@ -135,6 +160,9 @@ public class InputRuleElementItemProvider
updateChildren(notification);
switch (notification.getFeatureID(InputRuleElement.class)) {
+ case EmftvmPackage.INPUT_RULE_ELEMENT__MAPS_TO_SELF:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
case EmftvmPackage.INPUT_RULE_ELEMENT__BINDING:
fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
return;
diff --git a/plugins/org.eclipse.m2m.atl.emftvm.editor/src/org/eclipse/m2m/atl/emftvm/presentation/EmftvmEditor.java b/plugins/org.eclipse.m2m.atl.emftvm.editor/src/org/eclipse/m2m/atl/emftvm/presentation/EmftvmEditor.java
index 9f1e9806..00d2a149 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm.editor/src/org/eclipse/m2m/atl/emftvm/presentation/EmftvmEditor.java
+++ b/plugins/org.eclipse.m2m.atl.emftvm.editor/src/org/eclipse/m2m/atl/emftvm/presentation/EmftvmEditor.java
@@ -48,8 +48,6 @@ import org.eclipse.emf.common.ui.viewer.IViewerProvider;
import org.eclipse.emf.common.util.BasicDiagnostic;
import org.eclipse.emf.common.util.Diagnostic;
import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EValidator;
import org.eclipse.emf.ecore.provider.EcoreItemProviderAdapterFactory;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
@@ -185,7 +183,7 @@ public class EmftvmEditor
* <!-- end-user-doc -->
* @generated
*/
- protected PropertySheetPage propertySheetPage;
+ protected List<PropertySheetPage> propertySheetPages = new ArrayList<PropertySheetPage>();
/**
* This is the viewer that shadows the selection in the content outline.
@@ -304,7 +302,7 @@ public class EmftvmEditor
}
}
else if (p instanceof PropertySheet) {
- if (((PropertySheet)p).getCurrentPage() == propertySheetPage) {
+ if (propertySheetPages.contains(((PropertySheet)p).getCurrentPage())) {
getActionBarContributor().setActiveEditor(EmftvmEditor.this);
handleActivate();
}
@@ -416,6 +414,15 @@ public class EmftvmEditor
@Override
protected void unsetTarget(Resource target) {
basicUnsetTarget(target);
+ resourceToDiagnosticMap.remove(target);
+ if (updateProblemIndication) {
+ getSite().getShell().getDisplay().asyncExec
+ (new Runnable() {
+ public void run() {
+ updateProblemIndication();
+ }
+ });
+ }
}
};
@@ -449,6 +456,7 @@ public class EmftvmEditor
}
}
}
+ return false;
}
return true;
@@ -687,8 +695,14 @@ public class EmftvmEditor
if (mostRecentCommand != null) {
setSelectionToViewer(mostRecentCommand.getAffectedObjects());
}
- if (propertySheetPage != null && !propertySheetPage.getControl().isDisposed()) {
- propertySheetPage.refresh();
+ for (Iterator<PropertySheetPage> i = propertySheetPages.iterator(); i.hasNext(); ) {
+ PropertySheetPage propertySheetPage = i.next();
+ if (propertySheetPage.getControl().isDisposed()) {
+ i.remove();
+ }
+ else {
+ propertySheetPage.refresh();
+ }
}
}
});
@@ -1352,23 +1366,22 @@ public class EmftvmEditor
* @generated
*/
public IPropertySheetPage getPropertySheetPage() {
- if (propertySheetPage == null) {
- propertySheetPage =
- new ExtendedPropertySheetPage(editingDomain) {
- @Override
- public void setSelectionToViewer(List<?> selection) {
- EmftvmEditor.this.setSelectionToViewer(selection);
- EmftvmEditor.this.setFocus();
- }
+ PropertySheetPage propertySheetPage =
+ new ExtendedPropertySheetPage(editingDomain) {
+ @Override
+ public void setSelectionToViewer(List<?> selection) {
+ EmftvmEditor.this.setSelectionToViewer(selection);
+ EmftvmEditor.this.setFocus();
+ }
- @Override
- public void setActionBars(IActionBars actionBars) {
- super.setActionBars(actionBars);
- getActionBarContributor().shareGlobalActions(this, actionBars);
- }
- };
- propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory));
- }
+ @Override
+ public void setActionBars(IActionBars actionBars) {
+ super.setActionBars(actionBars);
+ getActionBarContributor().shareGlobalActions(this, actionBars);
+ }
+ };
+ propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory));
+ propertySheetPages.add(propertySheetPage);
return propertySheetPage;
}
@@ -1487,7 +1500,7 @@ public class EmftvmEditor
/**
* This returns whether something has been persisted to the URI of the specified resource.
- * The implementation uses the URI converter from the editor's resource set to try to open an input stream.
+ * The implementation uses the URI converter from the editor's resource set to try to open an input stream.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
@@ -1559,20 +1572,9 @@ public class EmftvmEditor
* @generated
*/
public void gotoMarker(IMarker marker) {
- try {
- if (marker.getType().equals(EValidator.MARKER)) {
- String uriAttribute = marker.getAttribute(EValidator.URI_ATTRIBUTE, null);
- if (uriAttribute != null) {
- URI uri = URI.createURI(uriAttribute);
- EObject eObject = editingDomain.getResourceSet().getEObject(uri, true);
- if (eObject != null) {
- setSelectionToViewer(Collections.singleton(editingDomain.getWrapper(eObject)));
- }
- }
- }
- }
- catch (CoreException exception) {
- EmftvmEditorPlugin.INSTANCE.log(exception);
+ List<?> targetObjects = markerHelper.getTargetObjects(editingDomain, marker);
+ if (!targetObjects.isEmpty()) {
+ setSelectionToViewer(targetObjects);
}
}
@@ -1763,7 +1765,7 @@ public class EmftvmEditor
getActionBarContributor().setActiveEditor(null);
}
- if (propertySheetPage != null) {
+ for (PropertySheetPage propertySheetPage : propertySheetPages) {
propertySheetPage.dispose();
}
diff --git a/plugins/org.eclipse.m2m.atl.emftvm.launcher/META-INF/MANIFEST.MF b/plugins/org.eclipse.m2m.atl.emftvm.launcher/META-INF/MANIFEST.MF
index 2904c222..568b31dc 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm.launcher/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.m2m.atl.emftvm.launcher/META-INF/MANIFEST.MF
@@ -15,8 +15,11 @@ Require-Bundle: org.eclipse.core.runtime,
org.eclipse.jface.text;bundle-version="3.5.0",
org.eclipse.ui.console;bundle-version="3.4.0",
org.eclipse.m2m.atl.adt.ui;bundle-version="3.1.0",
- org.eclipse.m2m.atl.debug.core;bundle-version="3.1.0"
+ org.eclipse.m2m.atl.debug.core;bundle-version="3.1.0",
+ org.eclipse.m2m.atl.profiler.core;bundle-version="3.1.0"
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Bundle-ActivationPolicy: lazy
Export-Package: org.eclipse.m2m.atl.emftvm.launcher,
- org.eclipse.m2m.atl.emftvm.launcher.debug
+ org.eclipse.m2m.atl.emftvm.launcher.debug,
+ org.eclipse.m2m.atl.emftvm.profiler,
+ org.eclipse.m2m.atl.emftvm.profiler.adapter
diff --git a/plugins/org.eclipse.m2m.atl.emftvm.trace.edit/plugin.properties b/plugins/org.eclipse.m2m.atl.emftvm.trace.edit/plugin.properties
index 026ba7d0..53b50ed8 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm.trace.edit/plugin.properties
+++ b/plugins/org.eclipse.m2m.atl.emftvm.trace.edit/plugin.properties
@@ -49,3 +49,4 @@ _UI_SourceElementList_uniqueFor_feature = Unique For
_UI_Unknown_feature = Unspecified
_UI_TraceElement_runtimeObject_feature = Runtime Object
+_UI_SourceElement_mapsToSelf_feature = Maps To Self
diff --git a/plugins/org.eclipse.m2m.atl.emftvm.trace.edit/src/org/eclipse/m2m/atl/emftvm/trace/provider/SourceElementItemProvider.java b/plugins/org.eclipse.m2m.atl.emftvm.trace.edit/src/org/eclipse/m2m/atl/emftvm/trace/provider/SourceElementItemProvider.java
index 5398c3c6..95479195 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm.trace.edit/src/org/eclipse/m2m/atl/emftvm/trace/provider/SourceElementItemProvider.java
+++ b/plugins/org.eclipse.m2m.atl.emftvm.trace.edit/src/org/eclipse/m2m/atl/emftvm/trace/provider/SourceElementItemProvider.java
@@ -16,6 +16,8 @@ import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
import org.eclipse.emf.edit.provider.IItemPropertySource;
import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
import org.eclipse.m2m.atl.emftvm.trace.SourceElement;
import org.eclipse.m2m.atl.emftvm.trace.TracePackage;
@@ -57,6 +59,7 @@ public class SourceElementItemProvider
addMapsToPropertyDescriptor(object);
addDefaultForPropertyDescriptor(object);
addUniqueForPropertyDescriptor(object);
+ addMapsToSelfPropertyDescriptor(object);
}
return itemPropertyDescriptors;
}
@@ -128,6 +131,28 @@ public class SourceElementItemProvider
}
/**
+ * This adds a property descriptor for the Maps To Self feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addMapsToSelfPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_SourceElement_mapsToSelf_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_SourceElement_mapsToSelf_feature", "_UI_SourceElement_type"),
+ TracePackage.Literals.SOURCE_ELEMENT__MAPS_TO_SELF,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
* This returns SourceElement.gif.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -162,6 +187,12 @@ public class SourceElementItemProvider
@Override
public void notifyChanged(Notification notification) {
updateChildren(notification);
+
+ switch (notification.getFeatureID(SourceElement.class)) {
+ case TracePackage.SOURCE_ELEMENT__MAPS_TO_SELF:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
super.notifyChanged(notification);
}
diff --git a/plugins/org.eclipse.m2m.atl.emftvm.trace.editor/src/org/eclipse/m2m/atl/emftvm/trace/presentation/TraceEditor.java b/plugins/org.eclipse.m2m.atl.emftvm.trace.editor/src/org/eclipse/m2m/atl/emftvm/trace/presentation/TraceEditor.java
index 56188c41..307b7382 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm.trace.editor/src/org/eclipse/m2m/atl/emftvm/trace/presentation/TraceEditor.java
+++ b/plugins/org.eclipse.m2m.atl.emftvm.trace.editor/src/org/eclipse/m2m/atl/emftvm/trace/presentation/TraceEditor.java
@@ -41,8 +41,6 @@ import org.eclipse.emf.common.ui.viewer.IViewerProvider;
import org.eclipse.emf.common.util.BasicDiagnostic;
import org.eclipse.emf.common.util.Diagnostic;
import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EValidator;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.util.EContentAdapter;
@@ -176,7 +174,7 @@ public class TraceEditor
* <!-- end-user-doc -->
* @generated
*/
- protected PropertySheetPage propertySheetPage;
+ protected List<PropertySheetPage> propertySheetPages = new ArrayList<PropertySheetPage>();
/**
* This is the viewer that shadows the selection in the content outline.
@@ -295,7 +293,7 @@ public class TraceEditor
}
}
else if (p instanceof PropertySheet) {
- if (((PropertySheet)p).getCurrentPage() == propertySheetPage) {
+ if (propertySheetPages.contains(((PropertySheet)p).getCurrentPage())) {
getActionBarContributor().setActiveEditor(TraceEditor.this);
handleActivate();
}
@@ -407,6 +405,15 @@ public class TraceEditor
@Override
protected void unsetTarget(Resource target) {
basicUnsetTarget(target);
+ resourceToDiagnosticMap.remove(target);
+ if (updateProblemIndication) {
+ getSite().getShell().getDisplay().asyncExec
+ (new Runnable() {
+ public void run() {
+ updateProblemIndication();
+ }
+ });
+ }
}
};
@@ -440,6 +447,7 @@ public class TraceEditor
}
}
}
+ return false;
}
return true;
@@ -676,8 +684,14 @@ public class TraceEditor
if (mostRecentCommand != null) {
setSelectionToViewer(mostRecentCommand.getAffectedObjects());
}
- if (propertySheetPage != null && !propertySheetPage.getControl().isDisposed()) {
- propertySheetPage.refresh();
+ for (Iterator<PropertySheetPage> i = propertySheetPages.iterator(); i.hasNext(); ) {
+ PropertySheetPage propertySheetPage = i.next();
+ if (propertySheetPage.getControl().isDisposed()) {
+ i.remove();
+ }
+ else {
+ propertySheetPage.refresh();
+ }
}
}
});
@@ -1341,23 +1355,22 @@ public class TraceEditor
* @generated
*/
public IPropertySheetPage getPropertySheetPage() {
- if (propertySheetPage == null) {
- propertySheetPage =
- new ExtendedPropertySheetPage(editingDomain) {
- @Override
- public void setSelectionToViewer(List<?> selection) {
- TraceEditor.this.setSelectionToViewer(selection);
- TraceEditor.this.setFocus();
- }
+ PropertySheetPage propertySheetPage =
+ new ExtendedPropertySheetPage(editingDomain) {
+ @Override
+ public void setSelectionToViewer(List<?> selection) {
+ TraceEditor.this.setSelectionToViewer(selection);
+ TraceEditor.this.setFocus();
+ }
- @Override
- public void setActionBars(IActionBars actionBars) {
- super.setActionBars(actionBars);
- getActionBarContributor().shareGlobalActions(this, actionBars);
- }
- };
- propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory));
- }
+ @Override
+ public void setActionBars(IActionBars actionBars) {
+ super.setActionBars(actionBars);
+ getActionBarContributor().shareGlobalActions(this, actionBars);
+ }
+ };
+ propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory));
+ propertySheetPages.add(propertySheetPage);
return propertySheetPage;
}
@@ -1476,7 +1489,7 @@ public class TraceEditor
/**
* This returns whether something has been persisted to the URI of the specified resource.
- * The implementation uses the URI converter from the editor's resource set to try to open an input stream.
+ * The implementation uses the URI converter from the editor's resource set to try to open an input stream.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
@@ -1548,20 +1561,9 @@ public class TraceEditor
* @generated
*/
public void gotoMarker(IMarker marker) {
- try {
- if (marker.getType().equals(EValidator.MARKER)) {
- String uriAttribute = marker.getAttribute(EValidator.URI_ATTRIBUTE, null);
- if (uriAttribute != null) {
- URI uri = URI.createURI(uriAttribute);
- EObject eObject = editingDomain.getResourceSet().getEObject(uri, true);
- if (eObject != null) {
- setSelectionToViewer(Collections.singleton(editingDomain.getWrapper(eObject)));
- }
- }
- }
- }
- catch (CoreException exception) {
- TraceEditorPlugin.INSTANCE.log(exception);
+ List<?> targetObjects = markerHelper.getTargetObjects(editingDomain, marker);
+ if (!targetObjects.isEmpty()) {
+ setSelectionToViewer(targetObjects);
}
}
@@ -1752,7 +1754,7 @@ public class TraceEditor
getActionBarContributor().setActiveEditor(null);
}
- if (propertySheetPage != null) {
+ for (PropertySheetPage propertySheetPage : propertySheetPages) {
propertySheetPage.dispose();
}
diff --git a/plugins/org.eclipse.m2m.atl.emftvm.trace/META-INF/MANIFEST.MF b/plugins/org.eclipse.m2m.atl.emftvm.trace/META-INF/MANIFEST.MF
index 8d796325..9107271a 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm.trace/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.m2m.atl.emftvm.trace/META-INF/MANIFEST.MF
@@ -11,5 +11,5 @@ Export-Package: org.eclipse.m2m.atl.emftvm.trace,
org.eclipse.m2m.atl.emftvm.trace.impl,
org.eclipse.m2m.atl.emftvm.trace.util
Require-Bundle: org.eclipse.core.runtime,
- org.eclipse.emf.ecore;bundle-version="2.4.0";visibility:=reexport
+ org.eclipse.emf.ecore;visibility:=reexport;bundle-version="2.4.0"
Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.m2m.atl.emftvm.trace/model/trace.ecore b/plugins/org.eclipse.m2m.atl.emftvm.trace/model/trace.ecore
index ed0b16cf..cd743529 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm.trace/model/trace.ecore
+++ b/plugins/org.eclipse.m2m.atl.emftvm.trace/model/trace.ecore
@@ -78,6 +78,8 @@
eOpposite="#//TraceLinkSet/defaultSourceElements"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="uniqueFor" eType="#//TracedRule"
eOpposite="#//TracedRule/uniqueSourceElements"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="mapsToSelf" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TargetElement" eSuperTypes="#//TraceElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="targetOf" eType="#//TraceLink"
diff --git a/plugins/org.eclipse.m2m.atl.emftvm.trace/model/trace.genmodel b/plugins/org.eclipse.m2m.atl.emftvm.trace/model/trace.genmodel
index 6b7ab247..c36a7017 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm.trace/model/trace.genmodel
+++ b/plugins/org.eclipse.m2m.atl.emftvm.trace/model/trace.genmodel
@@ -59,12 +59,14 @@
<genClasses image="false" ecoreClass="trace.ecore#//TraceElement">
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute trace.ecore#//TraceElement/name"/>
<genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference trace.ecore#//TraceElement/object"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute trace.ecore#//TraceElement/runtimeObject"/>
</genClasses>
<genClasses ecoreClass="trace.ecore#//SourceElement">
<genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference trace.ecore#//SourceElement/sourceOf"/>
<genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference trace.ecore#//SourceElement/mapsTo"/>
<genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference trace.ecore#//SourceElement/defaultFor"/>
<genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference trace.ecore#//SourceElement/uniqueFor"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute trace.ecore#//SourceElement/mapsToSelf"/>
</genClasses>
<genClasses ecoreClass="trace.ecore#//TargetElement">
<genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference trace.ecore#//TargetElement/targetOf"/>
diff --git a/plugins/org.eclipse.m2m.atl.emftvm.trace/src/org/eclipse/m2m/atl/emftvm/trace/SourceElement.java b/plugins/org.eclipse.m2m.atl.emftvm.trace/src/org/eclipse/m2m/atl/emftvm/trace/SourceElement.java
index 96682087..312e3ac3 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm.trace/src/org/eclipse/m2m/atl/emftvm/trace/SourceElement.java
+++ b/plugins/org.eclipse.m2m.atl.emftvm.trace/src/org/eclipse/m2m/atl/emftvm/trace/SourceElement.java
@@ -26,6 +26,7 @@ import org.eclipse.emf.common.util.EList;
* <li>{@link org.eclipse.m2m.atl.emftvm.trace.SourceElement#getMapsTo <em>Maps To</em>}</li>
* <li>{@link org.eclipse.m2m.atl.emftvm.trace.SourceElement#getDefaultFor <em>Default For</em>}</li>
* <li>{@link org.eclipse.m2m.atl.emftvm.trace.SourceElement#getUniqueFor <em>Unique For</em>}</li>
+ * <li>{@link org.eclipse.m2m.atl.emftvm.trace.SourceElement#isMapsToSelf <em>Maps To Self</em>}</li>
* </ul>
* </p>
*
@@ -136,4 +137,30 @@ public interface SourceElement extends TraceElement {
*/
void setUniqueFor(TracedRule value);
+ /**
+ * Returns the value of the '<em><b>Maps To Self</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Maps To Self</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Maps To Self</em>' attribute.
+ * @see #setMapsToSelf(boolean)
+ * @see org.eclipse.m2m.atl.emftvm.trace.TracePackage#getSourceElement_MapsToSelf()
+ * @model required="true"
+ * @generated
+ */
+ boolean isMapsToSelf();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.m2m.atl.emftvm.trace.SourceElement#isMapsToSelf <em>Maps To Self</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Maps To Self</em>' attribute.
+ * @see #isMapsToSelf()
+ * @generated
+ */
+ void setMapsToSelf(boolean value);
+
} // SourceElement
diff --git a/plugins/org.eclipse.m2m.atl.emftvm.trace/src/org/eclipse/m2m/atl/emftvm/trace/TracePackage.java b/plugins/org.eclipse.m2m.atl.emftvm.trace/src/org/eclipse/m2m/atl/emftvm/trace/TracePackage.java
index 54cb6a27..3240bfd8 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm.trace/src/org/eclipse/m2m/atl/emftvm/trace/TracePackage.java
+++ b/plugins/org.eclipse.m2m.atl.emftvm.trace/src/org/eclipse/m2m/atl/emftvm/trace/TracePackage.java
@@ -350,13 +350,22 @@ public interface TracePackage extends EPackage {
int SOURCE_ELEMENT__UNIQUE_FOR = TRACE_ELEMENT_FEATURE_COUNT + 3;
/**
+ * The feature id for the '<em><b>Maps To Self</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SOURCE_ELEMENT__MAPS_TO_SELF = TRACE_ELEMENT_FEATURE_COUNT + 4;
+
+ /**
* The number of structural features of the '<em>Source Element</em>' class.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
* @ordered
*/
- int SOURCE_ELEMENT_FEATURE_COUNT = TRACE_ELEMENT_FEATURE_COUNT + 4;
+ int SOURCE_ELEMENT_FEATURE_COUNT = TRACE_ELEMENT_FEATURE_COUNT + 5;
/**
* The meta object id for the '{@link org.eclipse.m2m.atl.emftvm.trace.impl.TargetElementImpl <em>Target Element</em>}' class.
@@ -741,6 +750,17 @@ public interface TracePackage extends EPackage {
EReference getSourceElement_UniqueFor();
/**
+ * Returns the meta object for the attribute '{@link org.eclipse.m2m.atl.emftvm.trace.SourceElement#isMapsToSelf <em>Maps To Self</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Maps To Self</em>'.
+ * @see org.eclipse.m2m.atl.emftvm.trace.SourceElement#isMapsToSelf()
+ * @see #getSourceElement()
+ * @generated
+ */
+ EAttribute getSourceElement_MapsToSelf();
+
+ /**
* Returns the meta object for class '{@link org.eclipse.m2m.atl.emftvm.trace.TargetElement <em>Target Element</em>}'.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -1051,6 +1071,14 @@ public interface TracePackage extends EPackage {
EReference SOURCE_ELEMENT__UNIQUE_FOR = eINSTANCE.getSourceElement_UniqueFor();
/**
+ * The meta object literal for the '<em><b>Maps To Self</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute SOURCE_ELEMENT__MAPS_TO_SELF = eINSTANCE.getSourceElement_MapsToSelf();
+
+ /**
* The meta object literal for the '{@link org.eclipse.m2m.atl.emftvm.trace.impl.TargetElementImpl <em>Target Element</em>}' class.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
diff --git a/plugins/org.eclipse.m2m.atl.emftvm.trace/src/org/eclipse/m2m/atl/emftvm/trace/impl/SourceElementImpl.java b/plugins/org.eclipse.m2m.atl.emftvm.trace/src/org/eclipse/m2m/atl/emftvm/trace/impl/SourceElementImpl.java
index b21f05b3..1b732a28 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm.trace/src/org/eclipse/m2m/atl/emftvm/trace/impl/SourceElementImpl.java
+++ b/plugins/org.eclipse.m2m.atl.emftvm.trace/src/org/eclipse/m2m/atl/emftvm/trace/impl/SourceElementImpl.java
@@ -42,6 +42,7 @@ import org.eclipse.m2m.atl.emftvm.trace.TracedRule;
* <li>{@link org.eclipse.m2m.atl.emftvm.trace.impl.SourceElementImpl#getMapsTo <em>Maps To</em>}</li>
* <li>{@link org.eclipse.m2m.atl.emftvm.trace.impl.SourceElementImpl#getDefaultFor <em>Default For</em>}</li>
* <li>{@link org.eclipse.m2m.atl.emftvm.trace.impl.SourceElementImpl#getUniqueFor <em>Unique For</em>}</li>
+ * <li>{@link org.eclipse.m2m.atl.emftvm.trace.impl.SourceElementImpl#isMapsToSelf <em>Maps To Self</em>}</li>
* </ul>
* </p>
*
@@ -80,6 +81,26 @@ public class SourceElementImpl extends TraceElementImpl implements SourceElement
protected TracedRule uniqueFor;
/**
+ * The default value of the '{@link #isMapsToSelf() <em>Maps To Self</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isMapsToSelf()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean MAPS_TO_SELF_EDEFAULT = false;
+
+ /**
+ * The cached value of the '{@link #isMapsToSelf() <em>Maps To Self</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isMapsToSelf()
+ * @generated
+ * @ordered
+ */
+ protected boolean mapsToSelf = MAPS_TO_SELF_EDEFAULT;
+
+ /**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
@@ -105,7 +126,7 @@ public class SourceElementImpl extends TraceElementImpl implements SourceElement
*/
public TraceLink getSourceOf() {
if (eContainerFeatureID() != TracePackage.SOURCE_ELEMENT__SOURCE_OF) return null;
- return (TraceLink)eContainer();
+ return (TraceLink)eInternalContainer();
}
/**
@@ -276,6 +297,27 @@ public class SourceElementImpl extends TraceElementImpl implements SourceElement
* <!-- end-user-doc -->
* @generated
*/
+ public boolean isMapsToSelf() {
+ return mapsToSelf;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setMapsToSelf(boolean newMapsToSelf) {
+ boolean oldMapsToSelf = mapsToSelf;
+ mapsToSelf = newMapsToSelf;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, TracePackage.SOURCE_ELEMENT__MAPS_TO_SELF, oldMapsToSelf, mapsToSelf));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
@SuppressWarnings("unchecked")
@Override
public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
@@ -350,6 +392,8 @@ public class SourceElementImpl extends TraceElementImpl implements SourceElement
case TracePackage.SOURCE_ELEMENT__UNIQUE_FOR:
if (resolve) return getUniqueFor();
return basicGetUniqueFor();
+ case TracePackage.SOURCE_ELEMENT__MAPS_TO_SELF:
+ return isMapsToSelf();
}
return super.eGet(featureID, resolve, coreType);
}
@@ -376,6 +420,9 @@ public class SourceElementImpl extends TraceElementImpl implements SourceElement
case TracePackage.SOURCE_ELEMENT__UNIQUE_FOR:
setUniqueFor((TracedRule)newValue);
return;
+ case TracePackage.SOURCE_ELEMENT__MAPS_TO_SELF:
+ setMapsToSelf((Boolean)newValue);
+ return;
}
super.eSet(featureID, newValue);
}
@@ -400,6 +447,9 @@ public class SourceElementImpl extends TraceElementImpl implements SourceElement
case TracePackage.SOURCE_ELEMENT__UNIQUE_FOR:
setUniqueFor((TracedRule)null);
return;
+ case TracePackage.SOURCE_ELEMENT__MAPS_TO_SELF:
+ setMapsToSelf(MAPS_TO_SELF_EDEFAULT);
+ return;
}
super.eUnset(featureID);
}
@@ -420,6 +470,8 @@ public class SourceElementImpl extends TraceElementImpl implements SourceElement
return defaultFor != null;
case TracePackage.SOURCE_ELEMENT__UNIQUE_FOR:
return uniqueFor != null;
+ case TracePackage.SOURCE_ELEMENT__MAPS_TO_SELF:
+ return mapsToSelf != MAPS_TO_SELF_EDEFAULT;
}
return super.eIsSet(featureID);
}
diff --git a/plugins/org.eclipse.m2m.atl.emftvm.trace/src/org/eclipse/m2m/atl/emftvm/trace/impl/SourceElementListImpl.java b/plugins/org.eclipse.m2m.atl.emftvm.trace/src/org/eclipse/m2m/atl/emftvm/trace/impl/SourceElementListImpl.java
index 3cd377f7..31c0d2d5 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm.trace/src/org/eclipse/m2m/atl/emftvm/trace/impl/SourceElementListImpl.java
+++ b/plugins/org.eclipse.m2m.atl.emftvm.trace/src/org/eclipse/m2m/atl/emftvm/trace/impl/SourceElementListImpl.java
@@ -100,7 +100,7 @@ public class SourceElementListImpl extends EObjectImpl implements SourceElementL
*/
public TraceLinkSet getDefaultFor() {
if (eContainerFeatureID() != TracePackage.SOURCE_ELEMENT_LIST__DEFAULT_FOR) return null;
- return (TraceLinkSet)eContainer();
+ return (TraceLinkSet)eInternalContainer();
}
/**
@@ -141,7 +141,7 @@ public class SourceElementListImpl extends EObjectImpl implements SourceElementL
*/
public TracedRule getUniqueFor() {
if (eContainerFeatureID() != TracePackage.SOURCE_ELEMENT_LIST__UNIQUE_FOR) return null;
- return (TracedRule)eContainer();
+ return (TracedRule)eInternalContainer();
}
/**
diff --git a/plugins/org.eclipse.m2m.atl.emftvm.trace/src/org/eclipse/m2m/atl/emftvm/trace/impl/TargetElementImpl.java b/plugins/org.eclipse.m2m.atl.emftvm.trace/src/org/eclipse/m2m/atl/emftvm/trace/impl/TargetElementImpl.java
index 19bb8ea6..a7cd87f3 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm.trace/src/org/eclipse/m2m/atl/emftvm/trace/impl/TargetElementImpl.java
+++ b/plugins/org.eclipse.m2m.atl.emftvm.trace/src/org/eclipse/m2m/atl/emftvm/trace/impl/TargetElementImpl.java
@@ -80,7 +80,7 @@ public class TargetElementImpl extends TraceElementImpl implements TargetElement
*/
public TraceLink getTargetOf() {
if (eContainerFeatureID() != TracePackage.TARGET_ELEMENT__TARGET_OF) return null;
- return (TraceLink)eContainer();
+ return (TraceLink)eInternalContainer();
}
/**
diff --git a/plugins/org.eclipse.m2m.atl.emftvm.trace/src/org/eclipse/m2m/atl/emftvm/trace/impl/TraceFactoryImpl.java b/plugins/org.eclipse.m2m.atl.emftvm.trace/src/org/eclipse/m2m/atl/emftvm/trace/impl/TraceFactoryImpl.java
index bd1f41b7..f79849f9 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm.trace/src/org/eclipse/m2m/atl/emftvm/trace/impl/TraceFactoryImpl.java
+++ b/plugins/org.eclipse.m2m.atl.emftvm.trace/src/org/eclipse/m2m/atl/emftvm/trace/impl/TraceFactoryImpl.java
@@ -45,7 +45,7 @@ public class TraceFactoryImpl extends EFactoryImpl implements TraceFactory {
*/
public static TraceFactory init() {
try {
- TraceFactory theTraceFactory = (TraceFactory)EPackage.Registry.INSTANCE.getEFactory("http://www.eclipse.org/m2m/atl/emftvm/2011/Trace");
+ TraceFactory theTraceFactory = (TraceFactory)EPackage.Registry.INSTANCE.getEFactory(TracePackage.eNS_URI);
if (theTraceFactory != null) {
return theTraceFactory;
}
diff --git a/plugins/org.eclipse.m2m.atl.emftvm.trace/src/org/eclipse/m2m/atl/emftvm/trace/impl/TraceLinkImpl.java b/plugins/org.eclipse.m2m.atl.emftvm.trace/src/org/eclipse/m2m/atl/emftvm/trace/impl/TraceLinkImpl.java
index d363b4af..4b14ae5c 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm.trace/src/org/eclipse/m2m/atl/emftvm/trace/impl/TraceLinkImpl.java
+++ b/plugins/org.eclipse.m2m.atl.emftvm.trace/src/org/eclipse/m2m/atl/emftvm/trace/impl/TraceLinkImpl.java
@@ -126,7 +126,7 @@ public class TraceLinkImpl extends EObjectImpl implements TraceLink {
*/
public TracedRule getRule() {
if (eContainerFeatureID() != TracePackage.TRACE_LINK__RULE) return null;
- return (TracedRule)eContainer();
+ return (TracedRule)eInternalContainer();
}
/**
diff --git a/plugins/org.eclipse.m2m.atl.emftvm.trace/src/org/eclipse/m2m/atl/emftvm/trace/impl/TracePackageImpl.java b/plugins/org.eclipse.m2m.atl.emftvm.trace/src/org/eclipse/m2m/atl/emftvm/trace/impl/TracePackageImpl.java
index 04f60214..a7006ad7 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm.trace/src/org/eclipse/m2m/atl/emftvm/trace/impl/TracePackageImpl.java
+++ b/plugins/org.eclipse.m2m.atl.emftvm.trace/src/org/eclipse/m2m/atl/emftvm/trace/impl/TracePackageImpl.java
@@ -377,6 +377,15 @@ public class TracePackageImpl extends EPackageImpl implements TracePackage {
* <!-- end-user-doc -->
* @generated
*/
+ public EAttribute getSourceElement_MapsToSelf() {
+ return (EAttribute)sourceElementEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
public EClass getTargetElement() {
return targetElementEClass;
}
@@ -500,6 +509,7 @@ public class TracePackageImpl extends EPackageImpl implements TracePackage {
createEReference(sourceElementEClass, SOURCE_ELEMENT__MAPS_TO);
createEReference(sourceElementEClass, SOURCE_ELEMENT__DEFAULT_FOR);
createEReference(sourceElementEClass, SOURCE_ELEMENT__UNIQUE_FOR);
+ createEAttribute(sourceElementEClass, SOURCE_ELEMENT__MAPS_TO_SELF);
targetElementEClass = createEClass(TARGET_ELEMENT);
createEReference(targetElementEClass, TARGET_ELEMENT__TARGET_OF);
@@ -606,6 +616,7 @@ public class TracePackageImpl extends EPackageImpl implements TracePackage {
initEReference(getSourceElement_MapsTo(), this.getTargetElement(), this.getTargetElement_MapsTo(), "mapsTo", null, 0, -1, SourceElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEReference(getSourceElement_DefaultFor(), this.getTraceLinkSet(), this.getTraceLinkSet_DefaultSourceElements(), "defaultFor", null, 0, 1, SourceElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEReference(getSourceElement_UniqueFor(), this.getTracedRule(), this.getTracedRule_UniqueSourceElements(), "uniqueFor", null, 0, 1, SourceElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getSourceElement_MapsToSelf(), ecorePackage.getEBoolean(), "mapsToSelf", null, 1, 1, SourceElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEClass(targetElementEClass, TargetElement.class, "TargetElement", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEReference(getTargetElement_TargetOf(), this.getTraceLink(), this.getTraceLink_TargetElements(), "targetOf", null, 0, 1, TargetElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
diff --git a/plugins/org.eclipse.m2m.atl.emftvm.trace/src/org/eclipse/m2m/atl/emftvm/trace/impl/TracedRuleImpl.java b/plugins/org.eclipse.m2m.atl.emftvm.trace/src/org/eclipse/m2m/atl/emftvm/trace/impl/TracedRuleImpl.java
index 802f95eb..182ed8c2 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm.trace/src/org/eclipse/m2m/atl/emftvm/trace/impl/TracedRuleImpl.java
+++ b/plugins/org.eclipse.m2m.atl.emftvm.trace/src/org/eclipse/m2m/atl/emftvm/trace/impl/TracedRuleImpl.java
@@ -173,7 +173,7 @@ public class TracedRuleImpl extends EObjectImpl implements TracedRule {
*/
public TraceLinkSet getLinkSet() {
if (eContainerFeatureID() != TracePackage.TRACED_RULE__LINK_SET) return null;
- return (TraceLinkSet)eContainer();
+ return (TraceLinkSet)eInternalContainer();
}
/**
diff --git a/plugins/org.eclipse.m2m.atl.emftvm/META-INF/MANIFEST.MF b/plugins/org.eclipse.m2m.atl.emftvm/META-INF/MANIFEST.MF
index 03aedff1..54293a2d 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.m2m.atl.emftvm/META-INF/MANIFEST.MF
@@ -14,7 +14,7 @@ Export-Package: org.eclipse.m2m.atl.emftvm,
org.eclipse.m2m.atl.emftvm.impl.resource,
org.eclipse.m2m.atl.emftvm.util
Require-Bundle: org.eclipse.core.runtime,
- org.eclipse.emf.ecore;bundle-version="2.4.0";visibility:=reexport,
+ org.eclipse.emf.ecore;visibility:=reexport;bundle-version="2.4.0",
org.eclipse.emf.ecore.xmi;bundle-version="2.4.0",
org.eclipse.m2m.atl.emftvm.trace;visibility:=reexport,
org.eclipse.m2m.atl.common;bundle-version="3.1.0",
diff --git a/plugins/org.eclipse.m2m.atl.emftvm/doc/EMFTVM.html b/plugins/org.eclipse.m2m.atl.emftvm/doc/EMFTVM.html
index 8bd9f90a..efdbf38e 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm/doc/EMFTVM.html
+++ b/plugins/org.eclipse.m2m.atl.emftvm/doc/EMFTVM.html
@@ -1,7 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html
- PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN" "http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><!--This file was converted to xhtml by OpenOffice.org - see http://xml.openoffice.org/odf2xhtml for more info.--><head profile="http://dublincore.org/documents/dcmi-terms/"><meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8"/><title xml:lang="en-US">EMFTVM format specification</title><meta name="DCTERMS.title" content="EMFTVM format specification" xml:lang="en-US"/><meta name="DCTERMS.language" content="en-US" scheme="DCTERMS.RFC4646"/><meta name="DCTERMS.source" content="http://xml.openoffice.org/odf2xhtml"/><meta name="DCTERMS.creator" content="Dennis Wagelaar"/><meta name="DCTERMS.issued" content="2011-01-12T11:02:40" scheme="DCTERMS.W3CDTF"/><meta name="DCTERMS.contributor" content="Dennis Wagelaar"/><meta name="DCTERMS.modified" content="2012-02-25T21:40:09" scheme="DCTERMS.W3CDTF"/><meta name="DCTERMS.provenance" content="" xml:lang="en-US"/><meta name="DCTERMS.subject" content="," xml:lang="en-US"/><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" hreflang="en"/><link rel="schema.DCTERMS" href="http://purl.org/dc/terms/" hreflang="en"/><link rel="schema.DCTYPE" href="http://purl.org/dc/dcmitype/" hreflang="en"/><link rel="schema.DCAM" href="http://purl.org/dc/dcam/" hreflang="en"/><base href="."/><style type="text/css">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN" "http://www.w3.org/Math/DTD/mathml2/xhtml-math11-f.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><!--This file was converted to xhtml by OpenOffice.org - see http://xml.openoffice.org/odf2xhtml for more info.--><head profile="http://dublincore.org/documents/dcmi-terms/"><meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8"/><title xml:lang="en-US">EMFTVM format specification</title><meta name="DCTERMS.title" content="EMFTVM format specification" xml:lang="en-US"/><meta name="DCTERMS.language" content="en-US" scheme="DCTERMS.RFC4646"/><meta name="DCTERMS.source" content="http://xml.openoffice.org/odf2xhtml"/><meta name="DCTERMS.creator" content="Dennis Wagelaar"/><meta name="DCTERMS.issued" content="2011-01-12T11:02:40" scheme="DCTERMS.W3CDTF"/><meta name="DCTERMS.contributor" content="Dennis Wagelaar"/><meta name="DCTERMS.modified" content="2013-07-19T21:33:07" scheme="DCTERMS.W3CDTF"/><meta name="DCTERMS.provenance" content="" xml:lang="en-US"/><meta name="DCTERMS.subject" content="," xml:lang="en-US"/><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" hreflang="en"/><link rel="schema.DCTERMS" href="http://purl.org/dc/terms/" hreflang="en"/><link rel="schema.DCTYPE" href="http://purl.org/dc/dcmitype/" hreflang="en"/><link rel="schema.DCAM" href="http://purl.org/dc/dcam/" hreflang="en"/><style type="text/css">
@page { }
table { border-collapse:collapse; border-spacing:0; empty-cells:show }
td, th { vertical-align:top; font-size:10pt;}
@@ -17,31 +15,31 @@
.ta4 { writing-mode:lr-tb; }
.ta5 { writing-mode:lr-tb; }
.Default { font-family:Arial; }
- .ce1 { font-family:Arial; border-width:0.0133cm; border-style:solid; border-color:#000000; font-weight:bold; }
- .ce10 { font-family:Arial; font-size:10pt; font-style:normal; text-shadow:none; text-decoration:none ! important; font-weight:bold; }
- .ce11 { font-family:Arial; border-width:0.0133cm; border-style:solid; border-color:#000000; font-size:10pt; font-style:italic; text-shadow:none; text-decoration:none ! important; font-weight:bold; }
- .ce15 { font-family:Arial; border-width:0.0133cm; border-style:solid; border-color:#000000; }
- .ce16 { font-family:Arial; background-color:#c0c0c0; border-width:0.0133cm; border-style:solid; border-color:#000000; }
- .ce17 { font-family:Arial; background-color:#c0c0c0; border-width:0.0133cm; border-style:solid; border-color:#000000; }
- .ce18 { font-family:Arial; background-color:transparent; border-width:0.0133cm; border-style:solid; border-color:#000000; }
- .ce19 { font-family:Arial; background-color:transparent; border-width:0.0133cm; border-style:solid; border-color:#000000; }
- .ce2 { font-family:Arial; border-width:0.0133cm; border-style:solid; border-color:#000000; }
- .ce20 { font-family:Arial; }
- .ce21 { font-family:Arial; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; background-color:#c0c0c0; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; }
- .ce22 { font-family:Arial; vertical-align:top; text-align:left ! important; margin-left:0cm; writing-mode:page; font-size:10pt; font-style:normal; text-shadow:none; text-decoration:none ! important; font-weight:bold; }
- .ce23 { font-family:Arial; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; background-color:#c0c0c0; border-left-style:none; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; font-style:italic; }
- .ce24 { font-family:Arial; border-width:0.0133cm; border-style:solid; border-color:#000000; vertical-align:top; text-align:left ! important; margin-left:0cm; writing-mode:page; font-size:10pt; font-style:italic; text-shadow:none; text-decoration:none ! important; font-weight:bold; }
- .ce25 { font-family:Arial; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; background-color:#c0c0c0; border-left-style:none; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; }
- .ce26 { font-family:Arial; background-color:#c0c0c0; }
- .ce27 { font-family:Arial; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; background-color:#c0c0c0; border-left-style:none; border-right-width:0.0133cm; border-right-style:solid; border-right-color:#000000; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; }
- .ce28 { font-family:Arial; vertical-align:top; text-align:left ! important; margin-left:0cm; writing-mode:page; }
- .ce29 { font-family:Arial; border-width:0.0133cm; border-style:solid; border-color:#000000; vertical-align:top; text-align:left ! important; margin-left:0cm; writing-mode:page; }
- .ce30 { font-family:Arial; border-width:0.0133cm; border-style:solid; border-color:#000000; vertical-align:top; text-align:left ! important; margin-left:0cm; writing-mode:page; font-size:10pt; font-style:normal; text-shadow:none; text-decoration:none ! important; font-weight:normal; }
- .ce31 { font-family:Arial; font-weight:bold; }
- .ce35 { font-family:Arial; border-width:0.0133cm; border-style:solid; border-color:#000000; vertical-align:top; text-align:left ! important; margin-left:0cm; writing-mode:page; font-size:10pt; font-style:italic; text-shadow:none; text-decoration:none ! important; font-weight:normal; }
- .ce36 { font-family:Arial; border-width:0.0133cm; border-style:solid; border-color:#000000; vertical-align:top; text-align:left ! important; margin-left:0cm; writing-mode:page; color:#0000ff; font-size:10pt; font-style:normal; text-shadow:none; text-decoration:none ! important; font-weight:normal; }
- .ce37 { font-family:Arial; vertical-align:top; text-align:left ! important; margin-left:0cm; writing-mode:page; font-size:10pt; font-style:italic; text-shadow:none; text-decoration:none ! important; font-weight:normal; }
- .ce38 { font-family:Arial; border-width:0.0133cm; border-style:solid; border-color:#000000; font-size:10pt; font-style:normal; text-shadow:none; text-decoration:none ! important; font-weight:normal; }
+ .ce47 { font-family:Arial; border-width:0,0021cm; border-style:solid; border-color:#000000; font-weight:bold; }
+ .ce48 { font-family:Arial; border-width:0,0021cm; border-style:solid; border-color:#000000; }
+ .ce49 { font-family:Arial; border-width:0,0021cm; border-style:solid; border-color:#000000; }
+ .ce50 { font-family:Arial; background-color:#c0c0c0; border-width:0,0021cm; border-style:solid; border-color:#000000; }
+ .ce51 { font-family:Arial; background-color:#c0c0c0; border-width:0,0021cm; border-style:solid; border-color:#000000; }
+ .ce52 { font-family:Arial; background-color:transparent; border-width:0,0021cm; border-style:solid; border-color:#000000; }
+ .ce53 { font-family:Arial; background-color:transparent; border-width:0,0021cm; border-style:solid; border-color:#000000; }
+ .ce54 { font-family:Arial; }
+ .ce55 { font-family:Arial; border-bottom-width:0,0021cm; border-bottom-style:solid; border-bottom-color:#000000; background-color:#c0c0c0; border-left-width:0,0021cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:0,0021cm; border-top-style:solid; border-top-color:#000000; }
+ .ce56 { font-family:Arial; font-size:10pt; font-style:normal; text-shadow:none; text-decoration:none ! important; font-weight:bold; }
+ .ce57 { font-family:Arial; border-width:0,0021cm; border-style:solid; border-color:#000000; font-size:10pt; font-style:italic; text-shadow:none; text-decoration:none ! important; font-weight:bold; }
+ .ce58 { font-family:Arial; border-bottom-width:0,0021cm; border-bottom-style:solid; border-bottom-color:#000000; background-color:#c0c0c0; border-left-style:none; border-right-style:none; border-top-width:0,0021cm; border-top-style:solid; border-top-color:#000000; font-style:italic; }
+ .ce59 { font-family:Arial; border-bottom-width:0,0021cm; border-bottom-style:solid; border-bottom-color:#000000; background-color:#c0c0c0; border-left-style:none; border-right-style:none; border-top-width:0,0021cm; border-top-style:solid; border-top-color:#000000; }
+ .ce60 { font-family:Arial; background-color:#c0c0c0; }
+ .ce61 { font-family:Arial; border-bottom-width:0,0021cm; border-bottom-style:solid; border-bottom-color:#000000; background-color:#c0c0c0; border-left-style:none; border-right-width:0,0021cm; border-right-style:solid; border-right-color:#000000; border-top-width:0,0021cm; border-top-style:solid; border-top-color:#000000; }
+ .ce62 { font-family:Arial; font-weight:bold; }
+ .ce63 { font-family:Arial; vertical-align:top; text-align:left ! important; margin-left:0cm; writing-mode:page; font-size:10pt; font-style:normal; text-shadow:none; text-decoration:none ! important; font-weight:bold; }
+ .ce64 { font-family:Arial; vertical-align:top; text-align:left ! important; margin-left:0cm; writing-mode:page; }
+ .ce65 { font-family:Arial; border-width:0,0021cm; border-style:solid; border-color:#000000; vertical-align:top; text-align:left ! important; margin-left:0cm; writing-mode:page; font-size:10pt; font-style:italic; text-shadow:none; text-decoration:none ! important; font-weight:bold; }
+ .ce66 { font-family:Arial; border-width:0,0021cm; border-style:solid; border-color:#000000; vertical-align:top; text-align:left ! important; margin-left:0cm; writing-mode:page; }
+ .ce67 { font-family:Arial; border-width:0,0021cm; border-style:solid; border-color:#000000; vertical-align:top; text-align:left ! important; margin-left:0cm; writing-mode:page; font-size:10pt; font-style:normal; text-shadow:none; text-decoration:none ! important; font-weight:normal; }
+ .ce68 { font-family:Arial; border-width:0,0021cm; border-style:solid; border-color:#000000; vertical-align:top; text-align:left ! important; margin-left:0cm; writing-mode:page; font-size:10pt; font-style:italic; text-shadow:none; text-decoration:none ! important; font-weight:normal; }
+ .ce69 { font-family:Arial; border-width:0,0021cm; border-style:solid; border-color:#000000; vertical-align:top; text-align:left ! important; margin-left:0cm; writing-mode:page; color:#0000ff; font-size:10pt; font-style:normal; text-shadow:none; text-decoration:none ! important; font-weight:normal; }
+ .ce70 { font-family:Arial; vertical-align:top; text-align:left ! important; margin-left:0cm; writing-mode:page; font-size:10pt; font-style:italic; text-shadow:none; text-decoration:none ! important; font-weight:normal; }
+ .ce71 { font-family:Arial; border-width:0,0021cm; border-style:solid; border-color:#000000; font-size:10pt; font-style:normal; text-shadow:none; text-decoration:none ! important; font-weight:normal; }
.co10 { width:2.542cm; }
.co11 { width:3.595cm; }
.co12 { width:15.307cm; }
@@ -57,7 +55,9 @@
.ro3 { height:0.459cm; }
.ro4 { height:0.427cm; }
.ro5 { height:0.436cm; }
+ .ro7 { height:0.452cm; }
.T1 { color:#0000ff; font-family:Arial; font-size:10pt; font-style:normal; text-shadow:none; text-decoration:none ! important; font-weight:normal; }
+ .T2 { font-family:Arial; font-size:10pt; font-style:normal; text-shadow:none; text-decoration:none ! important; font-weight:normal; }
<!-- ODF styles with no properties representable as CSS -->
{ }
- </style></head><body dir="ltr" style="max-width:29.699cm;margin-top:2cm; margin-bottom:2cm; margin-left:2cm; margin-right:2cm; "><table border="0" cellspacing="0" cellpadding="0" class="ta5"><colgroup><col width="31"/><col width="152"/><col width="111"/><col width="157"/><col width="669"/><col width="99"/></colgroup><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="Default"> </td><td style="text-align:left;width:3.468cm; " class="ce10"><p>EMF TVM opcode list</p></td><td style="text-align:left;width:2.542cm; " class="Default"> </td><td style="text-align:left;width:3.595cm; " class="Default"> </td><td style="text-align:left;width:15.307cm; " class="Default"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="Default"> </td><td style="text-align:left;width:3.468cm; " class="Default"> </td><td style="text-align:left;width:2.542cm; " class="Default"> </td><td style="text-align:left;width:3.595cm; " class="Default"> </td><td style="text-align:left;width:15.307cm; " class="Default"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce1"><p>#</p></td><td style="text-align:left;width:3.468cm; " class="ce11"><p>Opcode</p></td><td style="text-align:left;width:2.542cm; " class="ce11"><p>Arguments</p></td><td style="text-align:left;width:3.595cm; " class="ce11"><p>Stack</p></td><td style="text-align:left;width:15.307cm; " class="ce11"><p>Comment</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce2"><p>0</p></td><td style="text-align:left;width:3.468cm; " class="ce2"><p>PUSH</p></td><td style="text-align:left;width:2.542cm; " class="ce2"><p>1: value ref</p></td><td style="text-align:left;width:3.595cm; " class="ce2"><p>-</p></td><td style="text-align:left;width:15.307cm; " class="ce2"><p>Push constant literal onto stack</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce15"><p>1</p></td><td style="text-align:left;width:3.468cm; " class="ce2"><p>PUSHT</p></td><td style="text-align:left;width:2.542cm; " class="ce2"><p>-</p></td><td style="text-align:left;width:3.595cm; " class="ce2"><p>-</p></td><td style="text-align:left;width:15.307cm; " class="ce2"><p>Push TRUE literal onto stack</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce15"><p>2</p></td><td style="text-align:left;width:3.468cm; " class="ce2"><p>PUSHF</p></td><td style="text-align:left;width:2.542cm; " class="ce2"><p>-</p></td><td style="text-align:left;width:3.595cm; " class="ce2"><p>-</p></td><td style="text-align:left;width:15.307cm; " class="ce2"><p>Push FALSE literal onto stack</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce15"><p>3</p></td><td style="text-align:left;width:3.468cm; " class="ce2"><p>POP</p></td><td style="text-align:left;width:2.542cm; " class="ce2"><p>-</p></td><td style="text-align:left;width:3.595cm; " class="ce2"><p>0: value</p></td><td style="text-align:left;width:15.307cm; " class="ce2"><p>Pops top value from stack</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce15"><p>4</p></td><td style="text-align:left;width:3.468cm; " class="ce2"><p>LOAD</p></td><td style="text-align:left;width:2.542cm; " class="ce2"><p>1: cb offset</p></td><td style="text-align:left;width:3.595cm; " class="ce2"><p>-</p></td><td style="text-align:left;width:15.307cm; " class="ce2"><p>Loads local variable value onto stack, given the parent code block offset (0 = this code block)</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce2"> </td><td style="text-align:left;width:3.468cm; " class="ce2"> </td><td style="text-align:left;width:2.542cm; " class="ce2"><p>2: varIndex</p></td><td style="text-align:left;width:3.595cm; " class="ce2"> </td><td style="text-align:left;width:15.307cm; " class="ce2"><p>(varIndex = index of local variable in the local variable table)</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce15"><p>5</p></td><td style="text-align:left;width:3.468cm; " class="ce2"><p>STORE</p></td><td style="text-align:left;width:2.542cm; " class="ce2"><p>1: cb offset</p></td><td style="text-align:left;width:3.595cm; " class="ce2"><p>0: value</p></td><td style="text-align:left;width:15.307cm; " class="ce2"><p>Stores top stack value into local variable (and pops), given the parent code block offset</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce2"> </td><td style="text-align:left;width:3.468cm; " class="ce2"> </td><td style="text-align:left;width:2.542cm; " class="ce2"><p>2: varIndex</p></td><td style="text-align:left;width:3.595cm; " class="ce2"> </td><td style="text-align:left;width:15.307cm; " class="ce2"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce15"><p>6</p></td><td style="text-align:left;width:3.468cm; " class="ce2"><p>SET</p></td><td style="text-align:left;width:2.542cm; " class="ce2"><p>1: propname</p></td><td style="text-align:left;width:3.595cm; " class="ce2"><p>0: object</p></td><td style="text-align:left;width:15.307cm; " class="ce2"><p>Set object property value</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce2"> </td><td style="text-align:left;width:3.468cm; " class="ce2"> </td><td style="text-align:left;width:2.542cm; " class="ce2"> </td><td style="text-align:left;width:3.595cm; " class="ce2"><p>1: value</p></td><td style="text-align:left;width:15.307cm; " class="ce2"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce15"><p>7</p></td><td style="text-align:left;width:3.468cm; " class="ce2"><p>GET</p></td><td style="text-align:left;width:2.542cm; " class="ce2"><p>1: propname</p></td><td style="text-align:left;width:3.595cm; " class="ce2"><p>0: object</p></td><td style="text-align:left;width:15.307cm; " class="ce2"><p>Get object property value onto stack</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce15"><p>8</p></td><td style="text-align:left;width:3.468cm; " class="ce2"><p>GET_TRANS</p></td><td style="text-align:left;width:2.542cm; " class="ce2"><p>1: propname</p></td><td style="text-align:left;width:3.595cm; " class="ce2"><p>0: object</p></td><td style="text-align:left;width:15.307cm; " class="ce2"><p>Get object property transitive closure value onto stack (always a collection)</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce15"><p>9</p></td><td style="text-align:left;width:3.468cm; " class="ce2"><p>SET_STATIC</p></td><td style="text-align:left;width:2.542cm; " class="ce2"><p>1: fieldname</p></td><td style="text-align:left;width:3.595cm; " class="ce2"><p>0: type</p></td><td style="text-align:left;width:15.307cm; " class="ce2"><p>Set static field value</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce2"> </td><td style="text-align:left;width:3.468cm; " class="ce2"> </td><td style="text-align:left;width:2.542cm; " class="ce2"> </td><td style="text-align:left;width:3.595cm; " class="ce2"><p>1: value</p></td><td style="text-align:left;width:15.307cm; " class="ce2"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce15"><p>10</p></td><td style="text-align:left;width:3.468cm; " class="ce2"><p>GET_STATIC</p></td><td style="text-align:left;width:2.542cm; " class="ce2"><p>1: fieldname</p></td><td style="text-align:left;width:3.595cm; " class="ce2"><p>0: type</p></td><td style="text-align:left;width:15.307cm; " class="ce2"><p>Get static field value onto stack</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce15"><p>11</p></td><td style="text-align:left;width:3.468cm; " class="ce2"><p>FINDTYPE</p></td><td style="text-align:left;width:2.542cm; " class="ce2"><p>1: modelname</p></td><td style="text-align:left;width:3.595cm; " class="ce2"><p>-</p></td><td style="text-align:left;width:15.307cm; " class="ce2"><p>Find type or metaclass in metamodel</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce2"> </td><td style="text-align:left;width:3.468cm; " class="ce2"> </td><td style="text-align:left;width:2.542cm; " class="ce2"><p>2: typename</p></td><td style="text-align:left;width:3.595cm; " class="ce2"> </td><td style="text-align:left;width:15.307cm; " class="ce2"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce16"><p>12</p></td><td style="text-align:left;width:3.468cm; " class="ce17"><p>FINDTYPE_S</p></td><td style="text-align:left;width:2.542cm; " class="ce17"><p>-</p></td><td style="text-align:left;width:3.595cm; " class="ce17"><p>0: modelname</p></td><td style="text-align:left;width:15.307cm; " class="ce17"><p>Find type or metaclass in metamodel given on the stack</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce2"> </td><td style="text-align:left;width:3.468cm; " class="ce2"> </td><td style="text-align:left;width:2.542cm; " class="ce2"> </td><td style="text-align:left;width:3.595cm; " class="ce2"><p>1: typename</p></td><td style="text-align:left;width:15.307cm; " class="ce2"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce15"><p>13</p></td><td style="text-align:left;width:3.468cm; " class="ce2"><p>NEW</p></td><td style="text-align:left;width:2.542cm; " class="ce2"><p>1: modelname</p></td><td style="text-align:left;width:3.595cm; " class="ce2"><p>0: type</p></td><td style="text-align:left;width:15.307cm; " class="ce2"><p>Creates a new model element, given an output model name</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce16"><p>14</p></td><td style="text-align:left;width:3.468cm; " class="ce17"><p>NEW_S</p></td><td style="text-align:left;width:2.542cm; " class="ce17"><p>-</p></td><td style="text-align:left;width:3.595cm; " class="ce17"><p>0: modelname</p></td><td style="text-align:left;width:15.307cm; " class="ce17"><p>Creates a new model element, given an output model name on the stack</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce17"> </td><td style="text-align:left;width:3.468cm; " class="ce17"> </td><td style="text-align:left;width:2.542cm; " class="ce17"> </td><td style="text-align:left;width:3.595cm; " class="ce17"><p>1: type</p></td><td style="text-align:left;width:15.307cm; " class="ce17"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce15"><p>15</p></td><td style="text-align:left;width:3.468cm; " class="ce2"><p>DELETE</p></td><td style="text-align:left;width:2.542cm; " class="ce2"><p>-</p></td><td style="text-align:left;width:3.595cm; " class="ce2"><p>0: object</p></td><td style="text-align:left;width:15.307cm; " class="ce2"><p>Deletes the object on the stack from its model</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce15"><p>16</p></td><td style="text-align:left;width:3.468cm; " class="ce2"><p>DUP</p></td><td style="text-align:left;width:2.542cm; " class="ce2"><p>-</p></td><td style="text-align:left;width:3.595cm; " class="ce2"><p>-</p></td><td style="text-align:left;width:15.307cm; " class="ce2"><p>Duplicates stack top value</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce15"><p>17</p></td><td style="text-align:left;width:3.468cm; " class="ce2"><p>DUP_X1</p></td><td style="text-align:left;width:2.542cm; " class="ce2"><p>-</p></td><td style="text-align:left;width:3.595cm; " class="ce2"><p>-</p></td><td style="text-align:left;width:15.307cm; " class="ce2"><p>Pops top two values from stack, pushes top value, then pushes original two values back</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce15"><p>18</p></td><td style="text-align:left;width:3.468cm; " class="ce2"><p>SWAP</p></td><td style="text-align:left;width:2.542cm; " class="ce2"><p>-</p></td><td style="text-align:left;width:3.595cm; " class="ce2"><p>-</p></td><td style="text-align:left;width:15.307cm; " class="ce2"><p>Swaps top two values on the stack</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce15"><p>19</p></td><td style="text-align:left;width:3.468cm; " class="ce2"><p>SWAP_X1</p></td><td style="text-align:left;width:2.542cm; " class="ce2"><p>-</p></td><td style="text-align:left;width:3.595cm; " class="ce2"><p>-</p></td><td style="text-align:left;width:15.307cm; " class="ce2"><p>Swaps third value over top two values on the stack (abc... → cab...)</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce18"><p>20</p></td><td style="text-align:left;width:3.468cm; " class="ce19"><p>IF</p></td><td style="text-align:left;width:2.542cm; " class="ce19"><p>1: target offset</p></td><td style="text-align:left;width:3.595cm; " class="ce19"><p>0: boolean value</p></td><td style="text-align:left;width:15.307cm; " class="ce19"><p>If stack top value is true, branch to target offset</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce18"><p>21</p></td><td style="text-align:left;width:3.468cm; " class="ce19"><p>IFN</p></td><td style="text-align:left;width:2.542cm; " class="ce19"><p>1: target offset</p></td><td style="text-align:left;width:3.595cm; " class="ce19"><p>0: boolean value</p></td><td style="text-align:left;width:15.307cm; " class="ce19"><p>If stack top value is false, branch to target offset</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce18"><p>22</p></td><td style="text-align:left;width:3.468cm; " class="ce19"><p>GOTO</p></td><td style="text-align:left;width:2.542cm; " class="ce19"><p>1: target offset</p></td><td style="text-align:left;width:3.595cm; " class="ce19"><p>-</p></td><td style="text-align:left;width:15.307cm; " class="ce19"><p>Branch to target offset</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce18"><p>23</p></td><td style="text-align:left;width:3.468cm; " class="ce19"><p>ITERATE</p></td><td style="text-align:left;width:2.542cm; " class="ce19"><p>1: target offset</p></td><td style="text-align:left;width:3.595cm; " class="ce19"><p>0: collection value</p></td><td style="text-align:left;width:15.307cm; " class="ce19"><p>Runs the following instructions up to ENDITERATE for each element in the collection;</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce18"> </td><td style="text-align:left;width:3.468cm; " class="ce19"> </td><td style="text-align:left;width:2.542cm; " class="ce19"> </td><td style="text-align:left;width:3.595cm; " class="ce19"> </td><td style="text-align:left;width:15.307cm; " class="ce19"><p>offset marks the matching ENDITERATE</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce18"><p>24</p></td><td style="text-align:left;width:3.468cm; " class="ce19"><p>ENDITERATE</p></td><td style="text-align:left;width:2.542cm; " class="ce19"><p>1: target offset</p></td><td style="text-align:left;width:3.595cm; " class="ce19"><p>-</p></td><td style="text-align:left;width:15.307cm; " class="ce19"><p>Marks the end of an ITERATE run of instructions; offset marks the matching ITERATE</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce15"><p>25</p></td><td style="text-align:left;width:3.468cm; " class="ce2"><p>INVOKE</p></td><td style="text-align:left;width:2.542cm; " class="ce2"><p>1: opname</p></td><td style="text-align:left;width:3.595cm; " class="ce2"><p>0..n: arguments</p></td><td style="text-align:left;width:15.307cm; " class="ce2"><p>Regular dynamic method invocation, based on runtime type information</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce2"> </td><td style="text-align:left;width:3.468cm; " class="ce2"> </td><td style="text-align:left;width:2.542cm; " class="ce2"><p>2: nr_of_args</p></td><td style="text-align:left;width:3.595cm; " class="ce2"> </td><td style="text-align:left;width:15.307cm; " class="ce2"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce15"><p>26</p></td><td style="text-align:left;width:3.468cm; " class="ce2"><p>INVOKE_SUPER</p></td><td style="text-align:left;width:2.542cm; " class="ce2"><p>1: opname</p></td><td style="text-align:left;width:3.595cm; " class="ce2"><p>0..n: arguments</p></td><td style="text-align:left;width:15.307cm; " class="ce2"><p>Dynamic method invocation of superclass, relative to current execution context</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce2"> </td><td style="text-align:left;width:3.468cm; " class="ce2"> </td><td style="text-align:left;width:2.542cm; " class="ce2"><p>2: nr_of_args</p></td><td style="text-align:left;width:3.595cm; " class="ce2"> </td><td style="text-align:left;width:15.307cm; " class="ce2"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro5"><td style="text-align:right; width:0.707cm; " class="ce15"><p>27</p></td><td style="text-align:left;width:3.468cm; " class="ce2"><p>INVOKE_STATIC</p></td><td style="text-align:left;width:2.542cm; " class="ce2"><p>1: opname</p></td><td style="text-align:left;width:3.595cm; " class="ce2"><p>0..n: arguments</p></td><td style="text-align:left;width:15.307cm; " class="ce2"><p>Static method invocation; first argument is a metaclass, or Java class for native static operations</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro5"><td style="text-align:left;width:0.707cm; " class="ce2"> </td><td style="text-align:left;width:3.468cm; " class="ce2"> </td><td style="text-align:left;width:2.542cm; " class="ce2"><p>2: nr_of_args</p></td><td style="text-align:left;width:3.595cm; " class="ce2"> </td><td style="text-align:left;width:15.307cm; " class="ce2"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce16"><p>28</p></td><td style="text-align:left;width:3.468cm; " class="ce17"><p>ALLINST</p></td><td style="text-align:left;width:2.542cm; " class="ce17"><p>-</p></td><td style="text-align:left;width:3.595cm; " class="ce17"><p>0: type</p></td><td style="text-align:left;width:15.307cm; " class="ce17"><p>Finds all instances of the given type in all input models</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce16"><p>29</p></td><td style="text-align:left;width:3.468cm; " class="ce17"><p>ALLINST_IN</p></td><td style="text-align:left;width:2.542cm; " class="ce17"><p>-</p></td><td style="text-align:left;width:3.595cm; " class="ce17"><p>0: type</p></td><td style="text-align:left;width:15.307cm; " class="ce17"><p>Finds all instances of the given type in given input model</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro5"><td style="text-align:left;width:0.707cm; " class="ce17"> </td><td style="text-align:left;width:3.468cm; " class="ce17"> </td><td style="text-align:left;width:2.542cm; " class="ce17"> </td><td style="text-align:left;width:3.595cm; " class="ce17"><p>1: modelname</p></td><td style="text-align:left;width:15.307cm; " class="ce17"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce15"><p>30</p></td><td style="text-align:left;width:3.468cm; " class="ce2"><p>ISNULL</p></td><td style="text-align:left;width:2.542cm; " class="ce2"><p>-</p></td><td style="text-align:left;width:3.595cm; " class="ce2"><p>0: value</p></td><td style="text-align:left;width:15.307cm; " class="ce2"><p>Pushes TRUE if value is null, FALSE otherwise</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro5"><td style="text-align:right; width:0.707cm; " class="ce15"><p>31</p></td><td style="text-align:left;width:3.468cm; " class="ce2"><p>GETENVTYPE</p></td><td style="text-align:left;width:2.542cm; " class="ce2"><p>-</p></td><td style="text-align:left;width:3.595cm; " class="ce2"><p>-</p></td><td style="text-align:left;width:15.307cm; " class="ce2"><p>Pushes the ExecEnv type on the stack</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce15"><p>32</p></td><td style="text-align:left;width:3.468cm; " class="ce2"><p>NOT</p></td><td style="text-align:left;width:2.542cm; " class="ce2"><p>-</p></td><td style="text-align:left;width:3.595cm; " class="ce2"><p>0: boolean value</p></td><td style="text-align:left;width:15.307cm; " class="ce2"><p>Pushes TRUE if value is FALSE, FALSE otherwise</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro5"><td style="text-align:right; width:0.707cm; " class="ce15"><p>33</p></td><td style="text-align:left;width:3.468cm; " class="ce2"><p>AND</p></td><td style="text-align:left;width:2.542cm; " class="ce2"><p>1: code block #</p></td><td style="text-align:left;width:3.595cm; " class="ce2"><p>0: first value</p></td><td style="text-align:left;width:15.307cm; " class="ce2"><p>Pushes the boolean AND result of the first value and the result of codeblock on the stack</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro5"><td style="text-align:right; width:0.707cm; " class="ce15"><p>34</p></td><td style="text-align:left;width:3.468cm; " class="ce2"><p>OR</p></td><td style="text-align:left;width:2.542cm; " class="ce2"><p>1: code block #</p></td><td style="text-align:left;width:3.595cm; " class="ce2"><p>0: first value</p></td><td style="text-align:left;width:15.307cm; " class="ce2"><p>Pushes the boolean OR result of the first value and the result of codeblock on the stack</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce15"><p>35</p></td><td style="text-align:left;width:3.468cm; " class="ce2"><p>XOR</p></td><td style="text-align:left;width:2.542cm; " class="ce2"><p>-</p></td><td style="text-align:left;width:3.595cm; " class="ce2"><p>0: first value</p></td><td style="text-align:left;width:15.307cm; " class="ce2"><p>Pushes the boolean XOR result on the stack</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce15"> </td><td style="text-align:left;width:3.468cm; " class="ce2"> </td><td style="text-align:left;width:2.542cm; " class="ce2"> </td><td style="text-align:left;width:3.595cm; " class="ce2"><p>1: second value</p></td><td style="text-align:left;width:15.307cm; " class="ce2"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro5"><td style="text-align:right; width:0.707cm; " class="ce15"><p>36</p></td><td style="text-align:left;width:3.468cm; " class="ce2"><p>IMPLIES</p></td><td style="text-align:left;width:2.542cm; " class="ce2"><p>1: code block #</p></td><td style="text-align:left;width:3.595cm; " class="ce2"><p>0: first value</p></td><td style="text-align:left;width:15.307cm; " class="ce2"><p>Pushes the boolean IMPLIES result of the first value and the result of codeblock on the stack</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro5"><td style="text-align:right; width:0.707cm; " class="ce15"><p>37</p></td><td style="text-align:left;width:3.468cm; " class="ce2"><p>IFTE</p></td><td style="text-align:left;width:2.542cm; " class="ce2"><p>1: then cb #</p></td><td style="text-align:left;width:3.595cm; " class="ce2"><p>0: boolean value</p></td><td style="text-align:left;width:15.307cm; " class="ce2"><p>Executes “then” if TRUE, “else” otherwise</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro5"><td style="text-align:left;width:0.707cm; " class="ce2"> </td><td style="text-align:left;width:3.468cm; " class="ce2"> </td><td style="text-align:left;width:2.542cm; " class="ce2"><p>2: else cb #</p></td><td style="text-align:left;width:3.595cm; " class="ce2"> </td><td style="text-align:left;width:15.307cm; " class="ce2"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce18"><p>38</p></td><td style="text-align:left;width:3.468cm; " class="ce19"><p>RETURN</p></td><td style="text-align:left;width:2.542cm; " class="ce19"><p>-</p></td><td style="text-align:left;width:3.595cm; " class="ce19"><p>-</p></td><td style="text-align:left;width:15.307cm; " class="ce19"><p>Returns from a code block</p></td><td style="text-align:left;width:2.267cm; " class="ce31"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce15"><p>39</p></td><td style="text-align:left;width:3.468cm; " class="ce2"><p>GETCB</p></td><td style="text-align:left;width:2.542cm; " class="ce2"><p>1: code block #</p></td><td style="text-align:left;width:3.595cm; " class="ce2"><p>-</p></td><td style="text-align:left;width:15.307cm; " class="ce2"><p>Pushes nested code block onto the stack (lambda expression)</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro5"><td style="text-align:right; width:0.707cm; " class="ce15"><p>40</p></td><td style="text-align:left;width:3.468cm; " class="ce2"><p>INVOKE_ALL_CBS</p></td><td style="text-align:left;width:2.542cm; " class="ce2"><p>1: nr_of_args</p></td><td style="text-align:left;width:3.595cm; " class="ce2"><p>0..n: arguments</p></td><td style="text-align:left;width:15.307cm; " class="ce2"><p>Invokes all nested code blocks and pushes results on the stack</p></td><td style="text-align:left;width:2.267cm; " class="ce31"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce15"><p>41</p></td><td style="text-align:left;width:3.468cm; " class="ce2"><p>INVOKE_CB</p></td><td style="text-align:left;width:2.542cm; " class="ce2"><p>1: code block #</p></td><td style="text-align:left;width:3.595cm; " class="ce2"><p>0..n: arguments</p></td><td style="text-align:left;width:15.307cm; " class="ce2"><p>Invokes nested code block (lambda expression)</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro5"><td style="text-align:left;width:0.707cm; " class="ce2"> </td><td style="text-align:left;width:3.468cm; " class="ce2"> </td><td style="text-align:left;width:2.542cm; " class="ce2"><p>2: nr_of_args</p></td><td style="text-align:left;width:3.595cm; " class="ce2"> </td><td style="text-align:left;width:15.307cm; " class="ce2"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro5"><td style="text-align:right; width:0.707cm; " class="ce18"><p>42</p></td><td style="text-align:left;width:3.468cm; " class="ce19"><p>INVOKE_CB_S</p></td><td style="text-align:left;width:2.542cm; " class="ce19"><p>1: nr_of_args</p></td><td style="text-align:left;width:3.595cm; " class="ce19"><p>0..n: arguments</p></td><td style="text-align:left;width:15.307cm; " class="ce19"><p>Invokes code block on stack (lambda expression)</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce19"> </td><td style="text-align:left;width:3.468cm; " class="ce19"> </td><td style="text-align:left;width:2.542cm; " class="ce19"> </td><td style="text-align:left;width:3.595cm; " class="Default"><p>n+1: code block</p></td><td style="text-align:left;width:15.307cm; " class="ce19"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro5"><td style="text-align:right; width:0.707cm; " class="ce16"><p>43</p></td><td style="text-align:left;width:3.468cm; " class="ce17"><p>MATCH</p></td><td style="text-align:left;width:2.542cm; " class="ce17"><p>1: rulename</p></td><td style="text-align:left;width:3.595cm; " class="ce17"><p>0..n: input elements</p></td><td style="text-align:left;width:15.307cm; " class="ce17"><p>Matches the given rule, and invokes the pre-apply code for each match</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro5"><td style="text-align:left;width:0.707cm; " class="ce16"> </td><td style="text-align:left;width:3.468cm; " class="ce17"> </td><td style="text-align:left;width:2.542cm; " class="ce17"><p>2: nr_of_args</p></td><td style="text-align:left;width:3.595cm; " class="ce17"> </td><td style="text-align:left;width:15.307cm; " class="ce17"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro5"><td style="text-align:right; width:0.707cm; " class="ce16"><p>44</p></td><td style="text-align:left;width:3.468cm; " class="ce17"><p>MATCH_S</p></td><td style="text-align:left;width:2.542cm; " class="ce17"><p>1: nr_of_args</p></td><td style="text-align:left;width:3.595cm; " class="ce17"><p>0..n: input elements</p></td><td style="text-align:left;width:15.307cm; " class="ce17"><p>Matches the rule on the stack, and invokes the pre-apply code for each match</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce16"> </td><td style="text-align:left;width:3.468cm; " class="ce17"> </td><td style="text-align:left;width:2.542cm; " class="ce17"> </td><td style="text-align:left;width:3.595cm; " class="ce26"><p>n+1: rule</p></td><td style="text-align:left;width:15.307cm; " class="ce17"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro5"><td style="text-align:right; width:0.707cm; " class="ce15"><p>45</p></td><td style="text-align:left;width:3.468cm; " class="ce2"><p>ADD</p></td><td style="text-align:left;width:2.542cm; " class="ce2"><p>1: propname</p></td><td style="text-align:left;width:3.595cm; " class="ce2"><p>0: object</p></td><td style="text-align:left;width:15.307cm; " class="ce2"><p>Adds object property value</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce2"> </td><td style="text-align:left;width:3.468cm; " class="ce2"> </td><td style="text-align:left;width:2.542cm; " class="ce2"> </td><td style="text-align:left;width:3.595cm; " class="ce2"><p>1: value</p></td><td style="text-align:left;width:15.307cm; " class="ce2"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro5"><td style="text-align:right; width:0.707cm; " class="ce15"><p>46</p></td><td style="text-align:left;width:3.468cm; " class="ce2"><p>REMOVE</p></td><td style="text-align:left;width:2.542cm; " class="ce2"><p>1: propname</p></td><td style="text-align:left;width:3.595cm; " class="ce2"><p>0: object</p></td><td style="text-align:left;width:15.307cm; " class="ce2"><p>Removes object property value</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce2"> </td><td style="text-align:left;width:3.468cm; " class="ce2"> </td><td style="text-align:left;width:2.542cm; " class="ce2"> </td><td style="text-align:left;width:3.595cm; " class="ce2"><p>1: value</p></td><td style="text-align:left;width:15.307cm; " class="ce2"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro5"><td style="text-align:right; width:0.707cm; " class="ce15"><p>47</p></td><td style="text-align:left;width:3.468cm; " class="ce2"><p>INSERT</p></td><td style="text-align:left;width:2.542cm; " class="ce2"><p>1: propname</p></td><td style="text-align:left;width:3.595cm; " class="ce2"><p>0: object</p></td><td style="text-align:left;width:15.307cm; " class="ce2"><p>Adds object property value at the given index (starting at 0)</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce2"> </td><td style="text-align:left;width:3.468cm; " class="ce2"> </td><td style="text-align:left;width:2.542cm; " class="ce2"> </td><td style="text-align:left;width:3.595cm; " class="ce2"><p>1: value</p></td><td style="text-align:left;width:15.307cm; " class="ce2"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce2"> </td><td style="text-align:left;width:3.468cm; " class="ce2"> </td><td style="text-align:left;width:2.542cm; " class="ce2"> </td><td style="text-align:left;width:3.595cm; " class="ce2"><p>2: index</p></td><td style="text-align:left;width:15.307cm; " class="ce2"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro5"><td style="text-align:right; width:0.707cm; " class="ce2"><p>48</p></td><td style="text-align:left;width:3.468cm; " class="ce2"><p>GET_SUPER</p></td><td style="text-align:left;width:2.542cm; " class="ce2"><p>1: propname</p></td><td style="text-align:left;width:3.595cm; " class="ce2"><p>0: object</p></td><td style="text-align:left;width:15.307cm; " class="ce2"><p>Get object property value of superclass onto stack</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro5"><td style="text-align:right; width:0.707cm; " class="ce2"><p>49</p></td><td style="text-align:left;width:3.468cm; " class="ce2"><p>GETENV</p></td><td style="text-align:left;width:2.542cm; " class="ce2"><p>-</p></td><td style="text-align:left;width:3.595cm; " class="ce2"><p>-</p></td><td style="text-align:left;width:15.307cm; " class="ce2"><p>Pushes the ExecEnv instance on the stack</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce20"> </td><td style="text-align:left;width:3.468cm; " class="Default"> </td><td style="text-align:left;width:2.542cm; " class="Default"> </td><td style="text-align:left;width:3.595cm; " class="Default"> </td><td style="text-align:left;width:15.307cm; " class="Default"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce21"> </td><td style="text-align:left;width:3.468cm; " class="ce23"><p>Instructions marked in grey are not (yet) used by any compiler for EMFTVM</p></td><td style="text-align:left;width:2.542cm; " class="ce25"> </td><td style="text-align:left;width:3.595cm; " class="ce25"> </td><td style="text-align:left;width:15.307cm; " class="ce27"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce20"> </td><td style="text-align:left;width:3.468cm; " class="Default"> </td><td style="text-align:left;width:2.542cm; " class="Default"> </td><td style="text-align:left;width:3.595cm; " class="Default"> </td><td style="text-align:left;width:15.307cm; " class="Default"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce20"> </td><td style="text-align:left;width:3.468cm; " class="Default"> </td><td style="text-align:left;width:2.542cm; " class="Default"> </td><td style="text-align:left;width:3.595cm; " class="Default"> </td><td style="text-align:left;width:15.307cm; " class="Default"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce20"> </td><td style="text-align:left;width:3.468cm; " class="Default"> </td><td style="text-align:left;width:2.542cm; " class="Default"> </td><td style="text-align:left;width:3.595cm; " class="Default"> </td><td style="text-align:left;width:15.307cm; " class="Default"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce20"> </td><td style="text-align:left;width:3.468cm; " class="Default"> </td><td style="text-align:left;width:2.542cm; " class="Default"> </td><td style="text-align:left;width:3.595cm; " class="Default"> </td><td style="text-align:left;width:15.307cm; " class="Default"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="ta4"><colgroup><col width="174"/><col width="288"/><col width="99"/><col width="561"/></colgroup><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce22"><p>EMF TVM file format</p></td><td style="text-align:left;width:6.592cm; " class="ce22"> </td><td style="text-align:left;width:2.267cm; " class="ce28"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce28"> </td><td style="text-align:left;width:6.592cm; " class="ce28"> </td><td style="text-align:left;width:2.267cm; " class="ce28"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce24"><p>Name</p></td><td style="text-align:left;width:6.592cm; " class="ce24"><p>Offset</p></td><td style="text-align:left;width:2.267cm; " class="ce24"><p>Length</p></td><td style="text-align:left;width:12.829cm; " class="ce11"><p>Comment</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Magic</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>0</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>“ETVM” in ASCII</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Cpcount</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>4</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Constant pool count = number of entries in the constant pool</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Constant pool</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>8</p></td><td style="text-align:left;width:2.267cm; " class="ce35"><p>cpsize</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Constant pool table (see detailed description)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Module name</p></td><td style="text-align:left;width:6.592cm; " class="ce29"><p>8+cpsize</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Reference to module name string in constant pool</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Source name</p></td><td style="text-align:left;width:6.592cm; " class="ce29"><p>12+cpsize</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Reference to source file name in constant pool</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Input model count</p></td><td style="text-align:left;width:6.592cm; " class="ce29"><p>16+cpsize</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Number of input models</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Input model table</p></td><td style="text-align:left;width:6.592cm; " class="ce29"><p>20+cpsize</p></td><td style="text-align:left;width:2.267cm; " class="ce35"><p>isz</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Table of model declarations (see detailed description)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Inout model count</p></td><td style="text-align:left;width:6.592cm; " class="ce29"><p>20+cpsize+isz</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Number of input/output models</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Inout model table</p></td><td style="text-align:left;width:6.592cm; " class="ce29"><p>24+cpsize+isz</p></td><td style="text-align:left;width:2.267cm; " class="ce35"><p>iosz</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Table of model declarations (see detailed description)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Output model count</p></td><td style="text-align:left;width:6.592cm; " class="ce29"><p>24+cpsize+isz+iosz</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Number of output models</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Output model table</p></td><td style="text-align:left;width:6.592cm; " class="ce29"><p>28+cpsize+isz+iosz</p></td><td style="text-align:left;width:2.267cm; " class="ce35"><p>osz</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Table of model declarations (see detailed description)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Import count</p></td><td style="text-align:left;width:6.592cm; " class="ce29"><p>28+cpsize+isz+iosz+osz</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Number of imported modules</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Imports table</p></td><td style="text-align:left;width:6.592cm; " class="ce29"><p>32+cpsize+isz+iosz+osz</p></td><td style="text-align:left;width:2.267cm; " class="ce35"><p>itsize</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>List of name references of imported modules</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Feature count</p></td><td style="text-align:left;width:6.592cm; " class="ce29"><p>32+cpsize+isz+iosz+osz+itsize</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Number of features (fields, operations)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Feature table</p></td><td style="text-align:left;width:6.592cm; " class="ce29"><p>36+cpsize+isz+iosz+osz+itsize</p></td><td style="text-align:left;width:2.267cm; " class="ce35"><p>fsize</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Feature table (see detailed description)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Rule count</p></td><td style="text-align:left;width:6.592cm; " class="ce29"><p>36+cpsize+isz+iosz+osz+itsize+fsize</p></td><td style="text-align:right; width:2.267cm; " class="ce30"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Number of transformation rules</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Rule table</p></td><td style="text-align:left;width:6.592cm; " class="ce29"><p>40+cpsize+isz+iosz+osz+itsize+fsize</p></td><td style="text-align:left;width:2.267cm; " class="ce35"><p>rtsize</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Rule table (see detailed description)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce28"> </td><td style="text-align:left;width:6.592cm; " class="ce28"> </td><td style="text-align:left;width:2.267cm; " class="ce28"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce22"><p>Constant pool</p></td><td style="text-align:left;width:6.592cm; " class="ce28"> </td><td style="text-align:left;width:2.267cm; " class="ce28"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce28"> </td><td style="text-align:left;width:6.592cm; " class="ce28"> </td><td style="text-align:left;width:2.267cm; " class="ce28"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce24"><p>Name</p></td><td style="text-align:left;width:6.592cm; " class="ce24"><p>Offset</p></td><td style="text-align:left;width:2.267cm; " class="ce24"><p>Length</p></td><td style="text-align:left;width:12.829cm; " class="ce11"><p>Comment</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Tag</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>0</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Constant type tag</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Value</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:2.267cm; " class="ce35"><p>vsize</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Constant value (size depends on tag)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce28"> </td><td style="text-align:left;width:6.592cm; " class="ce28"> </td><td style="text-align:left;width:2.267cm; " class="ce28"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce24"><p>Tag</p></td><td style="text-align:left;width:6.592cm; " class="ce24"><p>Size</p></td><td colspan="2" style="text-align:left;width:2.267cm; " class="ce24"><p>Description</p></td></tr><tr class="ro5"><td style="text-align:right; width:3.976cm; " class="ce29"><p>0</p></td><td style="text-align:left;width:6.592cm; " class="ce29"><p>stringsize</p></td><td colspan="2" style="text-align:left;width:2.267cm; " class="ce36"><p><span class="T1"><a href="http://download.oracle.com/javase/6/docs/api/java/io/DataInput.html#modified-utf-8">String in modified UTF-8: http://download.oracle.com/javase/6/docs/api/java/io/DataInput.html#modified-utf-8</a></span></p></td></tr><tr class="ro4"><td style="text-align:right; width:3.976cm; " class="ce29"><p>1</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>4</p></td><td colspan="2" style="text-align:left;width:2.267cm; " class="ce29"><p>Integer (see DataInputStream.readInt())</p></td></tr><tr class="ro4"><td style="text-align:right; width:3.976cm; " class="ce29"><p>2</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>8</p></td><td colspan="2" style="text-align:left;width:2.267cm; " class="ce29"><p>Double (see DataInputStream.readDouble())</p></td></tr><tr class="ro4"><td style="text-align:right; width:3.976cm; " class="ce29"><p>3</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>1</p></td><td colspan="2" style="text-align:left;width:2.267cm; " class="ce29"><p>Byte</p></td></tr><tr class="ro4"><td style="text-align:right; width:3.976cm; " class="ce29"><p>4</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>1</p></td><td colspan="2" style="text-align:left;width:2.267cm; " class="ce29"><p>Char</p></td></tr><tr class="ro4"><td style="text-align:right; width:3.976cm; " class="ce29"><p>5</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>4</p></td><td colspan="2" style="text-align:left;width:2.267cm; " class="ce29"><p>Float</p></td></tr><tr class="ro4"><td style="text-align:right; width:3.976cm; " class="ce29"><p>6</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>2</p></td><td colspan="2" style="text-align:left;width:2.267cm; " class="ce29"><p>Short</p></td></tr><tr class="ro4"><td style="text-align:right; width:3.976cm; " class="ce29"><p>7</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>8</p></td><td colspan="2" style="text-align:left;width:2.267cm; " class="ce29"><p>Long</p></td></tr><tr class="ro4"><td style="text-align:right; width:3.976cm; " class="ce29"><p>8</p></td><td style="text-align:left;width:6.592cm; " class="ce29"><p>stringsize</p></td><td colspan="2" style="text-align:left;width:2.267cm; " class="ce29"><p>Enumeration literal encoded as a modified UTF-8 string</p></td></tr><tr class="ro4"><td style="text-align:right; width:3.976cm; " class="ce29"><p>9</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>0</p></td><td colspan="2" style="text-align:left;width:2.267cm; " class="ce29"><p>Null</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce28"> </td><td style="text-align:left;width:6.592cm; " class="ce28"> </td><td style="text-align:left;width:2.267cm; " class="ce28"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce22"><p>Model declaration table</p></td><td style="text-align:left;width:6.592cm; " class="ce28"> </td><td style="text-align:left;width:2.267cm; " class="ce28"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce28"> </td><td style="text-align:left;width:6.592cm; " class="ce28"> </td><td style="text-align:left;width:2.267cm; " class="ce28"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce24"><p>Name</p></td><td style="text-align:left;width:6.592cm; " class="ce24"><p>Offset</p></td><td style="text-align:left;width:2.267cm; " class="ce24"><p>Length</p></td><td style="text-align:left;width:12.829cm; " class="ce11"><p>Comment</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Model name</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>0</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Model name reference</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Metamodel name</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>4</p></td><td style="text-align:right; width:2.267cm; " class="ce30"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Metamodel name reference</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce28"> </td><td style="text-align:left;width:6.592cm; " class="ce28"> </td><td style="text-align:left;width:2.267cm; " class="ce28"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce22"><p>Feature table</p></td><td style="text-align:left;width:6.592cm; " class="ce28"> </td><td style="text-align:left;width:2.267cm; " class="ce28"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce22"> </td><td style="text-align:left;width:6.592cm; " class="ce28"> </td><td style="text-align:left;width:2.267cm; " class="ce28"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce24"><p>Name</p></td><td style="text-align:left;width:6.592cm; " class="ce24"><p>Offset</p></td><td style="text-align:left;width:2.267cm; " class="ce24"><p>Length</p></td><td style="text-align:left;width:12.829cm; " class="ce11"><p>Comment</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Tag</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>0</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Feature type tag</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Feature description</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:2.267cm; " class="ce35"><p>fsize</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Feature (format depends on tag)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce28"> </td><td style="text-align:left;width:6.592cm; " class="ce28"> </td><td style="text-align:left;width:2.267cm; " class="ce37"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce24"><p>Tag</p></td><td style="text-align:left;width:6.592cm; " class="ce24"><p>Description</p></td><td colspan="2" style="text-align:left;width:2.267cm; " class="ce24"><p>Format</p></td></tr><tr class="ro4"><td style="text-align:right; width:3.976cm; " class="ce29"><p>0</p></td><td style="text-align:left;width:6.592cm; " class="ce29"><p>Field</p></td><td colspan="2" style="text-align:left;width:2.267cm; " class="ce30"><p>See field entry</p></td></tr><tr class="ro4"><td style="text-align:right; width:3.976cm; " class="ce29"><p>1</p></td><td style="text-align:left;width:6.592cm; " class="ce29"><p>StaticField</p></td><td colspan="2" style="text-align:left;width:2.267cm; " class="ce30"><p>See field entry</p></td></tr><tr class="ro4"><td style="text-align:right; width:3.976cm; " class="ce29"><p>2</p></td><td style="text-align:left;width:6.592cm; " class="ce29"><p>Operation</p></td><td colspan="2" style="text-align:left;width:2.267cm; " class="ce30"><p>See operation entry</p></td></tr><tr class="ro4"><td style="text-align:right; width:3.976cm; " class="ce29"><p>3</p></td><td style="text-align:left;width:6.592cm; " class="ce29"><p>StaticOperation</p></td><td colspan="2" style="text-align:left;width:2.267cm; " class="ce30"><p>See operation entry</p></td></tr><tr class="ro4"><td style="text-align:right; width:3.976cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:6.592cm; " class="ce29"><p>QueryOperation</p></td><td colspan="2" style="text-align:left;width:2.267cm; " class="ce30"><p>See operation entry</p></td></tr><tr class="ro4"><td style="text-align:right; width:3.976cm; " class="ce29"><p>5</p></td><td style="text-align:left;width:6.592cm; " class="ce29"><p>StaticQueryOperation</p></td><td colspan="2" style="text-align:left;width:2.267cm; " class="ce30"><p>See operation entry</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce28"> </td><td style="text-align:left;width:6.592cm; " class="ce28"> </td><td style="text-align:left;width:2.267cm; " class="ce28"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce22"><p>Field entry</p></td><td style="text-align:left;width:6.592cm; " class="ce28"> </td><td style="text-align:left;width:2.267cm; " class="ce28"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce28"> </td><td style="text-align:left;width:6.592cm; " class="ce28"> </td><td style="text-align:left;width:2.267cm; " class="ce28"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce24"><p>Name</p></td><td style="text-align:left;width:6.592cm; " class="ce24"><p>Offset</p></td><td style="text-align:left;width:2.267cm; " class="ce24"><p>Length</p></td><td style="text-align:left;width:12.829cm; " class="ce11"><p>Comment</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Field name</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>0</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Field name reference</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Field type</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>4</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Field type name reference</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Field type model</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>8</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Field type model name reference</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Field context</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>12</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Field context type reference</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Field context model</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>16</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Field context type model name reference</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Initialiser code block</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>20</p></td><td style="text-align:left;width:2.267cm; " class="ce35"><p>csize</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Initialisation code block (see code block)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="Default"> </td><td style="text-align:left;width:6.592cm; " class="Default"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce22"><p>Operation entry</p></td><td style="text-align:left;width:6.592cm; " class="ce28"> </td><td style="text-align:left;width:2.267cm; " class="ce28"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce28"> </td><td style="text-align:left;width:6.592cm; " class="ce28"> </td><td style="text-align:left;width:2.267cm; " class="ce28"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce24"><p>Name</p></td><td style="text-align:left;width:6.592cm; " class="ce24"><p>Offset</p></td><td style="text-align:left;width:2.267cm; " class="ce24"><p>Length</p></td><td style="text-align:left;width:12.829cm; " class="ce11"><p>Comment</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Operation name</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>0</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Operation name reference</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Return type</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>4</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Operation return type reference</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Return type model</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>8</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Operation return type model name reference</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Operation context</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>12</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Operation context type reference</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Operation context model</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>16</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Operation context type model name reference</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Parameter count</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>20</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Number of parameters</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Parameter table</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>24</p></td><td style="text-align:left;width:2.267cm; " class="ce35"><p>ptsize</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Parameter table (see static field table)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Code block</p></td><td style="text-align:left;width:6.592cm; " class="ce29"><p>24+ptsize</p></td><td style="text-align:left;width:2.267cm; " class="ce35"><p>csize</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Code block (see detailed description)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="Default"> </td><td style="text-align:left;width:6.592cm; " class="Default"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce22"><p>Code block</p></td><td style="text-align:left;width:6.592cm; " class="ce28"> </td><td style="text-align:left;width:2.267cm; " class="ce28"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce28"> </td><td style="text-align:left;width:6.592cm; " class="ce28"> </td><td style="text-align:left;width:2.267cm; " class="ce28"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce24"><p>Name</p></td><td style="text-align:left;width:6.592cm; " class="ce24"><p>Offset</p></td><td style="text-align:left;width:2.267cm; " class="ce24"><p>Length</p></td><td style="text-align:left;width:12.829cm; " class="ce11"><p>Comment</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce30"><p>Max. locals</p></td><td style="text-align:right; width:6.592cm; " class="ce30"><p>0</p></td><td style="text-align:right; width:2.267cm; " class="ce30"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce38"><p>Maximum number of local variables (-1 if unknown)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce30"><p>Max. stack size</p></td><td style="text-align:right; width:6.592cm; " class="ce30"><p>4</p></td><td style="text-align:right; width:2.267cm; " class="ce30"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce38"><p>Maximum number of stack elements (-1 if unknown)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Local variable count</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>8</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Number of local variables</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Local variable table</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>12</p></td><td style="text-align:left;width:2.267cm; " class="ce35"><p>lvsize</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Local variable table (see detailed description)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Line number count</p></td><td style="text-align:left;width:6.592cm; " class="ce29"><p>12+lvsize</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Number of line number table entries</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Line number table</p></td><td style="text-align:left;width:6.592cm; " class="ce29"><p>16+lvsize</p></td><td style="text-align:left;width:2.267cm; " class="ce35"><p>lnsize</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Line number table (see detailed description)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Nested code block count</p></td><td style="text-align:left;width:6.592cm; " class="ce29"><p>16+lvsize+lnsize</p></td><td style="text-align:right; width:2.267cm; " class="ce30"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Number of nested code blocks</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Nested code blocks</p></td><td style="text-align:left;width:6.592cm; " class="ce29"><p>20+lvsize+lnsize</p></td><td style="text-align:left;width:2.267cm; " class="ce35"><p>nsize</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Nested code blocks</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Instruction count</p></td><td style="text-align:left;width:6.592cm; " class="ce29"><p>20+lvsize+lnsize+nsize</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Number of instructions</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Instruction list</p></td><td style="text-align:left;width:6.592cm; " class="ce29"><p>24+lvsize_lnsize+nsize</p></td><td style="text-align:left;width:2.267cm; " class="ce35"><p>isize</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>List of instructions (see detailed description)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce28"> </td><td style="text-align:left;width:6.592cm; " class="ce28"> </td><td style="text-align:left;width:2.267cm; " class="ce37"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce22"><p>Instruction list</p></td><td style="text-align:left;width:6.592cm; " class="ce28"> </td><td style="text-align:left;width:2.267cm; " class="ce28"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce28"> </td><td style="text-align:left;width:6.592cm; " class="ce28"> </td><td style="text-align:left;width:2.267cm; " class="ce28"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce24"><p>Name</p></td><td style="text-align:left;width:6.592cm; " class="ce24"><p>Offset</p></td><td style="text-align:left;width:2.267cm; " class="ce24"><p>Length</p></td><td style="text-align:left;width:12.829cm; " class="ce11"><p>Comment</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce30"><p>Line number index</p></td><td style="text-align:right; width:6.592cm; " class="ce30"><p>0</p></td><td style="text-align:right; width:2.267cm; " class="ce30"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce38"><p>Line number table index, or -1 if no line number available</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Opcode</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>4</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Instruction (see opcode reference)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Parameter 1</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>8</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>First parameter (depends on instruction)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Parameter 2</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>12</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Second parameter (depends on instruction)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>…</p></td><td style="text-align:left;width:6.592cm; " class="ce29"> </td><td style="text-align:left;width:2.267cm; " class="ce29"> </td><td style="text-align:left;width:12.829cm; " class="ce2"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce28"> </td><td style="text-align:left;width:6.592cm; " class="ce28"> </td><td style="text-align:left;width:2.267cm; " class="ce28"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce22"><p>Line number table</p></td><td style="text-align:left;width:6.592cm; " class="ce28"> </td><td style="text-align:left;width:2.267cm; " class="ce28"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce28"> </td><td style="text-align:left;width:6.592cm; " class="ce28"> </td><td style="text-align:left;width:2.267cm; " class="ce28"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce24"><p>Name</p></td><td style="text-align:left;width:6.592cm; " class="ce24"><p>Offset</p></td><td style="text-align:left;width:2.267cm; " class="ce24"><p>Length</p></td><td style="text-align:left;width:12.829cm; " class="ce11"><p>Comment</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce30"><p>Start line</p></td><td style="text-align:right; width:6.592cm; " class="ce30"><p>0</p></td><td style="text-align:right; width:2.267cm; " class="ce30"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce38"><p>Start line number</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce30"><p>Start column</p></td><td style="text-align:right; width:6.592cm; " class="ce30"><p>4</p></td><td style="text-align:right; width:2.267cm; " class="ce30"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce38"><p>Start column number</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce30"><p>End line</p></td><td style="text-align:right; width:6.592cm; " class="ce30"><p>8</p></td><td style="text-align:right; width:2.267cm; " class="ce30"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce38"><p>End line number</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce30"><p>End column</p></td><td style="text-align:right; width:6.592cm; " class="ce30"><p>12</p></td><td style="text-align:right; width:2.267cm; " class="ce30"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce38"><p>End column number</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce30"><p>Start character</p></td><td style="text-align:right; width:6.592cm; " class="ce30"><p>16</p></td><td style="text-align:right; width:2.267cm; " class="ce30"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce38"><p>Start character in the source file stream</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce30"><p>End character</p></td><td style="text-align:right; width:6.592cm; " class="ce30"><p>20</p></td><td style="text-align:right; width:2.267cm; " class="ce30"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce38"><p>End character in the source file stream</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce28"> </td><td style="text-align:left;width:6.592cm; " class="ce28"> </td><td style="text-align:left;width:2.267cm; " class="ce28"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce22"><p>Local variable table</p></td><td style="text-align:left;width:6.592cm; " class="ce28"> </td><td style="text-align:left;width:2.267cm; " class="ce28"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce28"> </td><td style="text-align:left;width:6.592cm; " class="ce28"> </td><td style="text-align:left;width:2.267cm; " class="ce28"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce24"><p>Name</p></td><td style="text-align:left;width:6.592cm; " class="ce24"><p>Offset</p></td><td style="text-align:left;width:2.267cm; " class="ce24"><p>Length</p></td><td style="text-align:left;width:12.829cm; " class="ce11"><p>Comment</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Slot</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>0</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Variable slot number (starting at 0)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Name</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>4</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Variable name reference</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Type</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>8</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Type name reference</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Start instruction</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>12</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Start instruction offset</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>End instruction</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>16</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>End instruction offset</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce28"> </td><td style="text-align:left;width:6.592cm; " class="ce28"> </td><td style="text-align:left;width:2.267cm; " class="ce28"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce10"><p>Rule table</p></td><td style="text-align:left;width:6.592cm; " class="Default"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="Default"> </td><td style="text-align:left;width:6.592cm; " class="Default"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce24"><p>Name</p></td><td style="text-align:left;width:6.592cm; " class="ce24"><p>Offset</p></td><td style="text-align:left;width:2.267cm; " class="ce24"><p>Length</p></td><td style="text-align:left;width:12.829cm; " class="ce11"><p>Comment</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Rule name</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>0</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Rule name reference</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Rule mode</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>4</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Rule mode code (see detailed description)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Abstract</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>8</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Whether the rule is abstract (1 or 0)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Trace mode</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>12</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Trace mode bitset (see detailed description)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>DistinctElements</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>16</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Whether the rule matches distinct input elements (1 or 0)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Input element count</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>20</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Number of input model elements</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Input element table</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>24</p></td><td style="text-align:left;width:2.267cm; " class="ce35"><p>iesz</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Input model element table (see detailed description)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Output element count</p></td><td style="text-align:left;width:6.592cm; " class="ce29"><p>24+iesz</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Number of output model elements</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Output element table</p></td><td style="text-align:left;width:6.592cm; " class="ce29"><p>28+iesz</p></td><td style="text-align:left;width:2.267cm; " class="ce35"><p>oesz</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Output model element table (see output element table)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Super-rule count</p></td><td style="text-align:left;width:6.592cm; " class="ce29"><p>28+iesz+oesz</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Number of super-rules</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Super-rule table</p></td><td style="text-align:left;width:6.592cm; " class="ce29"><p>32+iesz+oesz</p></td><td style="text-align:left;width:2.267cm; " class="ce35"><p>srsz</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Super-rule table (list of super-rule name references)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Rule field count</p></td><td style="text-align:left;width:6.592cm; " class="ce29"><p>32+iesz+oesz+srsz</p></td><td style="text-align:right; width:2.267cm; " class="ce30"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Number of rule fields</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Rule field table</p></td><td style="text-align:left;width:6.592cm; " class="ce29"><p>36+iesz+oesz+srsz</p></td><td style="text-align:left;width:2.267cm; " class="ce35"><p>fsz</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Rule field table (see feature table)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Matcher count</p></td><td style="text-align:left;width:6.592cm; " class="ce29"><p>36+iesz+oesz+srsz+fsz</p></td><td style="text-align:right; width:2.267cm; " class="ce30"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Number of matcher code blocks to follow (0 or 1)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Matcher code block</p></td><td style="text-align:left;width:6.592cm; " class="ce29"><p>40+iesz+oesz+srsz+fsz</p></td><td style="text-align:left;width:2.267cm; " class="ce35"><p>msz</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Matcher code block (see code block)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Applier count</p></td><td style="text-align:left;width:6.592cm; " class="ce29"><p>40+iesz+oesz+srsz+fsz+msz</p></td><td style="text-align:right; width:2.267cm; " class="ce30"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Number of applier code blocks to follow (0 or 1)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Applier code block</p></td><td style="text-align:left;width:6.592cm; " class="ce29"><p>44+iesz+oesz+srsz+fsz+msz</p></td><td style="text-align:left;width:2.267cm; " class="ce35"><p>asz</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Applier code block (see code block)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Post-apply count</p></td><td style="text-align:left;width:6.592cm; " class="ce29"><p>44+iesz+oesz+srsz+fsz+msz+asz</p></td><td style="text-align:right; width:2.267cm; " class="ce30"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Number of post-apply code blocks to follow (0 or 1)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Post-apply code block</p></td><td style="text-align:left;width:6.592cm; " class="ce29"><p>48+iesz+oesz+srsz+fsz+msz+asz</p></td><td style="text-align:left;width:2.267cm; " class="ce35"><p>psz</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Post-apply code block (see code block)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce28"> </td><td style="text-align:left;width:6.592cm; " class="ce28"> </td><td style="text-align:left;width:2.267cm; " class="ce28"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce24"><p>Rule mode</p></td><td colspan="3" style="text-align:left;width:6.592cm; " class="ce24"><p>Comment</p></td></tr><tr class="ro4"><td style="text-align:right; width:3.976cm; " class="ce29"><p>0</p></td><td colspan="3" style="text-align:left;width:6.592cm; " class="ce29"><p>Manual application</p></td></tr><tr class="ro4"><td style="text-align:right; width:3.976cm; " class="ce29"><p>1</p></td><td colspan="3" style="text-align:left;width:6.592cm; " class="ce29"><p>Automatic single application</p></td></tr><tr class="ro4"><td style="text-align:right; width:3.976cm; " class="ce29"><p>2</p></td><td colspan="3" style="text-align:left;width:6.592cm; " class="ce29"><p>Automatic recursive application (priority given by rule order of appearance)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce28"> </td><td style="text-align:left;width:6.592cm; " class="ce28"> </td><td style="text-align:left;width:2.267cm; " class="ce28"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce24"><p>Trace mode</p></td><td colspan="3" style="text-align:left;width:6.592cm; " class="ce24"><p>Comment (any combination of the bit values below can occur)</p></td></tr><tr class="ro4"><td style="text-align:right; width:3.976cm; " class="ce29"><p>0</p></td><td colspan="3" style="text-align:left;width:6.592cm; " class="ce29"><p>Standard trace</p></td></tr><tr class="ro4"><td style="text-align:right; width:3.976cm; " class="ce29"><p>1</p></td><td colspan="3" style="text-align:left;width:6.592cm; " class="ce29"><p>Default trace</p></td></tr><tr class="ro4"><td style="text-align:right; width:3.976cm; " class="ce29"><p>2</p></td><td colspan="3" style="text-align:left;width:6.592cm; " class="ce29"><p>Unique trace</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce28"> </td><td style="text-align:left;width:6.592cm; " class="ce28"> </td><td style="text-align:left;width:2.267cm; " class="ce28"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce22"><p>Input element table</p></td><td style="text-align:left;width:6.592cm; " class="ce28"> </td><td style="text-align:left;width:2.267cm; " class="ce28"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce28"> </td><td style="text-align:left;width:6.592cm; " class="ce28"> </td><td style="text-align:left;width:2.267cm; " class="ce28"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce24"><p>Name</p></td><td style="text-align:left;width:6.592cm; " class="ce24"><p>Offset</p></td><td style="text-align:left;width:2.267cm; " class="ce24"><p>Length</p></td><td style="text-align:left;width:12.829cm; " class="ce11"><p>Comment</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Element name</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>0</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Input element name reference</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Element type</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>4</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Input element type reference</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Element type model</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>8</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Input element type model name reference</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Element model count</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>12</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Number of input element models</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Element models</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>16</p></td><td style="text-align:left;width:2.267cm; " class="ce35"><p>iemsz</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Input element model name references</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce28"> </td><td style="text-align:left;width:6.592cm; " class="ce28"> </td><td style="text-align:left;width:2.267cm; " class="ce28"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce22"><p>Output element table</p></td><td style="text-align:left;width:6.592cm; " class="ce28"> </td><td style="text-align:left;width:2.267cm; " class="ce28"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce28"> </td><td style="text-align:left;width:6.592cm; " class="ce28"> </td><td style="text-align:left;width:2.267cm; " class="ce28"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce24"><p>Name</p></td><td style="text-align:left;width:6.592cm; " class="ce24"><p>Offset</p></td><td style="text-align:left;width:2.267cm; " class="ce24"><p>Length</p></td><td style="text-align:left;width:12.829cm; " class="ce11"><p>Comment</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Element name</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>0</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Element name reference</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Element type</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>4</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Element type reference</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Element type model</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>8</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Element type model name reference</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Element model</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>12</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Element model name reference</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Maps to element count</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>16</p></td><td style="text-align:right; width:2.267cm; " class="ce29"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Source element mapping count</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce29"><p>Maps to elements</p></td><td style="text-align:right; width:6.592cm; " class="ce29"><p>20</p></td><td style="text-align:left;width:2.267cm; " class="ce35"><p>mtsz</p></td><td style="text-align:left;width:12.829cm; " class="ce2"><p>Source element mapping name references</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce28"> </td><td style="text-align:left;width:6.592cm; " class="ce28"> </td><td style="text-align:left;width:2.267cm; " class="ce28"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce28"> </td><td style="text-align:left;width:6.592cm; " class="ce28"> </td><td style="text-align:left;width:2.267cm; " class="ce28"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="ta3"><colgroup><col width="93"/><col width="344"/></colgroup><tr class="ro1"><td style="text-align:left;width:2.122cm; " class="ce22"><p>EMF TVM native types</p></td><td style="text-align:left;width:7.869cm; " class="Default"> </td></tr><tr class="ro1"><td style="text-align:left;width:2.122cm; " class="Default"> </td><td style="text-align:left;width:7.869cm; " class="Default"> </td></tr><tr class="ro1"><td style="text-align:left;width:2.122cm; " class="ce24"><p>Name</p></td><td style="text-align:left;width:7.869cm; " class="ce24"><p>Java class</p></td></tr><tr class="ro1"><td style="text-align:left;width:2.122cm; " class="ce2"><p>Object</p></td><td style="text-align:left;width:7.869cm; " class="ce2"><p>java.lang.Object</p></td></tr><tr class="ro1"><td style="text-align:left;width:2.122cm; " class="ce2"><p>Collection</p></td><td style="text-align:left;width:7.869cm; " class="ce2"><p>org.eclipse.m2m.atl.emftvm.util.LazyCollection</p></td></tr><tr class="ro1"><td style="text-align:left;width:2.122cm; " class="ce2"><p>Bag</p></td><td style="text-align:left;width:7.869cm; " class="ce2"><p>org.eclipse.m2m.atl.emftvm.util.LazyBag</p></td></tr><tr class="ro1"><td style="text-align:left;width:2.122cm; " class="ce2"><p>Sequence</p></td><td style="text-align:left;width:7.869cm; " class="ce2"><p>org.eclipse.m2m.atl.emftvm.util.LazyList</p></td></tr><tr class="ro1"><td style="text-align:left;width:2.122cm; " class="ce2"><p>Set</p></td><td style="text-align:left;width:7.869cm; " class="ce2"><p>org.eclipse.m2m.atl.emftvm.util.LazySet</p></td></tr><tr class="ro1"><td style="text-align:left;width:2.122cm; " class="ce2"><p>OrderedSet</p></td><td style="text-align:left;width:7.869cm; " class="ce2"><p>org.eclipse.m2m.atl.emftvm.util.LazyOrderedSet</p></td></tr><tr class="ro3"><td style="text-align:left;width:2.122cm; " class="ce2"><p>Map</p></td><td style="text-align:left;width:7.869cm; " class="ce2"><p>java.util.Map</p></td></tr><tr class="ro1"><td style="text-align:left;width:2.122cm; " class="ce2"><p>Tuple</p></td><td style="text-align:left;width:7.869cm; " class="ce2"><p>org.eclipse.m2m.atl.emftvm.util.Tuple</p></td></tr><tr class="ro1"><td style="text-align:left;width:2.122cm; " class="ce2"><p>Boolean</p></td><td style="text-align:left;width:7.869cm; " class="ce2"><p>java.lang.Boolean</p></td></tr><tr class="ro1"><td style="text-align:left;width:2.122cm; " class="ce2"><p>Integer</p></td><td style="text-align:left;width:7.869cm; " class="ce2"><p>java.lang.Integer</p></td></tr><tr class="ro1"><td style="text-align:left;width:2.122cm; " class="ce2"><p>Real</p></td><td style="text-align:left;width:7.869cm; " class="ce2"><p>java.lang.Double</p></td></tr><tr class="ro1"><td style="text-align:left;width:2.122cm; " class="ce2"><p>String</p></td><td style="text-align:left;width:7.869cm; " class="ce2"><p>java.lang.String</p></td></tr></table></body></html> \ No newline at end of file
+ </style></head><body dir="ltr" style="max-width:29.699cm;margin:2cm; margin-top:2cm; margin-bottom:2cm; margin-left:2cm; margin-right:2cm; writing-mode:lr-tb; "><table border="0" cellspacing="0" cellpadding="0" class="ta5"><colgroup><col width="31"/><col width="152"/><col width="111"/><col width="157"/><col width="669"/><col width="99"/></colgroup><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="Default"> </td><td style="text-align:left;width:3.468cm; " class="ce56"><p>EMF TVM opcode list</p></td><td style="text-align:left;width:2.542cm; " class="Default"> </td><td style="text-align:left;width:3.595cm; " class="Default"> </td><td style="text-align:left;width:15.307cm; " class="Default"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="Default"> </td><td style="text-align:left;width:3.468cm; " class="Default"> </td><td style="text-align:left;width:2.542cm; " class="Default"> </td><td style="text-align:left;width:3.595cm; " class="Default"> </td><td style="text-align:left;width:15.307cm; " class="Default"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce47"><p>#</p></td><td style="text-align:left;width:3.468cm; " class="ce57"><p>Opcode</p></td><td style="text-align:left;width:2.542cm; " class="ce57"><p>Arguments</p></td><td style="text-align:left;width:3.595cm; " class="ce57"><p>Stack</p></td><td style="text-align:left;width:15.307cm; " class="ce57"><p>Comment</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce48"><p>0</p></td><td style="text-align:left;width:3.468cm; " class="ce48"><p>PUSH</p></td><td style="text-align:left;width:2.542cm; " class="ce48"><p>1: value ref</p></td><td style="text-align:left;width:3.595cm; " class="ce48"><p>-</p></td><td style="text-align:left;width:15.307cm; " class="ce48"><p>Push constant literal onto stack</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce49"><p>1</p></td><td style="text-align:left;width:3.468cm; " class="ce48"><p>PUSHT</p></td><td style="text-align:left;width:2.542cm; " class="ce48"><p>-</p></td><td style="text-align:left;width:3.595cm; " class="ce48"><p>-</p></td><td style="text-align:left;width:15.307cm; " class="ce48"><p>Push TRUE literal onto stack</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce49"><p>2</p></td><td style="text-align:left;width:3.468cm; " class="ce48"><p>PUSHF</p></td><td style="text-align:left;width:2.542cm; " class="ce48"><p>-</p></td><td style="text-align:left;width:3.595cm; " class="ce48"><p>-</p></td><td style="text-align:left;width:15.307cm; " class="ce48"><p>Push FALSE literal onto stack</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce49"><p>3</p></td><td style="text-align:left;width:3.468cm; " class="ce48"><p>POP</p></td><td style="text-align:left;width:2.542cm; " class="ce48"><p>-</p></td><td style="text-align:left;width:3.595cm; " class="ce48"><p>0: value</p></td><td style="text-align:left;width:15.307cm; " class="ce48"><p>Pops top value from stack</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce49"><p>4</p></td><td style="text-align:left;width:3.468cm; " class="ce48"><p>LOAD</p></td><td style="text-align:left;width:2.542cm; " class="ce48"><p>1: cb offset</p></td><td style="text-align:left;width:3.595cm; " class="ce48"><p>-</p></td><td style="text-align:left;width:15.307cm; " class="ce48"><p>Loads local variable value onto stack, given the parent code block offset (0 = this code block)</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce48"> </td><td style="text-align:left;width:3.468cm; " class="ce48"> </td><td style="text-align:left;width:2.542cm; " class="ce48"><p>2: varIndex</p></td><td style="text-align:left;width:3.595cm; " class="ce48"> </td><td style="text-align:left;width:15.307cm; " class="ce48"><p>(varIndex = index of local variable in the local variable table)</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce49"><p>5</p></td><td style="text-align:left;width:3.468cm; " class="ce48"><p>STORE</p></td><td style="text-align:left;width:2.542cm; " class="ce48"><p>1: cb offset</p></td><td style="text-align:left;width:3.595cm; " class="ce48"><p>0: value</p></td><td style="text-align:left;width:15.307cm; " class="ce48"><p>Stores top stack value into local variable (and pops), given the parent code block offset</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce48"> </td><td style="text-align:left;width:3.468cm; " class="ce48"> </td><td style="text-align:left;width:2.542cm; " class="ce48"><p>2: varIndex</p></td><td style="text-align:left;width:3.595cm; " class="ce48"> </td><td style="text-align:left;width:15.307cm; " class="ce48"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce49"><p>6</p></td><td style="text-align:left;width:3.468cm; " class="ce48"><p>SET</p></td><td style="text-align:left;width:2.542cm; " class="ce48"><p>1: propname</p></td><td style="text-align:left;width:3.595cm; " class="ce48"><p>0: object</p></td><td style="text-align:left;width:15.307cm; " class="ce48"><p>Set object property value</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce48"> </td><td style="text-align:left;width:3.468cm; " class="ce48"> </td><td style="text-align:left;width:2.542cm; " class="ce48"> </td><td style="text-align:left;width:3.595cm; " class="ce48"><p>1: value</p></td><td style="text-align:left;width:15.307cm; " class="ce48"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce49"><p>7</p></td><td style="text-align:left;width:3.468cm; " class="ce48"><p>GET</p></td><td style="text-align:left;width:2.542cm; " class="ce48"><p>1: propname</p></td><td style="text-align:left;width:3.595cm; " class="ce48"><p>0: object</p></td><td style="text-align:left;width:15.307cm; " class="ce48"><p>Get object property value onto stack</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce49"><p>8</p></td><td style="text-align:left;width:3.468cm; " class="ce48"><p>GET_TRANS</p></td><td style="text-align:left;width:2.542cm; " class="ce48"><p>1: propname</p></td><td style="text-align:left;width:3.595cm; " class="ce48"><p>0: object</p></td><td style="text-align:left;width:15.307cm; " class="ce48"><p>Get object property transitive closure value onto stack (always a collection)</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce49"><p>9</p></td><td style="text-align:left;width:3.468cm; " class="ce48"><p>SET_STATIC</p></td><td style="text-align:left;width:2.542cm; " class="ce48"><p>1: fieldname</p></td><td style="text-align:left;width:3.595cm; " class="ce48"><p>0: type</p></td><td style="text-align:left;width:15.307cm; " class="ce48"><p>Set static field value</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce48"> </td><td style="text-align:left;width:3.468cm; " class="ce48"> </td><td style="text-align:left;width:2.542cm; " class="ce48"> </td><td style="text-align:left;width:3.595cm; " class="ce48"><p>1: value</p></td><td style="text-align:left;width:15.307cm; " class="ce48"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce49"><p>10</p></td><td style="text-align:left;width:3.468cm; " class="ce48"><p>GET_STATIC</p></td><td style="text-align:left;width:2.542cm; " class="ce48"><p>1: fieldname</p></td><td style="text-align:left;width:3.595cm; " class="ce48"><p>0: type</p></td><td style="text-align:left;width:15.307cm; " class="ce48"><p>Get static field value onto stack</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce49"><p>11</p></td><td style="text-align:left;width:3.468cm; " class="ce48"><p>FINDTYPE</p></td><td style="text-align:left;width:2.542cm; " class="ce48"><p>1: modelname</p></td><td style="text-align:left;width:3.595cm; " class="ce48"><p>-</p></td><td style="text-align:left;width:15.307cm; " class="ce48"><p>Find type or metaclass in metamodel</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce48"> </td><td style="text-align:left;width:3.468cm; " class="ce48"> </td><td style="text-align:left;width:2.542cm; " class="ce48"><p>2: typename</p></td><td style="text-align:left;width:3.595cm; " class="ce48"> </td><td style="text-align:left;width:15.307cm; " class="ce48"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce50"><p>12</p></td><td style="text-align:left;width:3.468cm; " class="ce51"><p>FINDTYPE_S</p></td><td style="text-align:left;width:2.542cm; " class="ce51"><p>-</p></td><td style="text-align:left;width:3.595cm; " class="ce51"><p>0: modelname</p></td><td style="text-align:left;width:15.307cm; " class="ce51"><p>Find type or metaclass in metamodel given on the stack</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce48"> </td><td style="text-align:left;width:3.468cm; " class="ce48"> </td><td style="text-align:left;width:2.542cm; " class="ce48"> </td><td style="text-align:left;width:3.595cm; " class="ce48"><p>1: typename</p></td><td style="text-align:left;width:15.307cm; " class="ce48"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce49"><p>13</p></td><td style="text-align:left;width:3.468cm; " class="ce48"><p>NEW</p></td><td style="text-align:left;width:2.542cm; " class="ce48"><p>1: modelname</p></td><td style="text-align:left;width:3.595cm; " class="ce48"><p>0: type</p></td><td style="text-align:left;width:15.307cm; " class="ce48"><p>Creates a new model element, given an output model name</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce50"><p>14</p></td><td style="text-align:left;width:3.468cm; " class="ce51"><p>NEW_S</p></td><td style="text-align:left;width:2.542cm; " class="ce51"><p>-</p></td><td style="text-align:left;width:3.595cm; " class="ce51"><p>0: modelname</p></td><td style="text-align:left;width:15.307cm; " class="ce51"><p>Creates a new model element, given an output model name on the stack</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce51"> </td><td style="text-align:left;width:3.468cm; " class="ce51"> </td><td style="text-align:left;width:2.542cm; " class="ce51"> </td><td style="text-align:left;width:3.595cm; " class="ce51"><p>1: type</p></td><td style="text-align:left;width:15.307cm; " class="ce51"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce49"><p>15</p></td><td style="text-align:left;width:3.468cm; " class="ce48"><p>DELETE</p></td><td style="text-align:left;width:2.542cm; " class="ce48"><p>-</p></td><td style="text-align:left;width:3.595cm; " class="ce48"><p>0: object</p></td><td style="text-align:left;width:15.307cm; " class="ce48"><p>Deletes the object on the stack from its model</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce49"><p>16</p></td><td style="text-align:left;width:3.468cm; " class="ce48"><p>DUP</p></td><td style="text-align:left;width:2.542cm; " class="ce48"><p>-</p></td><td style="text-align:left;width:3.595cm; " class="ce48"><p>-</p></td><td style="text-align:left;width:15.307cm; " class="ce48"><p>Duplicates stack top value</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce49"><p>17</p></td><td style="text-align:left;width:3.468cm; " class="ce48"><p>DUP_X1</p></td><td style="text-align:left;width:2.542cm; " class="ce48"><p>-</p></td><td style="text-align:left;width:3.595cm; " class="ce48"><p>-</p></td><td style="text-align:left;width:15.307cm; " class="ce48"><p>Pops top two values from stack, pushes top value, then pushes original two values back</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce49"><p>18</p></td><td style="text-align:left;width:3.468cm; " class="ce48"><p>SWAP</p></td><td style="text-align:left;width:2.542cm; " class="ce48"><p>-</p></td><td style="text-align:left;width:3.595cm; " class="ce48"><p>-</p></td><td style="text-align:left;width:15.307cm; " class="ce48"><p>Swaps top two values on the stack</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce49"><p>19</p></td><td style="text-align:left;width:3.468cm; " class="ce48"><p>SWAP_X1</p></td><td style="text-align:left;width:2.542cm; " class="ce48"><p>-</p></td><td style="text-align:left;width:3.595cm; " class="ce48"><p>-</p></td><td style="text-align:left;width:15.307cm; " class="ce48"><p>Swaps third value over top two values on the stack (abc... → cab...)</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce52"><p>20</p></td><td style="text-align:left;width:3.468cm; " class="ce53"><p>IF</p></td><td style="text-align:left;width:2.542cm; " class="ce53"><p>1: target offset</p></td><td style="text-align:left;width:3.595cm; " class="ce53"><p>0: boolean value</p></td><td style="text-align:left;width:15.307cm; " class="ce53"><p>If stack top value is true, branch to target offset</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce52"><p>21</p></td><td style="text-align:left;width:3.468cm; " class="ce53"><p>IFN</p></td><td style="text-align:left;width:2.542cm; " class="ce53"><p>1: target offset</p></td><td style="text-align:left;width:3.595cm; " class="ce53"><p>0: boolean value</p></td><td style="text-align:left;width:15.307cm; " class="ce53"><p>If stack top value is false, branch to target offset</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce52"><p>22</p></td><td style="text-align:left;width:3.468cm; " class="ce53"><p>GOTO</p></td><td style="text-align:left;width:2.542cm; " class="ce53"><p>1: target offset</p></td><td style="text-align:left;width:3.595cm; " class="ce53"><p>-</p></td><td style="text-align:left;width:15.307cm; " class="ce53"><p>Branch to target offset</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce52"><p>23</p></td><td style="text-align:left;width:3.468cm; " class="ce53"><p>ITERATE</p></td><td style="text-align:left;width:2.542cm; " class="ce53"><p>1: target offset</p></td><td style="text-align:left;width:3.595cm; " class="ce53"><p>0: collection value</p></td><td style="text-align:left;width:15.307cm; " class="ce53"><p>Runs the following instructions up to ENDITERATE for each element in the collection;</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce52"> </td><td style="text-align:left;width:3.468cm; " class="ce53"> </td><td style="text-align:left;width:2.542cm; " class="ce53"> </td><td style="text-align:left;width:3.595cm; " class="ce53"> </td><td style="text-align:left;width:15.307cm; " class="ce53"><p>offset marks the matching ENDITERATE</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce52"><p>24</p></td><td style="text-align:left;width:3.468cm; " class="ce53"><p>ENDITERATE</p></td><td style="text-align:left;width:2.542cm; " class="ce53"><p>1: target offset</p></td><td style="text-align:left;width:3.595cm; " class="ce53"><p>-</p></td><td style="text-align:left;width:15.307cm; " class="ce53"><p>Marks the end of an ITERATE run of instructions; offset marks the matching ITERATE</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce49"><p>25</p></td><td style="text-align:left;width:3.468cm; " class="ce48"><p>INVOKE</p></td><td style="text-align:left;width:2.542cm; " class="ce48"><p>1: opname</p></td><td style="text-align:left;width:3.595cm; " class="ce48"><p>0..n: arguments</p></td><td style="text-align:left;width:15.307cm; " class="ce48"><p>Regular dynamic method invocation, based on runtime type information</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce48"> </td><td style="text-align:left;width:3.468cm; " class="ce48"> </td><td style="text-align:left;width:2.542cm; " class="ce48"><p>2: nr_of_args</p></td><td style="text-align:left;width:3.595cm; " class="ce48"> </td><td style="text-align:left;width:15.307cm; " class="ce48"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce49"><p>26</p></td><td style="text-align:left;width:3.468cm; " class="ce48"><p>INVOKE_SUPER</p></td><td style="text-align:left;width:2.542cm; " class="ce48"><p>1: opname</p></td><td style="text-align:left;width:3.595cm; " class="ce48"><p>0..n: arguments</p></td><td style="text-align:left;width:15.307cm; " class="ce48"><p>Dynamic method invocation of superclass, relative to current execution context</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce48"> </td><td style="text-align:left;width:3.468cm; " class="ce48"> </td><td style="text-align:left;width:2.542cm; " class="ce48"><p>2: nr_of_args</p></td><td style="text-align:left;width:3.595cm; " class="ce48"> </td><td style="text-align:left;width:15.307cm; " class="ce48"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro5"><td style="text-align:right; width:0.707cm; " class="ce49"><p>27</p></td><td style="text-align:left;width:3.468cm; " class="ce48"><p>INVOKE_STATIC</p></td><td style="text-align:left;width:2.542cm; " class="ce48"><p>1: opname</p></td><td style="text-align:left;width:3.595cm; " class="ce48"><p>0..n: arguments</p></td><td style="text-align:left;width:15.307cm; " class="ce48"><p>Static method invocation; first argument is a metaclass, or Java class for native static operations</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro5"><td style="text-align:left;width:0.707cm; " class="ce48"> </td><td style="text-align:left;width:3.468cm; " class="ce48"> </td><td style="text-align:left;width:2.542cm; " class="ce48"><p>2: nr_of_args</p></td><td style="text-align:left;width:3.595cm; " class="ce48"> </td><td style="text-align:left;width:15.307cm; " class="ce48"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce50"><p>28</p></td><td style="text-align:left;width:3.468cm; " class="ce51"><p>ALLINST</p></td><td style="text-align:left;width:2.542cm; " class="ce51"><p>-</p></td><td style="text-align:left;width:3.595cm; " class="ce51"><p>0: type</p></td><td style="text-align:left;width:15.307cm; " class="ce51"><p>Finds all instances of the given type in all input models</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce50"><p>29</p></td><td style="text-align:left;width:3.468cm; " class="ce51"><p>ALLINST_IN</p></td><td style="text-align:left;width:2.542cm; " class="ce51"><p>-</p></td><td style="text-align:left;width:3.595cm; " class="ce51"><p>0: type</p></td><td style="text-align:left;width:15.307cm; " class="ce51"><p>Finds all instances of the given type in given input model</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro5"><td style="text-align:left;width:0.707cm; " class="ce51"> </td><td style="text-align:left;width:3.468cm; " class="ce51"> </td><td style="text-align:left;width:2.542cm; " class="ce51"> </td><td style="text-align:left;width:3.595cm; " class="ce51"><p>1: modelname</p></td><td style="text-align:left;width:15.307cm; " class="ce51"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce49"><p>30</p></td><td style="text-align:left;width:3.468cm; " class="ce48"><p>ISNULL</p></td><td style="text-align:left;width:2.542cm; " class="ce48"><p>-</p></td><td style="text-align:left;width:3.595cm; " class="ce48"><p>0: value</p></td><td style="text-align:left;width:15.307cm; " class="ce48"><p>Pushes TRUE if value is null, FALSE otherwise</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro5"><td style="text-align:right; width:0.707cm; " class="ce49"><p>31</p></td><td style="text-align:left;width:3.468cm; " class="ce48"><p>GETENVTYPE</p></td><td style="text-align:left;width:2.542cm; " class="ce48"><p>-</p></td><td style="text-align:left;width:3.595cm; " class="ce48"><p>-</p></td><td style="text-align:left;width:15.307cm; " class="ce48"><p>Pushes the ExecEnv type on the stack</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce49"><p>32</p></td><td style="text-align:left;width:3.468cm; " class="ce48"><p>NOT</p></td><td style="text-align:left;width:2.542cm; " class="ce48"><p>-</p></td><td style="text-align:left;width:3.595cm; " class="ce48"><p>0: boolean value</p></td><td style="text-align:left;width:15.307cm; " class="ce48"><p>Pushes TRUE if value is FALSE, FALSE otherwise</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro5"><td style="text-align:right; width:0.707cm; " class="ce49"><p>33</p></td><td style="text-align:left;width:3.468cm; " class="ce48"><p>AND</p></td><td style="text-align:left;width:2.542cm; " class="ce48"><p>1: code block #</p></td><td style="text-align:left;width:3.595cm; " class="ce48"><p>0: first value</p></td><td style="text-align:left;width:15.307cm; " class="ce48"><p>Pushes the boolean AND result of the first value and the result of codeblock on the stack</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro5"><td style="text-align:right; width:0.707cm; " class="ce49"><p>34</p></td><td style="text-align:left;width:3.468cm; " class="ce48"><p>OR</p></td><td style="text-align:left;width:2.542cm; " class="ce48"><p>1: code block #</p></td><td style="text-align:left;width:3.595cm; " class="ce48"><p>0: first value</p></td><td style="text-align:left;width:15.307cm; " class="ce48"><p>Pushes the boolean OR result of the first value and the result of codeblock on the stack</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce49"><p>35</p></td><td style="text-align:left;width:3.468cm; " class="ce48"><p>XOR</p></td><td style="text-align:left;width:2.542cm; " class="ce48"><p>-</p></td><td style="text-align:left;width:3.595cm; " class="ce48"><p>0: first value</p></td><td style="text-align:left;width:15.307cm; " class="ce48"><p>Pushes the boolean XOR result on the stack</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce49"> </td><td style="text-align:left;width:3.468cm; " class="ce48"> </td><td style="text-align:left;width:2.542cm; " class="ce48"> </td><td style="text-align:left;width:3.595cm; " class="ce48"><p>1: second value</p></td><td style="text-align:left;width:15.307cm; " class="ce48"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro5"><td style="text-align:right; width:0.707cm; " class="ce49"><p>36</p></td><td style="text-align:left;width:3.468cm; " class="ce48"><p>IMPLIES</p></td><td style="text-align:left;width:2.542cm; " class="ce48"><p>1: code block #</p></td><td style="text-align:left;width:3.595cm; " class="ce48"><p>0: first value</p></td><td style="text-align:left;width:15.307cm; " class="ce48"><p>Pushes the boolean IMPLIES result of the first value and the result of codeblock on the stack</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro5"><td style="text-align:right; width:0.707cm; " class="ce49"><p>37</p></td><td style="text-align:left;width:3.468cm; " class="ce48"><p>IFTE</p></td><td style="text-align:left;width:2.542cm; " class="ce48"><p>1: then cb #</p></td><td style="text-align:left;width:3.595cm; " class="ce48"><p>0: boolean value</p></td><td style="text-align:left;width:15.307cm; " class="ce48"><p>Executes “then” if TRUE, “else” otherwise</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro5"><td style="text-align:left;width:0.707cm; " class="ce48"> </td><td style="text-align:left;width:3.468cm; " class="ce48"> </td><td style="text-align:left;width:2.542cm; " class="ce48"><p>2: else cb #</p></td><td style="text-align:left;width:3.595cm; " class="ce48"> </td><td style="text-align:left;width:15.307cm; " class="ce48"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce52"><p>38</p></td><td style="text-align:left;width:3.468cm; " class="ce53"><p>RETURN</p></td><td style="text-align:left;width:2.542cm; " class="ce53"><p>-</p></td><td style="text-align:left;width:3.595cm; " class="ce53"><p>-</p></td><td style="text-align:left;width:15.307cm; " class="ce53"><p>Returns from a code block</p></td><td style="text-align:left;width:2.267cm; " class="ce62"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce49"><p>39</p></td><td style="text-align:left;width:3.468cm; " class="ce48"><p>GETCB</p></td><td style="text-align:left;width:2.542cm; " class="ce48"><p>1: code block #</p></td><td style="text-align:left;width:3.595cm; " class="ce48"><p>-</p></td><td style="text-align:left;width:15.307cm; " class="ce48"><p>Pushes nested code block onto the stack (lambda expression)</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro5"><td style="text-align:right; width:0.707cm; " class="ce49"><p>40</p></td><td style="text-align:left;width:3.468cm; " class="ce48"><p>INVOKE_ALL_CBS</p></td><td style="text-align:left;width:2.542cm; " class="ce48"><p>1: nr_of_args</p></td><td style="text-align:left;width:3.595cm; " class="ce48"><p>0..n: arguments</p></td><td style="text-align:left;width:15.307cm; " class="ce48"><p>Invokes all nested code blocks and pushes results on the stack</p></td><td style="text-align:left;width:2.267cm; " class="ce62"> </td></tr><tr class="ro4"><td style="text-align:right; width:0.707cm; " class="ce49"><p>41</p></td><td style="text-align:left;width:3.468cm; " class="ce48"><p>INVOKE_CB</p></td><td style="text-align:left;width:2.542cm; " class="ce48"><p>1: code block #</p></td><td style="text-align:left;width:3.595cm; " class="ce48"><p>0..n: arguments</p></td><td style="text-align:left;width:15.307cm; " class="ce48"><p>Invokes nested code block (lambda expression)</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro5"><td style="text-align:left;width:0.707cm; " class="ce48"> </td><td style="text-align:left;width:3.468cm; " class="ce48"> </td><td style="text-align:left;width:2.542cm; " class="ce48"><p>2: nr_of_args</p></td><td style="text-align:left;width:3.595cm; " class="ce48"> </td><td style="text-align:left;width:15.307cm; " class="ce48"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro5"><td style="text-align:right; width:0.707cm; " class="ce52"><p>42</p></td><td style="text-align:left;width:3.468cm; " class="ce53"><p>INVOKE_CB_S</p></td><td style="text-align:left;width:2.542cm; " class="ce53"><p>1: nr_of_args</p></td><td style="text-align:left;width:3.595cm; " class="ce53"><p>0..n: arguments</p></td><td style="text-align:left;width:15.307cm; " class="ce53"><p>Invokes code block on stack (lambda expression)</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce53"> </td><td style="text-align:left;width:3.468cm; " class="ce53"> </td><td style="text-align:left;width:2.542cm; " class="ce53"> </td><td style="text-align:left;width:3.595cm; " class="Default"><p>n+1: code block</p></td><td style="text-align:left;width:15.307cm; " class="ce53"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro5"><td style="text-align:right; width:0.707cm; " class="ce50"><p>43</p></td><td style="text-align:left;width:3.468cm; " class="ce51"><p>MATCH</p></td><td style="text-align:left;width:2.542cm; " class="ce51"><p>1: rulename</p></td><td style="text-align:left;width:3.595cm; " class="ce51"><p>0..n: input elements</p></td><td style="text-align:left;width:15.307cm; " class="ce51"><p>Matches the given rule, and invokes the pre-apply code for each match</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro5"><td style="text-align:left;width:0.707cm; " class="ce50"> </td><td style="text-align:left;width:3.468cm; " class="ce51"> </td><td style="text-align:left;width:2.542cm; " class="ce51"><p>2: nr_of_args</p></td><td style="text-align:left;width:3.595cm; " class="ce51"> </td><td style="text-align:left;width:15.307cm; " class="ce51"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro5"><td style="text-align:right; width:0.707cm; " class="ce50"><p>44</p></td><td style="text-align:left;width:3.468cm; " class="ce51"><p>MATCH_S</p></td><td style="text-align:left;width:2.542cm; " class="ce51"><p>1: nr_of_args</p></td><td style="text-align:left;width:3.595cm; " class="ce51"><p>0..n: input elements</p></td><td style="text-align:left;width:15.307cm; " class="ce51"><p>Matches the rule on the stack, and invokes the pre-apply code for each match</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce50"> </td><td style="text-align:left;width:3.468cm; " class="ce51"> </td><td style="text-align:left;width:2.542cm; " class="ce51"> </td><td style="text-align:left;width:3.595cm; " class="ce60"><p>n+1: rule</p></td><td style="text-align:left;width:15.307cm; " class="ce51"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro5"><td style="text-align:right; width:0.707cm; " class="ce49"><p>45</p></td><td style="text-align:left;width:3.468cm; " class="ce48"><p>ADD</p></td><td style="text-align:left;width:2.542cm; " class="ce48"><p>1: propname</p></td><td style="text-align:left;width:3.595cm; " class="ce48"><p>0: object</p></td><td style="text-align:left;width:15.307cm; " class="ce48"><p>Adds object property value</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce48"> </td><td style="text-align:left;width:3.468cm; " class="ce48"> </td><td style="text-align:left;width:2.542cm; " class="ce48"> </td><td style="text-align:left;width:3.595cm; " class="ce48"><p>1: value</p></td><td style="text-align:left;width:15.307cm; " class="ce48"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro5"><td style="text-align:right; width:0.707cm; " class="ce49"><p>46</p></td><td style="text-align:left;width:3.468cm; " class="ce48"><p>REMOVE</p></td><td style="text-align:left;width:2.542cm; " class="ce48"><p>1: propname</p></td><td style="text-align:left;width:3.595cm; " class="ce48"><p>0: object</p></td><td style="text-align:left;width:15.307cm; " class="ce48"><p>Removes object property value</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce48"> </td><td style="text-align:left;width:3.468cm; " class="ce48"> </td><td style="text-align:left;width:2.542cm; " class="ce48"> </td><td style="text-align:left;width:3.595cm; " class="ce48"><p>1: value</p></td><td style="text-align:left;width:15.307cm; " class="ce48"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro5"><td style="text-align:right; width:0.707cm; " class="ce49"><p>47</p></td><td style="text-align:left;width:3.468cm; " class="ce48"><p>INSERT</p></td><td style="text-align:left;width:2.542cm; " class="ce48"><p>1: propname</p></td><td style="text-align:left;width:3.595cm; " class="ce48"><p>0: object</p></td><td style="text-align:left;width:15.307cm; " class="ce48"><p>Adds object property value at the given index (starting at 0)</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce48"> </td><td style="text-align:left;width:3.468cm; " class="ce48"> </td><td style="text-align:left;width:2.542cm; " class="ce48"> </td><td style="text-align:left;width:3.595cm; " class="ce48"><p>1: value</p></td><td style="text-align:left;width:15.307cm; " class="ce48"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce48"> </td><td style="text-align:left;width:3.468cm; " class="ce48"> </td><td style="text-align:left;width:2.542cm; " class="ce48"> </td><td style="text-align:left;width:3.595cm; " class="ce48"><p>2: index</p></td><td style="text-align:left;width:15.307cm; " class="ce48"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro5"><td style="text-align:right; width:0.707cm; " class="ce48"><p>48</p></td><td style="text-align:left;width:3.468cm; " class="ce48"><p>GET_SUPER</p></td><td style="text-align:left;width:2.542cm; " class="ce48"><p>1: propname</p></td><td style="text-align:left;width:3.595cm; " class="ce48"><p>0: object</p></td><td style="text-align:left;width:15.307cm; " class="ce48"><p>Get object property value of superclass onto stack</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro5"><td style="text-align:right; width:0.707cm; " class="ce48"><p>49</p></td><td style="text-align:left;width:3.468cm; " class="ce48"><p>GETENV</p></td><td style="text-align:left;width:2.542cm; " class="ce48"><p>-</p></td><td style="text-align:left;width:3.595cm; " class="ce48"><p>-</p></td><td style="text-align:left;width:15.307cm; " class="ce48"><p>Pushes the ExecEnv instance on the stack</p></td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce54"> </td><td style="text-align:left;width:3.468cm; " class="Default"> </td><td style="text-align:left;width:2.542cm; " class="Default"> </td><td style="text-align:left;width:3.595cm; " class="Default"> </td><td style="text-align:left;width:15.307cm; " class="Default"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce55"> </td><td style="text-align:left;width:3.468cm; " class="ce58"><p>Instructions marked in grey are not (yet) used by any compiler for EMFTVM</p></td><td style="text-align:left;width:2.542cm; " class="ce59"> </td><td style="text-align:left;width:3.595cm; " class="ce59"> </td><td style="text-align:left;width:15.307cm; " class="ce61"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce54"> </td><td style="text-align:left;width:3.468cm; " class="Default"> </td><td style="text-align:left;width:2.542cm; " class="Default"> </td><td style="text-align:left;width:3.595cm; " class="Default"> </td><td style="text-align:left;width:15.307cm; " class="Default"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce54"> </td><td style="text-align:left;width:3.468cm; " class="Default"> </td><td style="text-align:left;width:2.542cm; " class="Default"> </td><td style="text-align:left;width:3.595cm; " class="Default"> </td><td style="text-align:left;width:15.307cm; " class="Default"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce54"> </td><td style="text-align:left;width:3.468cm; " class="Default"> </td><td style="text-align:left;width:2.542cm; " class="Default"> </td><td style="text-align:left;width:3.595cm; " class="Default"> </td><td style="text-align:left;width:15.307cm; " class="Default"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:0.707cm; " class="ce54"> </td><td style="text-align:left;width:3.468cm; " class="Default"> </td><td style="text-align:left;width:2.542cm; " class="Default"> </td><td style="text-align:left;width:3.595cm; " class="Default"> </td><td style="text-align:left;width:15.307cm; " class="Default"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="ta4"><colgroup><col width="174"/><col width="288"/><col width="99"/><col width="561"/></colgroup><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce63"><p>EMF TVM file format</p></td><td style="text-align:left;width:6.592cm; " class="ce63"> </td><td style="text-align:left;width:2.267cm; " class="ce64"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce64"> </td><td style="text-align:left;width:6.592cm; " class="ce64"> </td><td style="text-align:left;width:2.267cm; " class="ce64"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce65"><p>Name</p></td><td style="text-align:left;width:6.592cm; " class="ce65"><p>Offset</p></td><td style="text-align:left;width:2.267cm; " class="ce65"><p>Length</p></td><td style="text-align:left;width:12.829cm; " class="ce57"><p>Comment</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Magic</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>0</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>6</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>“EMFTVM” in ASCII</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Version</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>6</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>2</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Short integer containing the version number starting at 1</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Cpcount</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>8</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Constant pool count = number of entries in the constant pool</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Constant pool</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>12</p></td><td style="text-align:left;width:2.267cm; " class="ce68"><p>cpsize</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Constant pool table (see detailed description)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Module name</p></td><td style="text-align:left;width:6.592cm; " class="ce66"><p>12+cpsize</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Reference to module name string in constant pool</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Source name</p></td><td style="text-align:left;width:6.592cm; " class="ce66"><p>16+cpsize</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Reference to source file name in constant pool</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Input model count</p></td><td style="text-align:left;width:6.592cm; " class="ce66"><p>20+cpsize</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Number of input models</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Input model table</p></td><td style="text-align:left;width:6.592cm; " class="ce66"><p>24+cpsize</p></td><td style="text-align:left;width:2.267cm; " class="ce68"><p>isz</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Table of model declarations (see detailed description)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Inout model count</p></td><td style="text-align:left;width:6.592cm; " class="ce66"><p>24+cpsize+isz</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Number of input/output models</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Inout model table</p></td><td style="text-align:left;width:6.592cm; " class="ce66"><p>28+cpsize+isz</p></td><td style="text-align:left;width:2.267cm; " class="ce68"><p>iosz</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Table of model declarations (see detailed description)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Output model count</p></td><td style="text-align:left;width:6.592cm; " class="ce66"><p>28+cpsize+isz+iosz</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Number of output models</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Output model table</p></td><td style="text-align:left;width:6.592cm; " class="ce66"><p>32+cpsize+isz+iosz</p></td><td style="text-align:left;width:2.267cm; " class="ce68"><p>osz</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Table of model declarations (see detailed description)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Import count</p></td><td style="text-align:left;width:6.592cm; " class="ce66"><p>32+cpsize+isz+iosz+osz</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Number of imported modules</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Imports table</p></td><td style="text-align:left;width:6.592cm; " class="ce66"><p>36+cpsize+isz+iosz+osz</p></td><td style="text-align:left;width:2.267cm; " class="ce68"><p>itsize</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>List of name references of imported modules</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Feature count</p></td><td style="text-align:left;width:6.592cm; " class="ce66"><p>36+cpsize+isz+iosz+osz+itsize</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Number of features (fields, operations)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Feature table</p></td><td style="text-align:left;width:6.592cm; " class="ce66"><p>40+cpsize+isz+iosz+osz+itsize</p></td><td style="text-align:left;width:2.267cm; " class="ce68"><p>fsize</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Feature table (see detailed description)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Rule count</p></td><td style="text-align:left;width:6.592cm; " class="ce66"><p>40+cpsize+isz+iosz+osz+itsize+fsize</p></td><td style="text-align:right; width:2.267cm; " class="ce67"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Number of transformation rules</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Rule table</p></td><td style="text-align:left;width:6.592cm; " class="ce66"><p>44+cpsize+isz+iosz+osz+itsize+fsize</p></td><td style="text-align:left;width:2.267cm; " class="ce68"><p>rtsize</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Rule table (see detailed description)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce64"> </td><td style="text-align:left;width:6.592cm; " class="ce64"> </td><td style="text-align:left;width:2.267cm; " class="ce64"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce63"><p>Constant pool</p></td><td style="text-align:left;width:6.592cm; " class="ce64"> </td><td style="text-align:left;width:2.267cm; " class="ce64"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce64"> </td><td style="text-align:left;width:6.592cm; " class="ce64"> </td><td style="text-align:left;width:2.267cm; " class="ce64"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce65"><p>Name</p></td><td style="text-align:left;width:6.592cm; " class="ce65"><p>Offset</p></td><td style="text-align:left;width:2.267cm; " class="ce65"><p>Length</p></td><td style="text-align:left;width:12.829cm; " class="ce57"><p>Comment</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Tag</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>0</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Constant type tag</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Value</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:2.267cm; " class="ce68"><p>vsize</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Constant value (size depends on tag)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce64"> </td><td style="text-align:left;width:6.592cm; " class="ce64"> </td><td style="text-align:left;width:2.267cm; " class="ce64"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce65"><p>Tag</p></td><td style="text-align:left;width:6.592cm; " class="ce65"><p>Size</p></td><td colspan="2" style="text-align:left;width:2.267cm; " class="ce65"><p>Description</p></td></tr><tr class="ro5"><td style="text-align:right; width:3.976cm; " class="ce66"><p>0</p></td><td style="text-align:left;width:6.592cm; " class="ce66"><p>stringsize</p></td><td colspan="2" style="text-align:left;width:2.267cm; " class="ce69"><p><span class="T1"><a href="http://download.oracle.com/javase/6/docs/api/java/io/DataInput.html#modified-utf-8">String in modified UTF-8: http://download.oracle.com/javase/6/docs/api/java/io/DataInput.html#modified-utf-8</a></span></p></td></tr><tr class="ro4"><td style="text-align:right; width:3.976cm; " class="ce66"><p>1</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>4</p></td><td colspan="2" style="text-align:left;width:2.267cm; " class="ce66"><p>Integer (see DataInputStream.readInt())</p></td></tr><tr class="ro4"><td style="text-align:right; width:3.976cm; " class="ce66"><p>2</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>8</p></td><td colspan="2" style="text-align:left;width:2.267cm; " class="ce66"><p>Double (see DataInputStream.readDouble())</p></td></tr><tr class="ro4"><td style="text-align:right; width:3.976cm; " class="ce66"><p>3</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>1</p></td><td colspan="2" style="text-align:left;width:2.267cm; " class="ce66"><p>Byte</p></td></tr><tr class="ro4"><td style="text-align:right; width:3.976cm; " class="ce66"><p>4</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>1</p></td><td colspan="2" style="text-align:left;width:2.267cm; " class="ce66"><p>Char</p></td></tr><tr class="ro4"><td style="text-align:right; width:3.976cm; " class="ce66"><p>5</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>4</p></td><td colspan="2" style="text-align:left;width:2.267cm; " class="ce66"><p>Float</p></td></tr><tr class="ro4"><td style="text-align:right; width:3.976cm; " class="ce66"><p>6</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>2</p></td><td colspan="2" style="text-align:left;width:2.267cm; " class="ce66"><p>Short</p></td></tr><tr class="ro4"><td style="text-align:right; width:3.976cm; " class="ce66"><p>7</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>8</p></td><td colspan="2" style="text-align:left;width:2.267cm; " class="ce66"><p>Long</p></td></tr><tr class="ro4"><td style="text-align:right; width:3.976cm; " class="ce66"><p>8</p></td><td style="text-align:left;width:6.592cm; " class="ce66"><p>stringsize</p></td><td colspan="2" style="text-align:left;width:2.267cm; " class="ce66"><p>Enumeration literal encoded as a modified UTF-8 string</p></td></tr><tr class="ro4"><td style="text-align:right; width:3.976cm; " class="ce66"><p>9</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>0</p></td><td colspan="2" style="text-align:left;width:2.267cm; " class="ce66"><p>Null</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce64"> </td><td style="text-align:left;width:6.592cm; " class="ce64"> </td><td style="text-align:left;width:2.267cm; " class="ce64"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce63"><p>Model declaration table</p></td><td style="text-align:left;width:6.592cm; " class="ce64"> </td><td style="text-align:left;width:2.267cm; " class="ce64"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce64"> </td><td style="text-align:left;width:6.592cm; " class="ce64"> </td><td style="text-align:left;width:2.267cm; " class="ce64"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce65"><p>Name</p></td><td style="text-align:left;width:6.592cm; " class="ce65"><p>Offset</p></td><td style="text-align:left;width:2.267cm; " class="ce65"><p>Length</p></td><td style="text-align:left;width:12.829cm; " class="ce57"><p>Comment</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Model name</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>0</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Model name reference</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Metamodel name</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>4</p></td><td style="text-align:right; width:2.267cm; " class="ce67"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Metamodel name reference</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce64"> </td><td style="text-align:left;width:6.592cm; " class="ce64"> </td><td style="text-align:left;width:2.267cm; " class="ce64"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce63"><p>Feature table</p></td><td style="text-align:left;width:6.592cm; " class="ce64"> </td><td style="text-align:left;width:2.267cm; " class="ce64"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce63"> </td><td style="text-align:left;width:6.592cm; " class="ce64"> </td><td style="text-align:left;width:2.267cm; " class="ce64"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce65"><p>Name</p></td><td style="text-align:left;width:6.592cm; " class="ce65"><p>Offset</p></td><td style="text-align:left;width:2.267cm; " class="ce65"><p>Length</p></td><td style="text-align:left;width:12.829cm; " class="ce57"><p>Comment</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Tag</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>0</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Feature type tag</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Feature description</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:2.267cm; " class="ce68"><p>fsize</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Feature (format depends on tag)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce64"> </td><td style="text-align:left;width:6.592cm; " class="ce64"> </td><td style="text-align:left;width:2.267cm; " class="ce70"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce65"><p>Tag</p></td><td style="text-align:left;width:6.592cm; " class="ce65"><p>Description</p></td><td colspan="2" style="text-align:left;width:2.267cm; " class="ce65"><p>Format</p></td></tr><tr class="ro4"><td style="text-align:right; width:3.976cm; " class="ce66"><p>0</p></td><td style="text-align:left;width:6.592cm; " class="ce66"><p>Field</p></td><td colspan="2" style="text-align:left;width:2.267cm; " class="ce67"><p>See field entry</p></td></tr><tr class="ro4"><td style="text-align:right; width:3.976cm; " class="ce66"><p>1</p></td><td style="text-align:left;width:6.592cm; " class="ce66"><p>StaticField</p></td><td colspan="2" style="text-align:left;width:2.267cm; " class="ce67"><p>See field entry</p></td></tr><tr class="ro4"><td style="text-align:right; width:3.976cm; " class="ce66"><p>2</p></td><td style="text-align:left;width:6.592cm; " class="ce66"><p>Operation</p></td><td colspan="2" style="text-align:left;width:2.267cm; " class="ce67"><p>See operation entry</p></td></tr><tr class="ro4"><td style="text-align:right; width:3.976cm; " class="ce66"><p>3</p></td><td style="text-align:left;width:6.592cm; " class="ce66"><p>StaticOperation</p></td><td colspan="2" style="text-align:left;width:2.267cm; " class="ce67"><p>See operation entry</p></td></tr><tr class="ro4"><td style="text-align:right; width:3.976cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:6.592cm; " class="ce66"><p>QueryOperation</p></td><td colspan="2" style="text-align:left;width:2.267cm; " class="ce67"><p>See operation entry</p></td></tr><tr class="ro4"><td style="text-align:right; width:3.976cm; " class="ce66"><p>5</p></td><td style="text-align:left;width:6.592cm; " class="ce66"><p>StaticQueryOperation</p></td><td colspan="2" style="text-align:left;width:2.267cm; " class="ce67"><p>See operation entry</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce64"> </td><td style="text-align:left;width:6.592cm; " class="ce64"> </td><td style="text-align:left;width:2.267cm; " class="ce64"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce63"><p>Field entry</p></td><td style="text-align:left;width:6.592cm; " class="ce64"> </td><td style="text-align:left;width:2.267cm; " class="ce64"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce64"> </td><td style="text-align:left;width:6.592cm; " class="ce64"> </td><td style="text-align:left;width:2.267cm; " class="ce64"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce65"><p>Name</p></td><td style="text-align:left;width:6.592cm; " class="ce65"><p>Offset</p></td><td style="text-align:left;width:2.267cm; " class="ce65"><p>Length</p></td><td style="text-align:left;width:12.829cm; " class="ce57"><p>Comment</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Field name</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>0</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Field name reference</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Field type</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>4</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Field type name reference</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Field type model</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>8</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Field type model name reference</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Field context</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>12</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Field context type reference</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Field context model</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>16</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Field context type model name reference</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Initialiser code block</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>20</p></td><td style="text-align:left;width:2.267cm; " class="ce68"><p>csize</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Initialisation code block (see code block)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="Default"> </td><td style="text-align:left;width:6.592cm; " class="Default"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce63"><p>Operation entry</p></td><td style="text-align:left;width:6.592cm; " class="ce64"> </td><td style="text-align:left;width:2.267cm; " class="ce64"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce64"> </td><td style="text-align:left;width:6.592cm; " class="ce64"> </td><td style="text-align:left;width:2.267cm; " class="ce64"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce65"><p>Name</p></td><td style="text-align:left;width:6.592cm; " class="ce65"><p>Offset</p></td><td style="text-align:left;width:2.267cm; " class="ce65"><p>Length</p></td><td style="text-align:left;width:12.829cm; " class="ce57"><p>Comment</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Operation name</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>0</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Operation name reference</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Return type</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>4</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Operation return type reference</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Return type model</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>8</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Operation return type model name reference</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Operation context</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>12</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Operation context type reference</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Operation context model</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>16</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Operation context type model name reference</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Parameter count</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>20</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Number of parameters</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Parameter table</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>24</p></td><td style="text-align:left;width:2.267cm; " class="ce68"><p>ptsize</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Parameter table (see static field table)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Code block</p></td><td style="text-align:left;width:6.592cm; " class="ce66"><p>24+ptsize</p></td><td style="text-align:left;width:2.267cm; " class="ce68"><p>csize</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Code block (see detailed description)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="Default"> </td><td style="text-align:left;width:6.592cm; " class="Default"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce63"><p>Code block</p></td><td style="text-align:left;width:6.592cm; " class="ce64"> </td><td style="text-align:left;width:2.267cm; " class="ce64"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce64"> </td><td style="text-align:left;width:6.592cm; " class="ce64"> </td><td style="text-align:left;width:2.267cm; " class="ce64"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce65"><p>Name</p></td><td style="text-align:left;width:6.592cm; " class="ce65"><p>Offset</p></td><td style="text-align:left;width:2.267cm; " class="ce65"><p>Length</p></td><td style="text-align:left;width:12.829cm; " class="ce57"><p>Comment</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce67"><p>Max. locals</p></td><td style="text-align:right; width:6.592cm; " class="ce67"><p>0</p></td><td style="text-align:right; width:2.267cm; " class="ce67"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce71"><p>Maximum number of local variables (-1 if unknown)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce67"><p>Max. stack size</p></td><td style="text-align:right; width:6.592cm; " class="ce67"><p>4</p></td><td style="text-align:right; width:2.267cm; " class="ce67"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce71"><p>Maximum number of stack elements (-1 if unknown)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Local variable count</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>8</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Number of local variables</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Local variable table</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>12</p></td><td style="text-align:left;width:2.267cm; " class="ce68"><p>lvsize</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Local variable table (see detailed description)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Line number count</p></td><td style="text-align:left;width:6.592cm; " class="ce66"><p>12+lvsize</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Number of line number table entries</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Line number table</p></td><td style="text-align:left;width:6.592cm; " class="ce66"><p>16+lvsize</p></td><td style="text-align:left;width:2.267cm; " class="ce68"><p>lnsize</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Line number table (see detailed description)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Nested code block count</p></td><td style="text-align:left;width:6.592cm; " class="ce66"><p>16+lvsize+lnsize</p></td><td style="text-align:right; width:2.267cm; " class="ce67"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Number of nested code blocks</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Nested code blocks</p></td><td style="text-align:left;width:6.592cm; " class="ce66"><p>20+lvsize+lnsize</p></td><td style="text-align:left;width:2.267cm; " class="ce68"><p>nsize</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Nested code blocks</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Instruction count</p></td><td style="text-align:left;width:6.592cm; " class="ce66"><p>20+lvsize+lnsize+nsize</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Number of instructions</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Instruction list</p></td><td style="text-align:left;width:6.592cm; " class="ce66"><p>24+lvsize_lnsize+nsize</p></td><td style="text-align:left;width:2.267cm; " class="ce68"><p>isize</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>List of instructions (see detailed description)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce64"> </td><td style="text-align:left;width:6.592cm; " class="ce64"> </td><td style="text-align:left;width:2.267cm; " class="ce70"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce63"><p>Instruction list</p></td><td style="text-align:left;width:6.592cm; " class="ce64"> </td><td style="text-align:left;width:2.267cm; " class="ce64"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce64"> </td><td style="text-align:left;width:6.592cm; " class="ce64"> </td><td style="text-align:left;width:2.267cm; " class="ce64"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce65"><p>Name</p></td><td style="text-align:left;width:6.592cm; " class="ce65"><p>Offset</p></td><td style="text-align:left;width:2.267cm; " class="ce65"><p>Length</p></td><td style="text-align:left;width:12.829cm; " class="ce57"><p>Comment</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce67"><p>Line number index</p></td><td style="text-align:right; width:6.592cm; " class="ce67"><p>0</p></td><td style="text-align:right; width:2.267cm; " class="ce67"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce71"><p>Line number table index, or -1 if no line number available</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Opcode</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>4</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Instruction (see opcode reference)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Parameter 1</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>8</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>First parameter (depends on instruction)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Parameter 2</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>12</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Second parameter (depends on instruction)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>…</p></td><td style="text-align:left;width:6.592cm; " class="ce66"> </td><td style="text-align:left;width:2.267cm; " class="ce66"> </td><td style="text-align:left;width:12.829cm; " class="ce48"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce64"> </td><td style="text-align:left;width:6.592cm; " class="ce64"> </td><td style="text-align:left;width:2.267cm; " class="ce64"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce63"><p>Line number table</p></td><td style="text-align:left;width:6.592cm; " class="ce64"> </td><td style="text-align:left;width:2.267cm; " class="ce64"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce64"> </td><td style="text-align:left;width:6.592cm; " class="ce64"> </td><td style="text-align:left;width:2.267cm; " class="ce64"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce65"><p>Name</p></td><td style="text-align:left;width:6.592cm; " class="ce65"><p>Offset</p></td><td style="text-align:left;width:2.267cm; " class="ce65"><p>Length</p></td><td style="text-align:left;width:12.829cm; " class="ce57"><p>Comment</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce67"><p>Start line</p></td><td style="text-align:right; width:6.592cm; " class="ce67"><p>0</p></td><td style="text-align:right; width:2.267cm; " class="ce67"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce71"><p>Start line number</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce67"><p>Start column</p></td><td style="text-align:right; width:6.592cm; " class="ce67"><p>4</p></td><td style="text-align:right; width:2.267cm; " class="ce67"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce71"><p>Start column number</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce67"><p>End line</p></td><td style="text-align:right; width:6.592cm; " class="ce67"><p>8</p></td><td style="text-align:right; width:2.267cm; " class="ce67"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce71"><p>End line number</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce67"><p>End column</p></td><td style="text-align:right; width:6.592cm; " class="ce67"><p>12</p></td><td style="text-align:right; width:2.267cm; " class="ce67"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce71"><p>End column number</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce67"><p>Start character</p></td><td style="text-align:right; width:6.592cm; " class="ce67"><p>16</p></td><td style="text-align:right; width:2.267cm; " class="ce67"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce71"><p>Start character in the source file stream</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce67"><p>End character</p></td><td style="text-align:right; width:6.592cm; " class="ce67"><p>20</p></td><td style="text-align:right; width:2.267cm; " class="ce67"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce71"><p>End character in the source file stream</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce64"> </td><td style="text-align:left;width:6.592cm; " class="ce64"> </td><td style="text-align:left;width:2.267cm; " class="ce64"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce63"><p>Local variable table</p></td><td style="text-align:left;width:6.592cm; " class="ce64"> </td><td style="text-align:left;width:2.267cm; " class="ce64"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce64"> </td><td style="text-align:left;width:6.592cm; " class="ce64"> </td><td style="text-align:left;width:2.267cm; " class="ce64"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce65"><p>Name</p></td><td style="text-align:left;width:6.592cm; " class="ce65"><p>Offset</p></td><td style="text-align:left;width:2.267cm; " class="ce65"><p>Length</p></td><td style="text-align:left;width:12.829cm; " class="ce57"><p>Comment</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Slot</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>0</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Variable slot number (starting at 0)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Name</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>4</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Variable name reference</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Type</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>8</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Type name reference</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Start instruction</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>12</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Start instruction offset</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>End instruction</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>16</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>End instruction offset</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce64"> </td><td style="text-align:left;width:6.592cm; " class="ce64"> </td><td style="text-align:left;width:2.267cm; " class="ce64"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce56"><p>Rule table</p></td><td style="text-align:left;width:6.592cm; " class="Default"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="Default"> </td><td style="text-align:left;width:6.592cm; " class="Default"> </td><td style="text-align:left;width:2.267cm; " class="Default"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce65"><p>Name</p></td><td style="text-align:left;width:6.592cm; " class="ce65"><p>Offset</p></td><td style="text-align:left;width:2.267cm; " class="ce65"><p>Length</p></td><td style="text-align:left;width:12.829cm; " class="ce57"><p>Comment</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Rule name</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>0</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Rule name reference</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Rule mode</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>4</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Rule mode code (see detailed description)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Abstract</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>8</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Whether the rule is abstract (1 or 0)</p></td></tr><tr class="ro5"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Trace mode</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>12</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Trace mode bitset (see detailed description)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>DistinctElements</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>16</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Whether the rule matches distinct input elements (1 or 0)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Input element count</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>20</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Number of input model elements</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Input element table</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>24</p></td><td style="text-align:left;width:2.267cm; " class="ce68"><p>iesz</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Input model element table (see detailed description)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Output element count</p></td><td style="text-align:left;width:6.592cm; " class="ce66"><p>24+iesz</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Number of output model elements</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Output element table</p></td><td style="text-align:left;width:6.592cm; " class="ce66"><p>28+iesz</p></td><td style="text-align:left;width:2.267cm; " class="ce68"><p>oesz</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Output model element table (see output element table)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Super-rule count</p></td><td style="text-align:left;width:6.592cm; " class="ce66"><p>28+iesz+oesz</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Number of super-rules</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Super-rule table</p></td><td style="text-align:left;width:6.592cm; " class="ce66"><p>32+iesz+oesz</p></td><td style="text-align:left;width:2.267cm; " class="ce68"><p>srsz</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Super-rule table (list of super-rule name references)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Rule field count</p></td><td style="text-align:left;width:6.592cm; " class="ce66"><p>32+iesz+oesz+srsz</p></td><td style="text-align:right; width:2.267cm; " class="ce67"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Number of rule fields</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Rule field table</p></td><td style="text-align:left;width:6.592cm; " class="ce66"><p>36+iesz+oesz+srsz</p></td><td style="text-align:left;width:2.267cm; " class="ce68"><p>fsz</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Rule field table (see feature table)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Matcher count</p></td><td style="text-align:left;width:6.592cm; " class="ce66"><p>36+iesz+oesz+srsz+fsz</p></td><td style="text-align:right; width:2.267cm; " class="ce67"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Number of matcher code blocks to follow (0 or 1)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Matcher code block</p></td><td style="text-align:left;width:6.592cm; " class="ce66"><p>40+iesz+oesz+srsz+fsz</p></td><td style="text-align:left;width:2.267cm; " class="ce68"><p>msz</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Matcher code block (see code block)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Applier count</p></td><td style="text-align:left;width:6.592cm; " class="ce66"><p>40+iesz+oesz+srsz+fsz+msz</p></td><td style="text-align:right; width:2.267cm; " class="ce67"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Number of applier code blocks to follow (0 or 1)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Applier code block</p></td><td style="text-align:left;width:6.592cm; " class="ce66"><p>44+iesz+oesz+srsz+fsz+msz</p></td><td style="text-align:left;width:2.267cm; " class="ce68"><p>asz</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Applier code block (see code block)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Post-apply count</p></td><td style="text-align:left;width:6.592cm; " class="ce66"><p>44+iesz+oesz+srsz+fsz+msz+asz</p></td><td style="text-align:right; width:2.267cm; " class="ce67"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Number of post-apply code blocks to follow (0 or 1)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Post-apply code block</p></td><td style="text-align:left;width:6.592cm; " class="ce66"><p>48+iesz+oesz+srsz+fsz+msz+asz</p></td><td style="text-align:left;width:2.267cm; " class="ce68"><p>psz</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Post-apply code block (see code block)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce64"> </td><td style="text-align:left;width:6.592cm; " class="ce64"> </td><td style="text-align:left;width:2.267cm; " class="ce64"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce65"><p>Rule mode</p></td><td colspan="3" style="text-align:left;width:6.592cm; " class="ce65"><p>Comment</p></td></tr><tr class="ro4"><td style="text-align:right; width:3.976cm; " class="ce66"><p>0</p></td><td colspan="3" style="text-align:left;width:6.592cm; " class="ce66"><p>Manual application</p></td></tr><tr class="ro4"><td style="text-align:right; width:3.976cm; " class="ce66"><p>1</p></td><td colspan="3" style="text-align:left;width:6.592cm; " class="ce66"><p>Automatic single application</p></td></tr><tr class="ro4"><td style="text-align:right; width:3.976cm; " class="ce66"><p>2</p></td><td colspan="3" style="text-align:left;width:6.592cm; " class="ce66"><p>Automatic recursive application (priority given by rule order of appearance)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce64"> </td><td style="text-align:left;width:6.592cm; " class="ce64"> </td><td style="text-align:left;width:2.267cm; " class="ce64"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce65"><p>Trace mode</p></td><td colspan="3" style="text-align:left;width:6.592cm; " class="ce65"><p>Comment (any combination of the bit values below can occur)</p></td></tr><tr class="ro4"><td style="text-align:right; width:3.976cm; " class="ce66"><p>0</p></td><td colspan="3" style="text-align:left;width:6.592cm; " class="ce66"><p>Standard trace</p></td></tr><tr class="ro4"><td style="text-align:right; width:3.976cm; " class="ce66"><p>1</p></td><td colspan="3" style="text-align:left;width:6.592cm; " class="ce66"><p>Default trace</p></td></tr><tr class="ro4"><td style="text-align:right; width:3.976cm; " class="ce66"><p>2</p></td><td colspan="3" style="text-align:left;width:6.592cm; " class="ce66"><p>Unique trace</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce64"> </td><td style="text-align:left;width:6.592cm; " class="ce64"> </td><td style="text-align:left;width:2.267cm; " class="ce64"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce63"><p>Input element table</p></td><td style="text-align:left;width:6.592cm; " class="ce64"> </td><td style="text-align:left;width:2.267cm; " class="ce64"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce64"> </td><td style="text-align:left;width:6.592cm; " class="ce64"> </td><td style="text-align:left;width:2.267cm; " class="ce64"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce65"><p>Name</p></td><td style="text-align:left;width:6.592cm; " class="ce65"><p>Offset</p></td><td style="text-align:left;width:2.267cm; " class="ce65"><p>Length</p></td><td style="text-align:left;width:12.829cm; " class="ce57"><p>Comment</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Element name</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>0</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Input element name reference</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Element type</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>4</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Input element type reference</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Element type model</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>8</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Input element type model name reference</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Maps to self</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>12</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Whether input element trace maps to itself (0 or 1)</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Element model count</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>16</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Number of input element models</p></td></tr><tr class="ro5"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Element models</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>20</p></td><td style="text-align:left;width:2.267cm; " class="ce68"><p>iemsz</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Input element model name references</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce64"> </td><td style="text-align:left;width:6.592cm; " class="ce64"> </td><td style="text-align:left;width:2.267cm; " class="ce64"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce63"><p>Output element table</p></td><td style="text-align:left;width:6.592cm; " class="ce64"> </td><td style="text-align:left;width:2.267cm; " class="ce64"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce64"> </td><td style="text-align:left;width:6.592cm; " class="ce64"> </td><td style="text-align:left;width:2.267cm; " class="ce64"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce65"><p>Name</p></td><td style="text-align:left;width:6.592cm; " class="ce65"><p>Offset</p></td><td style="text-align:left;width:2.267cm; " class="ce65"><p>Length</p></td><td style="text-align:left;width:12.829cm; " class="ce57"><p>Comment</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Element name</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>0</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Element name reference</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Element type</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>4</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Element type reference</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Element type model</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>8</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Element type model name reference</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Element model</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>12</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Element model name reference</p></td></tr><tr class="ro4"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Maps to element count</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>16</p></td><td style="text-align:right; width:2.267cm; " class="ce66"><p>4</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Source element mapping count</p></td></tr><tr class="ro5"><td style="text-align:left;width:3.976cm; " class="ce66"><p>Maps to elements</p></td><td style="text-align:right; width:6.592cm; " class="ce66"><p>20</p></td><td style="text-align:left;width:2.267cm; " class="ce68"><p>mtsz</p></td><td style="text-align:left;width:12.829cm; " class="ce48"><p>Source element mapping name references</p></td></tr><tr class="ro5"><td style="text-align:left;width:3.976cm; " class="ce64"> </td><td style="text-align:left;width:6.592cm; " class="ce64"> </td><td style="text-align:left;width:2.267cm; " class="ce64"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr><tr class="ro7"><td style="text-align:left;width:3.976cm; " class="ce64"> </td><td style="text-align:left;width:6.592cm; " class="ce64"> </td><td style="text-align:left;width:2.267cm; " class="ce64"> </td><td style="text-align:left;width:12.829cm; " class="Default"> </td></tr></table><table border="0" cellspacing="0" cellpadding="0" class="ta3"><colgroup><col width="93"/><col width="344"/></colgroup><tr class="ro1"><td style="text-align:left;width:2.122cm; " class="ce63"><p>EMF TVM native types</p></td><td style="text-align:left;width:7.869cm; " class="Default"> </td></tr><tr class="ro1"><td style="text-align:left;width:2.122cm; " class="Default"> </td><td style="text-align:left;width:7.869cm; " class="Default"> </td></tr><tr class="ro1"><td style="text-align:left;width:2.122cm; " class="ce65"><p>Name</p></td><td style="text-align:left;width:7.869cm; " class="ce65"><p>Java class</p></td></tr><tr class="ro1"><td style="text-align:left;width:2.122cm; " class="ce48"><p>Object</p></td><td style="text-align:left;width:7.869cm; " class="ce48"><p>java.lang.Object</p></td></tr><tr class="ro1"><td style="text-align:left;width:2.122cm; " class="ce48"><p>Collection</p></td><td style="text-align:left;width:7.869cm; " class="ce48"><p>org.eclipse.m2m.atl.emftvm.util.LazyCollection</p></td></tr><tr class="ro1"><td style="text-align:left;width:2.122cm; " class="ce48"><p>Bag</p></td><td style="text-align:left;width:7.869cm; " class="ce48"><p>org.eclipse.m2m.atl.emftvm.util.LazyBag</p></td></tr><tr class="ro1"><td style="text-align:left;width:2.122cm; " class="ce48"><p>Sequence</p></td><td style="text-align:left;width:7.869cm; " class="ce48"><p>org.eclipse.m2m.atl.emftvm.util.LazyList</p></td></tr><tr class="ro1"><td style="text-align:left;width:2.122cm; " class="ce48"><p>Set</p></td><td style="text-align:left;width:7.869cm; " class="ce48"><p>org.eclipse.m2m.atl.emftvm.util.LazySet</p></td></tr><tr class="ro1"><td style="text-align:left;width:2.122cm; " class="ce48"><p>OrderedSet</p></td><td style="text-align:left;width:7.869cm; " class="ce48"><p>org.eclipse.m2m.atl.emftvm.util.LazyOrderedSet</p></td></tr><tr class="ro3"><td style="text-align:left;width:2.122cm; " class="ce48"><p>Map</p></td><td style="text-align:left;width:7.869cm; " class="ce48"><p>java.util.Map</p></td></tr><tr class="ro1"><td style="text-align:left;width:2.122cm; " class="ce48"><p>Tuple</p></td><td style="text-align:left;width:7.869cm; " class="ce48"><p>org.eclipse.m2m.atl.emftvm.util.Tuple</p></td></tr><tr class="ro1"><td style="text-align:left;width:2.122cm; " class="ce48"><p>Boolean</p></td><td style="text-align:left;width:7.869cm; " class="ce48"><p>java.lang.Boolean</p></td></tr><tr class="ro1"><td style="text-align:left;width:2.122cm; " class="ce48"><p>Integer</p></td><td style="text-align:left;width:7.869cm; " class="ce48"><p>java.lang.Integer</p></td></tr><tr class="ro1"><td style="text-align:left;width:2.122cm; " class="ce48"><p>Real</p></td><td style="text-align:left;width:7.869cm; " class="ce48"><p>java.lang.Double</p></td></tr><tr class="ro1"><td style="text-align:left;width:2.122cm; " class="ce48"><p>String</p></td><td style="text-align:left;width:7.869cm; " class="ce48"><p>java.lang.String</p></td></tr></table></body></html> \ No newline at end of file
diff --git a/plugins/org.eclipse.m2m.atl.emftvm/doc/EMFTVM.ods b/plugins/org.eclipse.m2m.atl.emftvm/doc/EMFTVM.ods
index 455cfa4d..8b6b7cb5 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm/doc/EMFTVM.ods
+++ b/plugins/org.eclipse.m2m.atl.emftvm/doc/EMFTVM.ods
Binary files differ
diff --git a/plugins/org.eclipse.m2m.atl.emftvm/doc/EMFTVM.xls b/plugins/org.eclipse.m2m.atl.emftvm/doc/EMFTVM.xls
index 56dfe7d3..30b9a057 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm/doc/EMFTVM.xls
+++ b/plugins/org.eclipse.m2m.atl.emftvm/doc/EMFTVM.xls
Binary files differ
diff --git a/plugins/org.eclipse.m2m.atl.emftvm/model/emftvm.ecore b/plugins/org.eclipse.m2m.atl.emftvm/model/emftvm.ecore
index 9d1de26a..674726d0 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm/model/emftvm.ecore
+++ b/plugins/org.eclipse.m2m.atl.emftvm/model/emftvm.ecore
@@ -351,7 +351,7 @@
eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean"
transient="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="currentPhase" eType="#//RuleMode"
- changeable="false" transient="true" defaultValueLiteral="null"/>
+ changeable="false" transient="true" defaultValueLiteral="manual"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Model">
<eOperations name="allInstancesOf">
@@ -476,7 +476,7 @@
<eStructuralFeatures xsi:type="ecore:EReference" name="owningBlock" lowerBound="1"
eType="#//CodeBlock" eOpposite="#//CodeBlock/code"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="opcode" lowerBound="1"
- eType="#//Opcode" changeable="false" transient="true" defaultValueLiteral=""
+ eType="#//Opcode" changeable="false" transient="true" defaultValueLiteral="PUSH"
derived="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="stackProduction" lowerBound="1"
eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EInt"
@@ -606,6 +606,9 @@
<eParameters name="env" eType="#//ExecEnv"/>
</eOperations>
<eOperations name="clearFields"/>
+ <eOperations name="findInputElement" eType="#//InputRuleElement">
+ <eParameters name="name" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ </eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="module" eType="#//Module"
eOpposite="#//Module/rules"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="mode" lowerBound="1" eType="#//RuleMode"/>
@@ -658,6 +661,8 @@
containment="true" eOpposite="#//CodeBlock/bindingFor"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="inputFor" eType="#//Rule"
eOpposite="#//Rule/inputElements"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="mapsToSelf" lowerBound="1"
+ eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="OutputRuleElement" eSuperTypes="#//RuleElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="mapsTo" upperBound="-1"
diff --git a/plugins/org.eclipse.m2m.atl.emftvm/model/emftvm.genmodel b/plugins/org.eclipse.m2m.atl.emftvm/model/emftvm.genmodel
index 51e830b0..370adeb6 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm/model/emftvm.genmodel
+++ b/plugins/org.eclipse.m2m.atl.emftvm/model/emftvm.genmodel
@@ -140,6 +140,11 @@
<genParameters ecoreParameter="emftvm.ecore#//ExecEnv/loadModule/resolver"/>
<genParameters ecoreParameter="emftvm.ecore#//ExecEnv/loadModule/name"/>
</genOperations>
+ <genOperations ecoreOperation="emftvm.ecore#//ExecEnv/loadModule.1">
+ <genParameters ecoreParameter="emftvm.ecore#//ExecEnv/loadModule.1/resolver"/>
+ <genParameters ecoreParameter="emftvm.ecore#//ExecEnv/loadModule.1/name"/>
+ <genParameters ecoreParameter="emftvm.ecore#//ExecEnv/loadModule.1/validate"/>
+ </genOperations>
<genOperations ecoreOperation="emftvm.ecore#//ExecEnv/findOperation">
<genParameters ecoreParameter="emftvm.ecore#//ExecEnv/findOperation/context"/>
<genParameters ecoreParameter="emftvm.ecore#//ExecEnv/findOperation/name"/>
@@ -519,6 +524,7 @@
<genClasses ecoreClass="emftvm.ecore#//InputRuleElement">
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference emftvm.ecore#//InputRuleElement/binding"/>
<genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference emftvm.ecore#//InputRuleElement/inputFor"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute emftvm.ecore#//InputRuleElement/mapsToSelf"/>
<genOperations ecoreOperation="emftvm.ecore#//InputRuleElement/createIterable">
<genParameters ecoreParameter="emftvm.ecore#//InputRuleElement/createIterable/env"/>
</genOperations>
diff --git a/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/EmftvmPackage.java b/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/EmftvmPackage.java
index b6342a35..09a9b318 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/EmftvmPackage.java
+++ b/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/EmftvmPackage.java
@@ -1895,13 +1895,22 @@ public interface EmftvmPackage extends EPackage {
int INPUT_RULE_ELEMENT__INPUT_FOR = RULE_ELEMENT_FEATURE_COUNT + 1;
/**
+ * The feature id for the '<em><b>Maps To Self</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INPUT_RULE_ELEMENT__MAPS_TO_SELF = RULE_ELEMENT_FEATURE_COUNT + 2;
+
+ /**
* The number of structural features of the '<em>Input Rule Element</em>' class.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
* @ordered
*/
- int INPUT_RULE_ELEMENT_FEATURE_COUNT = RULE_ELEMENT_FEATURE_COUNT + 2;
+ int INPUT_RULE_ELEMENT_FEATURE_COUNT = RULE_ELEMENT_FEATURE_COUNT + 3;
/**
* The meta object id for the '{@link org.eclipse.m2m.atl.emftvm.impl.OutputRuleElementImpl <em>Output Rule Element</em>}' class.
@@ -8917,6 +8926,17 @@ public interface EmftvmPackage extends EPackage {
EReference getInputRuleElement_InputFor();
/**
+ * Returns the meta object for the attribute '{@link org.eclipse.m2m.atl.emftvm.InputRuleElement#isMapsToSelf <em>Maps To Self</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Maps To Self</em>'.
+ * @see org.eclipse.m2m.atl.emftvm.InputRuleElement#isMapsToSelf()
+ * @see #getInputRuleElement()
+ * @generated
+ */
+ EAttribute getInputRuleElement_MapsToSelf();
+
+ /**
* Returns the meta object for class '{@link org.eclipse.m2m.atl.emftvm.OutputRuleElement <em>Output Rule Element</em>}'.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -10945,6 +10965,14 @@ public interface EmftvmPackage extends EPackage {
EReference INPUT_RULE_ELEMENT__INPUT_FOR = eINSTANCE.getInputRuleElement_InputFor();
/**
+ * The meta object literal for the '<em><b>Maps To Self</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute INPUT_RULE_ELEMENT__MAPS_TO_SELF = eINSTANCE.getInputRuleElement_MapsToSelf();
+
+ /**
* The meta object literal for the '{@link org.eclipse.m2m.atl.emftvm.impl.OutputRuleElementImpl <em>Output Rule Element</em>}' class.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
diff --git a/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/ExecEnv.java b/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/ExecEnv.java
index 568bc8c2..c6e44af2 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/ExecEnv.java
+++ b/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/ExecEnv.java
@@ -141,7 +141,7 @@ public interface ExecEnv extends EObject {
/**
* Returns the value of the '<em><b>Current Phase</b></em>' attribute.
- * The default value is <code>"null"</code>.
+ * The default value is <code>"manual"</code>.
* The literals are from the enumeration {@link org.eclipse.m2m.atl.emftvm.RuleMode}.
* <!-- begin-user-doc -->
* <p>
@@ -152,7 +152,7 @@ public interface ExecEnv extends EObject {
* @return the value of the '<em>Current Phase</em>' attribute.
* @see org.eclipse.m2m.atl.emftvm.RuleMode
* @see org.eclipse.m2m.atl.emftvm.EmftvmPackage#getExecEnv_CurrentPhase()
- * @model default="null" transient="true" changeable="false"
+ * @model default="manual" transient="true" changeable="false"
* @generated
*/
RuleMode getCurrentPhase();
diff --git a/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/InputRuleElement.java b/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/InputRuleElement.java
index 99126862..1949db59 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/InputRuleElement.java
+++ b/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/InputRuleElement.java
@@ -25,6 +25,7 @@ import org.eclipse.emf.ecore.EObject;
* <ul>
* <li>{@link org.eclipse.m2m.atl.emftvm.InputRuleElement#getBinding <em>Binding</em>}</li>
* <li>{@link org.eclipse.m2m.atl.emftvm.InputRuleElement#getInputFor <em>Input For</em>}</li>
+ * <li>{@link org.eclipse.m2m.atl.emftvm.InputRuleElement#isMapsToSelf <em>Maps To Self</em>}</li>
* </ul>
* </p>
*
@@ -90,6 +91,32 @@ public interface InputRuleElement extends RuleElement {
void setInputFor(Rule value);
/**
+ * Returns the value of the '<em><b>Maps To Self</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Maps To Self</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Maps To Self</em>' attribute.
+ * @see #setMapsToSelf(boolean)
+ * @see org.eclipse.m2m.atl.emftvm.EmftvmPackage#getInputRuleElement_MapsToSelf()
+ * @model required="true"
+ * @generated
+ */
+ boolean isMapsToSelf();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.m2m.atl.emftvm.InputRuleElement#isMapsToSelf <em>Maps To Self</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Maps To Self</em>' attribute.
+ * @see #isMapsToSelf()
+ * @generated
+ */
+ void setMapsToSelf(boolean value);
+
+ /**
* <!-- begin-user-doc -->
* Creates a new {@link Iterable} of possible match values for this rule element.
* @param env the execution environment context
diff --git a/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/Instruction.java b/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/Instruction.java
index 9e6b4f5a..d1e1d55e 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/Instruction.java
+++ b/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/Instruction.java
@@ -66,7 +66,7 @@ public interface Instruction extends EObject {
/**
* Returns the value of the '<em><b>Opcode</b></em>' attribute.
- * The default value is <code>""</code>.
+ * The default value is <code>"PUSH"</code>.
* The literals are from the enumeration {@link org.eclipse.m2m.atl.emftvm.Opcode}.
* <!-- begin-user-doc -->
* <p>
@@ -77,7 +77,7 @@ public interface Instruction extends EObject {
* @return the value of the '<em>Opcode</em>' attribute.
* @see org.eclipse.m2m.atl.emftvm.Opcode
* @see org.eclipse.m2m.atl.emftvm.EmftvmPackage#getInstruction_Opcode()
- * @model default="" required="true" transient="true" changeable="false" derived="true"
+ * @model default="PUSH" required="true" transient="true" changeable="false" derived="true"
* @generated
*/
Opcode getOpcode();
diff --git a/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/Rule.java b/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/Rule.java
index b7dea8bf..239d362f 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/Rule.java
+++ b/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/Rule.java
@@ -706,4 +706,17 @@ public interface Rule extends NamedElement {
*/
void clearFields();
+ /**
+ * <!-- begin-user-doc -->
+ * Finds the {@link InputRuleElement} with the given name within the rule inheritance hierarchy depth-first.
+ *
+ * @param name
+ * the input element name
+ * @return the {@link InputRuleElement} with the given name or <code>null</code>
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ InputRuleElement findInputElement(String name);
+
} // Rule
diff --git a/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/CodeBlockImpl.java b/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/CodeBlockImpl.java
index 6361d08e..f8ee6dd9 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/CodeBlockImpl.java
+++ b/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/CodeBlockImpl.java
@@ -374,7 +374,7 @@ public class CodeBlockImpl extends EObjectImpl implements CodeBlock {
*/
public Rule getMatcherFor() {
if (eContainerFeatureID() != EmftvmPackage.CODE_BLOCK__MATCHER_FOR) return null;
- return (Rule)eContainer();
+ return (Rule)eInternalContainer();
}
/**
@@ -418,7 +418,7 @@ public class CodeBlockImpl extends EObjectImpl implements CodeBlock {
*/
public Rule getApplierFor() {
if (eContainerFeatureID() != EmftvmPackage.CODE_BLOCK__APPLIER_FOR) return null;
- return (Rule)eContainer();
+ return (Rule)eInternalContainer();
}
/**
@@ -462,7 +462,7 @@ public class CodeBlockImpl extends EObjectImpl implements CodeBlock {
*/
public Rule getPostApplyFor() {
if (eContainerFeatureID() != EmftvmPackage.CODE_BLOCK__POST_APPLY_FOR) return null;
- return (Rule)eContainer();
+ return (Rule)eInternalContainer();
}
/**
@@ -506,7 +506,7 @@ public class CodeBlockImpl extends EObjectImpl implements CodeBlock {
*/
public Operation getBodyFor() {
if (eContainerFeatureID() != EmftvmPackage.CODE_BLOCK__BODY_FOR) return null;
- return (Operation)eContainer();
+ return (Operation)eInternalContainer();
}
/**
@@ -550,7 +550,7 @@ public class CodeBlockImpl extends EObjectImpl implements CodeBlock {
*/
public Field getInitialiserFor() {
if (eContainerFeatureID() != EmftvmPackage.CODE_BLOCK__INITIALISER_FOR) return null;
- return (Field)eContainer();
+ return (Field)eInternalContainer();
}
/**
@@ -607,7 +607,7 @@ public class CodeBlockImpl extends EObjectImpl implements CodeBlock {
*/
public CodeBlock getNestedFor() {
if (eContainerFeatureID() != EmftvmPackage.CODE_BLOCK__NESTED_FOR) return null;
- return (CodeBlock)eContainer();
+ return (CodeBlock)eInternalContainer();
}
/**
@@ -675,7 +675,7 @@ public class CodeBlockImpl extends EObjectImpl implements CodeBlock {
*/
public InputRuleElement getBindingFor() {
if (eContainerFeatureID() != EmftvmPackage.CODE_BLOCK__BINDING_FOR) return null;
- return (InputRuleElement)eContainer();
+ return (InputRuleElement)eInternalContainer();
}
/**
diff --git a/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/EmftvmFactoryImpl.java b/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/EmftvmFactoryImpl.java
index b5469bf3..1d4bee6d 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/EmftvmFactoryImpl.java
+++ b/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/EmftvmFactoryImpl.java
@@ -129,7 +129,7 @@ public class EmftvmFactoryImpl extends EFactoryImpl implements EmftvmFactory {
*/
public static EmftvmFactory init() {
try {
- EmftvmFactory theEmftvmFactory = (EmftvmFactory)EPackage.Registry.INSTANCE.getEFactory("http://www.eclipse.org/m2m/atl/2011/EMFTVM");
+ EmftvmFactory theEmftvmFactory = (EmftvmFactory)EPackage.Registry.INSTANCE.getEFactory(EmftvmPackage.eNS_URI);
if (theEmftvmFactory != null) {
return theEmftvmFactory;
}
diff --git a/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/EmftvmPackageImpl.java b/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/EmftvmPackageImpl.java
index a74f3d0d..bcff1330 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/EmftvmPackageImpl.java
+++ b/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/EmftvmPackageImpl.java
@@ -2685,6 +2685,15 @@ public class EmftvmPackageImpl extends EPackageImpl implements EmftvmPackage {
* <!-- end-user-doc -->
* @generated
*/
+ public EAttribute getInputRuleElement_MapsToSelf() {
+ return (EAttribute)inputRuleElementEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
public EClass getOutputRuleElement() {
return outputRuleElementEClass;
}
@@ -3030,6 +3039,7 @@ public class EmftvmPackageImpl extends EPackageImpl implements EmftvmPackage {
inputRuleElementEClass = createEClass(INPUT_RULE_ELEMENT);
createEReference(inputRuleElementEClass, INPUT_RULE_ELEMENT__BINDING);
createEReference(inputRuleElementEClass, INPUT_RULE_ELEMENT__INPUT_FOR);
+ createEAttribute(inputRuleElementEClass, INPUT_RULE_ELEMENT__MAPS_TO_SELF);
outputRuleElementEClass = createEClass(OUTPUT_RULE_ELEMENT);
createEReference(outputRuleElementEClass, OUTPUT_RULE_ELEMENT__MAPS_TO);
@@ -3369,7 +3379,7 @@ public class EmftvmPackageImpl extends EPackageImpl implements EmftvmPackage {
g1.getETypeArguments().add(g2);
initEAttribute(getExecEnv_UniqueResults(), g1, "uniqueResults", null, 1, 1, ExecEnv.class, IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
initEAttribute(getExecEnv_JitDisabled(), theEcorePackage.getEBoolean(), "jitDisabled", null, 1, 1, ExecEnv.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
- initEAttribute(getExecEnv_CurrentPhase(), this.getRuleMode(), "currentPhase", "null", 0, 1, ExecEnv.class, IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getExecEnv_CurrentPhase(), this.getRuleMode(), "currentPhase", "manual", 0, 1, ExecEnv.class, IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
EOperation op = addEOperation(execEnvEClass, this.getModule(), "loadModule", 0, 1, IS_UNIQUE, IS_ORDERED);
addEParameter(op, this.getModuleResolver(), "resolver", 0, 1, IS_UNIQUE, IS_ORDERED);
@@ -3656,7 +3666,7 @@ public class EmftvmPackageImpl extends EPackageImpl implements EmftvmPackage {
initEClass(instructionEClass, Instruction.class, "Instruction", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEReference(getInstruction_OwningBlock(), this.getCodeBlock(), this.getCodeBlock_Code(), "owningBlock", null, 1, 1, Instruction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
- initEAttribute(getInstruction_Opcode(), this.getOpcode(), "opcode", "", 1, 1, Instruction.class, IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ initEAttribute(getInstruction_Opcode(), this.getOpcode(), "opcode", "PUSH", 1, 1, Instruction.class, IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
initEAttribute(getInstruction_StackProduction(), theEcorePackage.getEInt(), "stackProduction", "0", 1, 1, Instruction.class, IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
initEAttribute(getInstruction_StackConsumption(), theEcorePackage.getEInt(), "stackConsumption", "0", 1, 1, Instruction.class, IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
initEAttribute(getInstruction_StackLevel(), theEcorePackage.getEInt(), "stackLevel", "0", 1, 1, Instruction.class, IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
@@ -3778,6 +3788,9 @@ public class EmftvmPackageImpl extends EPackageImpl implements EmftvmPackage {
addEOperation(ruleEClass, null, "clearFields", 0, 1, IS_UNIQUE, IS_ORDERED);
+ op = addEOperation(ruleEClass, this.getInputRuleElement(), "findInputElement", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, theEcorePackage.getEString(), "name", 0, 1, IS_UNIQUE, IS_ORDERED);
+
initEClass(ruleElementEClass, RuleElement.class, "RuleElement", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEAttribute(getRuleElement_Models(), theEcorePackage.getEString(), "models", null, 0, -1, RuleElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEReference(getRuleElement_EModels(), this.getModel(), null, "eModels", null, 0, -1, RuleElement.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
@@ -3785,6 +3798,7 @@ public class EmftvmPackageImpl extends EPackageImpl implements EmftvmPackage {
initEClass(inputRuleElementEClass, InputRuleElement.class, "InputRuleElement", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEReference(getInputRuleElement_Binding(), this.getCodeBlock(), this.getCodeBlock_BindingFor(), "binding", null, 0, 1, InputRuleElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEReference(getInputRuleElement_InputFor(), this.getRule(), this.getRule_InputElements(), "inputFor", null, 0, 1, InputRuleElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getInputRuleElement_MapsToSelf(), theEcorePackage.getEBoolean(), "mapsToSelf", null, 1, 1, InputRuleElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
op = addEOperation(inputRuleElementEClass, null, "createIterable", 0, 1, IS_UNIQUE, IS_ORDERED);
addEParameter(op, this.getExecEnv(), "env", 0, 1, IS_UNIQUE, IS_ORDERED);
diff --git a/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/FeatureImpl.java b/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/FeatureImpl.java
index 493661d6..0bff4f18 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/FeatureImpl.java
+++ b/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/FeatureImpl.java
@@ -397,7 +397,7 @@ public abstract class FeatureImpl extends TypedElementImpl implements Feature {
*/
public Module getModule() {
if (eContainerFeatureID() != EmftvmPackage.FEATURE__MODULE) return null;
- return (Module)eContainer();
+ return (Module)eInternalContainer();
}
/**
diff --git a/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/FieldImpl.java b/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/FieldImpl.java
index 01ad4eea..502cf0d9 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/FieldImpl.java
+++ b/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/FieldImpl.java
@@ -189,7 +189,7 @@ public class FieldImpl extends FeatureImpl implements Field {
*/
public Rule getRule() {
if (eContainerFeatureID() != EmftvmPackage.FIELD__RULE) return null;
- return (Rule)eContainer();
+ return (Rule)eInternalContainer();
}
/**
diff --git a/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/InputRuleElementImpl.java b/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/InputRuleElementImpl.java
index 6063c478..b7527090 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/InputRuleElementImpl.java
+++ b/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/InputRuleElementImpl.java
@@ -38,6 +38,7 @@ import org.eclipse.m2m.atl.emftvm.util.LazyList;
* <ul>
* <li>{@link org.eclipse.m2m.atl.emftvm.impl.InputRuleElementImpl#getBinding <em>Binding</em>}</li>
* <li>{@link org.eclipse.m2m.atl.emftvm.impl.InputRuleElementImpl#getInputFor <em>Input For</em>}</li>
+ * <li>{@link org.eclipse.m2m.atl.emftvm.impl.InputRuleElementImpl#isMapsToSelf <em>Maps To Self</em>}</li>
* </ul>
* </p>
*
@@ -55,6 +56,25 @@ public class InputRuleElementImpl extends RuleElementImpl implements InputRuleEl
protected CodeBlock binding;
/**
+ * The default value of the '{@link #isMapsToSelf() <em>Maps To Self</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isMapsToSelf()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean MAPS_TO_SELF_EDEFAULT = false;
+ /**
+ * The cached value of the '{@link #isMapsToSelf() <em>Maps To Self</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isMapsToSelf()
+ * @generated
+ * @ordered
+ */
+ protected boolean mapsToSelf = MAPS_TO_SELF_EDEFAULT;
+
+ /**
* <!-- begin-user-doc -->
* Creates a new {@link InputRuleElementImpl}.
* <!-- end-user-doc -->
@@ -130,7 +150,7 @@ public class InputRuleElementImpl extends RuleElementImpl implements InputRuleEl
*/
public Rule getInputFor() {
if (eContainerFeatureID() != EmftvmPackage.INPUT_RULE_ELEMENT__INPUT_FOR) return null;
- return (Rule)eContainer();
+ return (Rule)eInternalContainer();
}
/**
@@ -167,6 +187,27 @@ public class InputRuleElementImpl extends RuleElementImpl implements InputRuleEl
}
/**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isMapsToSelf() {
+ return mapsToSelf;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setMapsToSelf(boolean newMapsToSelf) {
+ boolean oldMapsToSelf = mapsToSelf;
+ mapsToSelf = newMapsToSelf;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, EmftvmPackage.INPUT_RULE_ELEMENT__MAPS_TO_SELF, oldMapsToSelf, mapsToSelf));
+ }
+
+ /**
* <!-- begin-user-doc. -->
* {@inheritDoc}
* <!-- end-user-doc -->
@@ -250,6 +291,8 @@ public class InputRuleElementImpl extends RuleElementImpl implements InputRuleEl
return getBinding();
case EmftvmPackage.INPUT_RULE_ELEMENT__INPUT_FOR:
return getInputFor();
+ case EmftvmPackage.INPUT_RULE_ELEMENT__MAPS_TO_SELF:
+ return isMapsToSelf();
}
return super.eGet(featureID, resolve, coreType);
}
@@ -269,6 +312,9 @@ public class InputRuleElementImpl extends RuleElementImpl implements InputRuleEl
case EmftvmPackage.INPUT_RULE_ELEMENT__INPUT_FOR:
setInputFor((Rule)newValue);
return;
+ case EmftvmPackage.INPUT_RULE_ELEMENT__MAPS_TO_SELF:
+ setMapsToSelf((Boolean)newValue);
+ return;
}
super.eSet(featureID, newValue);
}
@@ -288,6 +334,9 @@ public class InputRuleElementImpl extends RuleElementImpl implements InputRuleEl
case EmftvmPackage.INPUT_RULE_ELEMENT__INPUT_FOR:
setInputFor((Rule)null);
return;
+ case EmftvmPackage.INPUT_RULE_ELEMENT__MAPS_TO_SELF:
+ setMapsToSelf(MAPS_TO_SELF_EDEFAULT);
+ return;
}
super.eUnset(featureID);
}
@@ -305,8 +354,26 @@ public class InputRuleElementImpl extends RuleElementImpl implements InputRuleEl
return binding != null;
case EmftvmPackage.INPUT_RULE_ELEMENT__INPUT_FOR:
return getInputFor() != null;
+ case EmftvmPackage.INPUT_RULE_ELEMENT__MAPS_TO_SELF:
+ return mapsToSelf != MAPS_TO_SELF_EDEFAULT;
}
return super.eIsSet(featureID);
}
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (mapsToSelf: ");
+ result.append(mapsToSelf);
+ result.append(')');
+ return result.toString();
+ }
+
} //InputRuleElementImpl
diff --git a/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/InstructionImpl.java b/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/InstructionImpl.java
index 24570fd3..b5ac0bc6 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/InstructionImpl.java
+++ b/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/InstructionImpl.java
@@ -160,7 +160,7 @@ public abstract class InstructionImpl extends EObjectImpl implements Instruction
*/
public CodeBlock getOwningBlock() {
if (eContainerFeatureID() != EmftvmPackage.INSTRUCTION__OWNING_BLOCK) return null;
- return (CodeBlock)eContainer();
+ return (CodeBlock)eInternalContainer();
}
/**
diff --git a/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/LineNumberImpl.java b/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/LineNumberImpl.java
index 1b5732e8..7f21ac75 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/LineNumberImpl.java
+++ b/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/LineNumberImpl.java
@@ -336,7 +336,7 @@ public class LineNumberImpl extends EObjectImpl implements LineNumber {
*/
public CodeBlock getOwningBlock() {
if (eContainerFeatureID() != EmftvmPackage.LINE_NUMBER__OWNING_BLOCK) return null;
- return (CodeBlock)eContainer();
+ return (CodeBlock)eInternalContainer();
}
/**
diff --git a/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/LocalVariableImpl.java b/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/LocalVariableImpl.java
index bf5a58fb..d291d239 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/LocalVariableImpl.java
+++ b/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/LocalVariableImpl.java
@@ -581,7 +581,7 @@ public class LocalVariableImpl extends TypedElementImpl implements LocalVariable
*/
public CodeBlock getOwningBlock() {
if (eContainerFeatureID() != EmftvmPackage.LOCAL_VARIABLE__OWNING_BLOCK) return null;
- return (CodeBlock)eContainer();
+ return (CodeBlock)eInternalContainer();
}
/**
diff --git a/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/ModelDeclarationImpl.java b/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/ModelDeclarationImpl.java
index bbc35248..ff0b80ba 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/ModelDeclarationImpl.java
+++ b/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/ModelDeclarationImpl.java
@@ -155,7 +155,7 @@ public class ModelDeclarationImpl extends EObjectImpl implements ModelDeclaratio
*/
public Module getInputModelFor() {
if (eContainerFeatureID() != EmftvmPackage.MODEL_DECLARATION__INPUT_MODEL_FOR) return null;
- return (Module)eContainer();
+ return (Module)eInternalContainer();
}
/**
@@ -199,7 +199,7 @@ public class ModelDeclarationImpl extends EObjectImpl implements ModelDeclaratio
*/
public Module getInoutModelFor() {
if (eContainerFeatureID() != EmftvmPackage.MODEL_DECLARATION__INOUT_MODEL_FOR) return null;
- return (Module)eContainer();
+ return (Module)eInternalContainer();
}
/**
@@ -243,7 +243,7 @@ public class ModelDeclarationImpl extends EObjectImpl implements ModelDeclaratio
*/
public Module getOutputModelFor() {
if (eContainerFeatureID() != EmftvmPackage.MODEL_DECLARATION__OUTPUT_MODEL_FOR) return null;
- return (Module)eContainer();
+ return (Module)eInternalContainer();
}
/**
diff --git a/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/OutputRuleElementImpl.java b/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/OutputRuleElementImpl.java
index 5124d6c6..c65db145 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/OutputRuleElementImpl.java
+++ b/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/OutputRuleElementImpl.java
@@ -96,7 +96,7 @@ public class OutputRuleElementImpl extends RuleElementImpl implements OutputRule
*/
public Rule getOutputFor() {
if (eContainerFeatureID() != EmftvmPackage.OUTPUT_RULE_ELEMENT__OUTPUT_FOR) return null;
- return (Rule)eContainer();
+ return (Rule)eInternalContainer();
}
/**
diff --git a/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/ParameterImpl.java b/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/ParameterImpl.java
index 1b0d52c0..930d88bd 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/ParameterImpl.java
+++ b/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/ParameterImpl.java
@@ -67,7 +67,7 @@ public class ParameterImpl extends TypedElementImpl implements Parameter {
*/
public Operation getOperation() {
if (eContainerFeatureID() != EmftvmPackage.PARAMETER__OPERATION) return null;
- return (Operation)eContainer();
+ return (Operation)eInternalContainer();
}
/**
diff --git a/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/RuleImpl.java b/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/RuleImpl.java
index 071296b2..64e23c0a 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/RuleImpl.java
+++ b/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/RuleImpl.java
@@ -1022,10 +1022,11 @@ public class RuleImpl extends NamedElementImpl implements Rule {
final TraceLink match = TraceFactory.eINSTANCE.createTraceLink();
final EList<SourceElement> ses = match.getSourceElements();
int i = 0;
- for (RuleElement re : getInputElements()) {
+ for (InputRuleElement re : getInputElements()) {
SourceElement se = TraceFactory.eINSTANCE.createSourceElement();
se.setName(re.getName());
se.setRuntimeObject(values[i++]);
+ se.setMapsToSelf(re.isMapsToSelf());
ses.add(se);
}
frame.getEnv().getMatches().getLinksByRule(getName(), true).getLinks().add(match);
@@ -1049,6 +1050,8 @@ public class RuleImpl extends NamedElementImpl implements Rule {
SourceElement se = TraceFactory.eINSTANCE.createSourceElement();
se.setName(v.getKey());
se.setRuntimeObject(v.getValue());
+ InputRuleElement re = findInputElement(v.getKey());
+ se.setMapsToSelf(re == null ? false : re.isMapsToSelf());
ses.add(se);
}
frame.getEnv().getMatches().getLinksByRule(getName(), true).getLinks().add(match);
@@ -1596,7 +1599,7 @@ public class RuleImpl extends NamedElementImpl implements Rule {
*/
public Module getModule() {
if (eContainerFeatureID() != EmftvmPackage.RULE__MODULE) return null;
- return (Module)eContainer();
+ return (Module)eInternalContainer();
}
/**
@@ -2329,6 +2332,26 @@ public class RuleImpl extends NamedElementImpl implements Rule {
* <!-- begin-user-doc. -->
* {@inheritDoc}
* <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public InputRuleElement findInputElement(final String name) {
+ for (InputRuleElement ire : getInputElements()) {
+ if (name.equals(ire.getName())) {
+ return ire;
+ }
+ }
+ InputRuleElement ire = null;
+ final Iterator<Rule> superRules = getESuperRules().iterator();
+ while (ire == null && superRules.hasNext()) {
+ ire = superRules.next().findInputElement(name);
+ }
+ return ire;
+ }
+
+ /**
+ * <!-- begin-user-doc. -->
+ * {@inheritDoc}
+ * <!-- end-user-doc -->
* @generated
*/
@SuppressWarnings("unchecked")
diff --git a/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/resource/EMFTVMResourceImpl.java b/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/resource/EMFTVMResourceImpl.java
index 020b56cc..071d7696 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/resource/EMFTVMResourceImpl.java
+++ b/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/impl/resource/EMFTVMResourceImpl.java
@@ -52,10 +52,30 @@ import org.eclipse.m2m.atl.emftvm.TypedElement;
public class EMFTVMResourceImpl extends ResourceImpl {
/**
- * Magic header: "ETVM".
- * http://www.asciitable.com/
- */
- public static final int MAGIC = 0x4554564D;
+ * Legacy magic header: "ETVM".
+ *
+ * @see <a href="http://www.asciitable.com/">http://www.asciitable.com/</a>
+ */
+ public static final int MAGIC_LEGACY = 0x4554564D;
+
+ /**
+ * Magic header part 1: "EMFT".
+ *
+ * @see <a href="http://www.asciitable.com/">http://www.asciitable.com/</a>
+ */
+ public static final int MAGIC_00 = 0x454D4654;
+
+ /**
+ * Magic header part 2: "VM..".
+ *
+ * @see <a href="http://www.asciitable.com/">http://www.asciitable.com/</a>
+ */
+ public static final int MAGIC_01 = 0x564D0000;
+
+ /**
+ * Current - and highest supported - bytecode format version.
+ */
+ public static final int BYTECODE_VERSION = 1;
/** Default trace mode value. */
public static final int TRACE_MODE_DEFAULT = 1;
@@ -67,6 +87,8 @@ public class EMFTVMResourceImpl extends ResourceImpl {
*/
protected static final EmftvmFactory FACTORY = EmftvmFactory.eINSTANCE;
+ private int bytecodeVersion;
+
/**
* Creates a new {@link EMFTVMResourceImpl}.
*/
@@ -83,15 +105,47 @@ public class EMFTVMResourceImpl extends ResourceImpl {
}
/**
+ * Returns the bytecode format version of the loaded file.
+ *
+ * @return the bytecodeVersion
+ */
+ public int getBytecodeVersion() {
+ return bytecodeVersion;
+ }
+
+ /**
+ * Sets the bytecode format version of the loaded file.
+ *
+ * @param bytecodeVersion
+ * the bytecodeVersion to set
+ */
+ protected void setBytecodeVersion(int bytecodeVersion) {
+ this.bytecodeVersion = bytecodeVersion;
+ }
+
+ /**
* {@inheritDoc}
*/
@Override
protected void doLoad(InputStream inputStream, Map<?, ?> options)
throws IOException {
final DataInputStream in = new DataInputStream(inputStream);
- final int magic = in.readInt();
- if (magic != MAGIC) {
- throw new IOException("Wrong magic");
+ final int magic_00 = in.readInt();
+ if (magic_00 == MAGIC_LEGACY) {
+ setBytecodeVersion(0);
+ } else {
+ if (magic_00 != MAGIC_00) {
+ throw new IOException("Wrong magic");
+ }
+ final int magic_01 = in.readInt();
+ if ((magic_01 & 0xFFFF0000) != MAGIC_01) {
+ throw new IOException("Wrong magic");
+ }
+ final int version = magic_01 & 0x0000FFFF;
+ if (version > BYTECODE_VERSION) {
+ throw new IOException("Unsupported bytecode version: " + version);
+ }
+ setBytecodeVersion(version);
}
final ConstantPool constants = new ConstantPool();
constants.read(in);
@@ -99,7 +153,7 @@ public class EMFTVMResourceImpl extends ResourceImpl {
getContents().add(module);
}
- private static Module readModule(final DataInputStream in,
+ private Module readModule(final DataInputStream in,
final ConstantPool constants) throws IOException {
final Module module = FACTORY.createModule();
module.setName((String)constants.get(in.readInt()));
@@ -302,7 +356,7 @@ public class EMFTVMResourceImpl extends ResourceImpl {
}
}
- private static void readRules(final DataInputStream in,
+ private void readRules(final DataInputStream in,
final ConstantPool constants, final EList<Rule> rules) throws IOException {
final int rtsize = in.readInt();
for (int i = 0; i < rtsize; i++) {
@@ -340,13 +394,16 @@ public class EMFTVMResourceImpl extends ResourceImpl {
}
}
- private static void readInputRuleElements(final DataInputStream in,
+ private void readInputRuleElements(final DataInputStream in,
final ConstantPool constants, final EList<InputRuleElement> elements) throws IOException {
final int esize = in.readInt();
for (int i = 0; i < esize; i++) {
InputRuleElement ire = FACTORY.createInputRuleElement();
elements.add(ire);
readTypedElement(in, constants, ire);
+ if (getBytecodeVersion() >= 1) {
+ ire.setMapsToSelf(in.readInt() > 0);
+ }
int iemsize = in.readInt();
final EList<String> models = ire.getModels();
for (int j = 0; j < iemsize; j++) {
@@ -404,7 +461,8 @@ public class EMFTVMResourceImpl extends ResourceImpl {
protected void doSave(OutputStream outputStream, Map<?, ?> options)
throws IOException {
final DataOutputStream out = new DataOutputStream(outputStream);
- out.writeInt(MAGIC);
+ out.writeInt(MAGIC_00);
+ out.writeInt(MAGIC_01 + BYTECODE_VERSION);
final Module module = findModule();
final ConstantPool constants = new ConstantPool();
constants.createConstants(module);
@@ -643,6 +701,7 @@ public class EMFTVMResourceImpl extends ResourceImpl {
out.writeInt(elements.size());
for (InputRuleElement ire : elements) {
writeTypedElement(out, constants, ire);
+ out.writeInt(ire.isMapsToSelf() ? 1 : 0);
final EList<String> models = ire.getModels();
out.writeInt(models.size());
for (String model : models) {
diff --git a/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/util/OCLOperations.java b/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/util/OCLOperations.java
index 91eb129e..2f38f82a 100644
--- a/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/util/OCLOperations.java
+++ b/plugins/org.eclipse.m2m.atl.emftvm/src/org/eclipse/m2m/atl/emftvm/util/OCLOperations.java
@@ -76,7 +76,7 @@ public final class OCLOperations {
public Object next() {
Object next = inner.next();
final SourceElement se = tls.getDefaultSourceElement(next);
- if (se != null) {
+ if (se != null && !se.isMapsToSelf()) {
final EList<TargetElement> seMapsTo = se.getMapsTo();
if (!seMapsTo.isEmpty()) {
assert seMapsTo.get(0).getObject().eResource() != null;
@@ -149,7 +149,7 @@ public final class OCLOperations {
public Object next() {
Object next = inner.next();
final SourceElement se = tr.getUniqueSourceElement(next);
- if (se != null) {
+ if (se != null && !se.isMapsToSelf()) {
final EList<TargetElement> seMapsTo = se.getMapsTo();
if (!seMapsTo.isEmpty()) {
assert seMapsTo.get(0).getObject().eResource() != null;
@@ -537,7 +537,7 @@ public final class OCLOperations {
public Object execute(final StackFrame frame) {
final Object object = frame.getLocal(0, 0);
final SourceElement se = frame.getEnv().getTraces().getDefaultSourceElement(object);
- if (se != null) {
+ if (se != null && !se.isMapsToSelf()) {
final EList<TargetElement> seMapsTo = se.getMapsTo();
if (!seMapsTo.isEmpty()) {
assert seMapsTo.get(0).getObject().eResource() != null;
@@ -563,7 +563,7 @@ public final class OCLOperations {
final TracedRule tr = frame.getEnv().getTraces().getLinksByRule(rule, false);
if (tr != null) {
final SourceElement se = tr.getUniqueSourceElement(object);
- if (se != null) {
+ if (se != null && !se.isMapsToSelf()) {
final EList<TargetElement> seMapsTo = se.getMapsTo();
if (!seMapsTo.isEmpty()) {
assert seMapsTo.get(0).getObject().eResource() != null;

Back to the top