)(InternalEList>)getNodes()).basicAdd(otherEnd, msgs);
+ }
+ return super.eInverseAdd(otherEnd, featureID, msgs);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case PetrinetPackage.NETWORK__NODES:
+ return ((InternalEList>)getNodes()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case PetrinetPackage.NETWORK__NAME:
+ return getName();
+ case PetrinetPackage.NETWORK__NODES:
+ return getNodes();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PetrinetPackage.NETWORK__NAME:
+ setName((String)newValue);
+ return;
+ case PetrinetPackage.NETWORK__NODES:
+ getNodes().clear();
+ getNodes().addAll((Collection extends Node>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PetrinetPackage.NETWORK__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case PetrinetPackage.NETWORK__NODES:
+ getNodes().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PetrinetPackage.NETWORK__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case PetrinetPackage.NETWORK__NODES:
+ return nodes != null && !nodes.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+} //NetworkImpl
diff --git a/workspace/fr.n7.petrinet/src/petrinet/impl/NodeImpl.java b/workspace/fr.n7.petrinet/src/petrinet/impl/NodeImpl.java
new file mode 100755
index 0000000..ed2a1a5
--- /dev/null
+++ b/workspace/fr.n7.petrinet/src/petrinet/impl/NodeImpl.java
@@ -0,0 +1,264 @@
+/**
+ */
+package petrinet.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+import petrinet.Network;
+import petrinet.Node;
+import petrinet.PetrinetPackage;
+
+/**
+ *
+ * An implementation of the model object 'Node'.
+ *
+ *
+ * The following features are implemented:
+ *
+ *
+ * - {@link petrinet.impl.NodeImpl#getName Name}
+ * - {@link petrinet.impl.NodeImpl#getNetwork Network}
+ *
+ *
+ * @generated
+ */
+public abstract class NodeImpl extends MinimalEObjectImpl.Container implements Node {
+ /**
+ * The default value of the '{@link #getName() Name}' attribute.
+ *
+ *
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() Name}' attribute.
+ *
+ *
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ protected NodeImpl() {
+ super();
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PetrinetPackage.Literals.NODE;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PetrinetPackage.NODE__NAME, oldName, name));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public Network getNetwork() {
+ if (eContainerFeatureID() != PetrinetPackage.NODE__NETWORK) return null;
+ return (Network)eInternalContainer();
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public NotificationChain basicSetNetwork(Network newNetwork, NotificationChain msgs) {
+ msgs = eBasicSetContainer((InternalEObject)newNetwork, PetrinetPackage.NODE__NETWORK, msgs);
+ return msgs;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public void setNetwork(Network newNetwork) {
+ if (newNetwork != eInternalContainer() || (eContainerFeatureID() != PetrinetPackage.NODE__NETWORK && newNetwork != null)) {
+ if (EcoreUtil.isAncestor(this, newNetwork))
+ throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
+ NotificationChain msgs = null;
+ if (eInternalContainer() != null)
+ msgs = eBasicRemoveFromContainer(msgs);
+ if (newNetwork != null)
+ msgs = ((InternalEObject)newNetwork).eInverseAdd(this, PetrinetPackage.NETWORK__NODES, Network.class, msgs);
+ msgs = basicSetNetwork(newNetwork, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PetrinetPackage.NODE__NETWORK, newNetwork, newNetwork));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case PetrinetPackage.NODE__NETWORK:
+ if (eInternalContainer() != null)
+ msgs = eBasicRemoveFromContainer(msgs);
+ return basicSetNetwork((Network)otherEnd, msgs);
+ }
+ return super.eInverseAdd(otherEnd, featureID, msgs);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case PetrinetPackage.NODE__NETWORK:
+ return basicSetNetwork(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
+ switch (eContainerFeatureID()) {
+ case PetrinetPackage.NODE__NETWORK:
+ return eInternalContainer().eInverseRemove(this, PetrinetPackage.NETWORK__NODES, Network.class, msgs);
+ }
+ return super.eBasicRemoveFromContainerFeature(msgs);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case PetrinetPackage.NODE__NAME:
+ return getName();
+ case PetrinetPackage.NODE__NETWORK:
+ return getNetwork();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PetrinetPackage.NODE__NAME:
+ setName((String)newValue);
+ return;
+ case PetrinetPackage.NODE__NETWORK:
+ setNetwork((Network)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PetrinetPackage.NODE__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case PetrinetPackage.NODE__NETWORK:
+ setNetwork((Network)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PetrinetPackage.NODE__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case PetrinetPackage.NODE__NETWORK:
+ return getNetwork() != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+} //NodeImpl
diff --git a/workspace/fr.n7.petrinet/src/petrinet/impl/PetrinetFactoryImpl.java b/workspace/fr.n7.petrinet/src/petrinet/impl/PetrinetFactoryImpl.java
new file mode 100755
index 0000000..d769926
--- /dev/null
+++ b/workspace/fr.n7.petrinet/src/petrinet/impl/PetrinetFactoryImpl.java
@@ -0,0 +1,128 @@
+/**
+ */
+package petrinet.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import petrinet.*;
+
+/**
+ *
+ * An implementation of the model Factory.
+ *
+ * @generated
+ */
+public class PetrinetFactoryImpl extends EFactoryImpl implements PetrinetFactory {
+ /**
+ * Creates the default factory implementation.
+ *
+ *
+ * @generated
+ */
+ public static PetrinetFactory init() {
+ try {
+ PetrinetFactory thePetrinetFactory = (PetrinetFactory)EPackage.Registry.INSTANCE.getEFactory(PetrinetPackage.eNS_URI);
+ if (thePetrinetFactory != null) {
+ return thePetrinetFactory;
+ }
+ }
+ catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new PetrinetFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ *
+ *
+ * @generated
+ */
+ public PetrinetFactoryImpl() {
+ super();
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case PetrinetPackage.NETWORK: return createNetwork();
+ case PetrinetPackage.PLACE: return createPlace();
+ case PetrinetPackage.ARC: return createArc();
+ case PetrinetPackage.TRANSITION: return createTransition();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public Network createNetwork() {
+ NetworkImpl network = new NetworkImpl();
+ return network;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public Place createPlace() {
+ PlaceImpl place = new PlaceImpl();
+ return place;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public Arc createArc() {
+ ArcImpl arc = new ArcImpl();
+ return arc;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public Transition createTransition() {
+ TransitionImpl transition = new TransitionImpl();
+ return transition;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public PetrinetPackage getPetrinetPackage() {
+ return (PetrinetPackage)getEPackage();
+ }
+
+ /**
+ *
+ *
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static PetrinetPackage getPackage() {
+ return PetrinetPackage.eINSTANCE;
+ }
+
+} //PetrinetFactoryImpl
diff --git a/workspace/fr.n7.petrinet/src/petrinet/impl/PetrinetPackageImpl.java b/workspace/fr.n7.petrinet/src/petrinet/impl/PetrinetPackageImpl.java
new file mode 100755
index 0000000..db9424e
--- /dev/null
+++ b/workspace/fr.n7.petrinet/src/petrinet/impl/PetrinetPackageImpl.java
@@ -0,0 +1,374 @@
+/**
+ */
+package petrinet.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import petrinet.Arc;
+import petrinet.Network;
+import petrinet.Node;
+import petrinet.PetrinetFactory;
+import petrinet.PetrinetPackage;
+import petrinet.Place;
+import petrinet.Transition;
+
+/**
+ *
+ * An implementation of the model Package.
+ *
+ * @generated
+ */
+public class PetrinetPackageImpl extends EPackageImpl implements PetrinetPackage {
+ /**
+ *
+ *
+ * @generated
+ */
+ private EClass networkEClass = null;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private EClass nodeEClass = null;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private EClass placeEClass = null;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private EClass arcEClass = null;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private EClass transitionEClass = null;
+
+ /**
+ * Creates an instance of the model Package, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ *
+ *
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see petrinet.PetrinetPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private PetrinetPackageImpl() {
+ super(eNS_URI, PetrinetFactory.eINSTANCE);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the Package for this model, and for any others upon which it depends.
+ *
+ *
This method is used to initialize {@link PetrinetPackage#eINSTANCE} when that field is accessed.
+ * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+ *
+ *
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static PetrinetPackage init() {
+ if (isInited) return (PetrinetPackage)EPackage.Registry.INSTANCE.getEPackage(PetrinetPackage.eNS_URI);
+
+ // Obtain or create and register package
+ Object registeredPetrinetPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+ PetrinetPackageImpl thePetrinetPackage = registeredPetrinetPackage instanceof PetrinetPackageImpl ? (PetrinetPackageImpl)registeredPetrinetPackage : new PetrinetPackageImpl();
+
+ isInited = true;
+
+ // Create package meta-data objects
+ thePetrinetPackage.createPackageContents();
+
+ // Initialize created meta-data
+ thePetrinetPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ thePetrinetPackage.freeze();
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(PetrinetPackage.eNS_URI, thePetrinetPackage);
+ return thePetrinetPackage;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public EClass getNetwork() {
+ return networkEClass;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public EAttribute getNetwork_Name() {
+ return (EAttribute)networkEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public EReference getNetwork_Nodes() {
+ return (EReference)networkEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public EClass getNode() {
+ return nodeEClass;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public EAttribute getNode_Name() {
+ return (EAttribute)nodeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public EReference getNode_Network() {
+ return (EReference)nodeEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public EClass getPlace() {
+ return placeEClass;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public EAttribute getPlace_Tokens() {
+ return (EAttribute)placeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public EReference getPlace_Arcs() {
+ return (EReference)placeEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public EClass getArc() {
+ return arcEClass;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public EAttribute getArc_Weight() {
+ return (EAttribute)arcEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public EAttribute getArc_Outgoing() {
+ return (EAttribute)arcEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public EReference getArc_Place() {
+ return (EReference)arcEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public EReference getArc_Transition() {
+ return (EReference)arcEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public EClass getTransition() {
+ return transitionEClass;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public EReference getTransition_Arcs() {
+ return (EReference)transitionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public PetrinetFactory getPetrinetFactory() {
+ return (PetrinetFactory)getEFactoryInstance();
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ *
+ *
+ * @generated
+ */
+ public void createPackageContents() {
+ if (isCreated) return;
+ isCreated = true;
+
+ // Create classes and their features
+ networkEClass = createEClass(NETWORK);
+ createEAttribute(networkEClass, NETWORK__NAME);
+ createEReference(networkEClass, NETWORK__NODES);
+
+ nodeEClass = createEClass(NODE);
+ createEAttribute(nodeEClass, NODE__NAME);
+ createEReference(nodeEClass, NODE__NETWORK);
+
+ placeEClass = createEClass(PLACE);
+ createEAttribute(placeEClass, PLACE__TOKENS);
+ createEReference(placeEClass, PLACE__ARCS);
+
+ arcEClass = createEClass(ARC);
+ createEAttribute(arcEClass, ARC__WEIGHT);
+ createEAttribute(arcEClass, ARC__OUTGOING);
+ createEReference(arcEClass, ARC__PLACE);
+ createEReference(arcEClass, ARC__TRANSITION);
+
+ transitionEClass = createEClass(TRANSITION);
+ createEReference(transitionEClass, TRANSITION__ARCS);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ *
+ *
+ * @generated
+ */
+ public void initializePackageContents() {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+ placeEClass.getESuperTypes().add(this.getNode());
+ transitionEClass.getESuperTypes().add(this.getNode());
+
+ // Initialize classes, features, and operations; add parameters
+ initEClass(networkEClass, Network.class, "Network", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getNetwork_Name(), ecorePackage.getEString(), "name", null, 1, 1, Network.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getNetwork_Nodes(), this.getNode(), this.getNode_Network(), "nodes", null, 0, -1, Network.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(nodeEClass, Node.class, "Node", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getNode_Name(), ecorePackage.getEString(), "name", null, 1, 1, Node.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getNode_Network(), this.getNetwork(), this.getNetwork_Nodes(), "network", null, 1, 1, Node.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(placeEClass, Place.class, "Place", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getPlace_Tokens(), ecorePackage.getEInt(), "tokens", null, 1, 1, Place.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getPlace_Arcs(), this.getArc(), this.getArc_Place(), "arcs", null, 0, -1, Place.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(arcEClass, Arc.class, "Arc", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getArc_Weight(), ecorePackage.getEInt(), "weight", null, 1, 1, Arc.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getArc_Outgoing(), ecorePackage.getEBoolean(), "outgoing", null, 1, 1, Arc.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getArc_Place(), this.getPlace(), this.getPlace_Arcs(), "place", null, 1, 1, Arc.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getArc_Transition(), this.getTransition(), this.getTransition_Arcs(), "transition", null, 1, 1, Arc.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(transitionEClass, Transition.class, "Transition", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getTransition_Arcs(), this.getArc(), this.getArc_Transition(), "arcs", null, 0, -1, Transition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ // Create resource
+ createResource(eNS_URI);
+ }
+
+} //PetrinetPackageImpl
diff --git a/workspace/fr.n7.petrinet/src/petrinet/impl/PlaceImpl.java b/workspace/fr.n7.petrinet/src/petrinet/impl/PlaceImpl.java
new file mode 100755
index 0000000..7832bda
--- /dev/null
+++ b/workspace/fr.n7.petrinet/src/petrinet/impl/PlaceImpl.java
@@ -0,0 +1,236 @@
+/**
+ */
+package petrinet.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import petrinet.Arc;
+import petrinet.PetrinetPackage;
+import petrinet.Place;
+
+/**
+ *
+ * An implementation of the model object 'Place'.
+ *
+ *
+ * The following features are implemented:
+ *
+ *
+ * - {@link petrinet.impl.PlaceImpl#getTokens Tokens}
+ * - {@link petrinet.impl.PlaceImpl#getArcs Arcs}
+ *
+ *
+ * @generated
+ */
+public class PlaceImpl extends NodeImpl implements Place {
+ /**
+ * The default value of the '{@link #getTokens() Tokens}' attribute.
+ *
+ *
+ * @see #getTokens()
+ * @generated
+ * @ordered
+ */
+ protected static final int TOKENS_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getTokens() Tokens}' attribute.
+ *
+ *
+ * @see #getTokens()
+ * @generated
+ * @ordered
+ */
+ protected int tokens = TOKENS_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getArcs() Arcs}' reference list.
+ *
+ *
+ * @see #getArcs()
+ * @generated
+ * @ordered
+ */
+ protected EList arcs;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ protected PlaceImpl() {
+ super();
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PetrinetPackage.Literals.PLACE;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public int getTokens() {
+ return tokens;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public void setTokens(int newTokens) {
+ int oldTokens = tokens;
+ tokens = newTokens;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PetrinetPackage.PLACE__TOKENS, oldTokens, tokens));
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public EList getArcs() {
+ if (arcs == null) {
+ arcs = new EObjectWithInverseResolvingEList(Arc.class, this, PetrinetPackage.PLACE__ARCS, PetrinetPackage.ARC__PLACE);
+ }
+ return arcs;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case PetrinetPackage.PLACE__ARCS:
+ return ((InternalEList)(InternalEList>)getArcs()).basicAdd(otherEnd, msgs);
+ }
+ return super.eInverseAdd(otherEnd, featureID, msgs);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case PetrinetPackage.PLACE__ARCS:
+ return ((InternalEList>)getArcs()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case PetrinetPackage.PLACE__TOKENS:
+ return getTokens();
+ case PetrinetPackage.PLACE__ARCS:
+ return getArcs();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PetrinetPackage.PLACE__TOKENS:
+ setTokens((Integer)newValue);
+ return;
+ case PetrinetPackage.PLACE__ARCS:
+ getArcs().clear();
+ getArcs().addAll((Collection extends Arc>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PetrinetPackage.PLACE__TOKENS:
+ setTokens(TOKENS_EDEFAULT);
+ return;
+ case PetrinetPackage.PLACE__ARCS:
+ getArcs().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PetrinetPackage.PLACE__TOKENS:
+ return tokens != TOKENS_EDEFAULT;
+ case PetrinetPackage.PLACE__ARCS:
+ return arcs != null && !arcs.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (tokens: ");
+ result.append(tokens);
+ result.append(')');
+ return result.toString();
+ }
+
+} //PlaceImpl
diff --git a/workspace/fr.n7.petrinet/src/petrinet/impl/TransitionImpl.java b/workspace/fr.n7.petrinet/src/petrinet/impl/TransitionImpl.java
new file mode 100755
index 0000000..f03b0ec
--- /dev/null
+++ b/workspace/fr.n7.petrinet/src/petrinet/impl/TransitionImpl.java
@@ -0,0 +1,165 @@
+/**
+ */
+package petrinet.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import petrinet.Arc;
+import petrinet.PetrinetPackage;
+import petrinet.Transition;
+
+/**
+ *
+ * An implementation of the model object 'Transition'.
+ *
+ *
+ * The following features are implemented:
+ *
+ *
+ * - {@link petrinet.impl.TransitionImpl#getArcs Arcs}
+ *
+ *
+ * @generated
+ */
+public class TransitionImpl extends NodeImpl implements Transition {
+ /**
+ * The cached value of the '{@link #getArcs() Arcs}' containment reference list.
+ *
+ *
+ * @see #getArcs()
+ * @generated
+ * @ordered
+ */
+ protected EList arcs;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ protected TransitionImpl() {
+ super();
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PetrinetPackage.Literals.TRANSITION;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public EList getArcs() {
+ if (arcs == null) {
+ arcs = new EObjectContainmentWithInverseEList(Arc.class, this, PetrinetPackage.TRANSITION__ARCS, PetrinetPackage.ARC__TRANSITION);
+ }
+ return arcs;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case PetrinetPackage.TRANSITION__ARCS:
+ return ((InternalEList)(InternalEList>)getArcs()).basicAdd(otherEnd, msgs);
+ }
+ return super.eInverseAdd(otherEnd, featureID, msgs);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case PetrinetPackage.TRANSITION__ARCS:
+ return ((InternalEList>)getArcs()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case PetrinetPackage.TRANSITION__ARCS:
+ return getArcs();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PetrinetPackage.TRANSITION__ARCS:
+ getArcs().clear();
+ getArcs().addAll((Collection extends Arc>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PetrinetPackage.TRANSITION__ARCS:
+ getArcs().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PetrinetPackage.TRANSITION__ARCS:
+ return arcs != null && !arcs.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //TransitionImpl
diff --git a/workspace/fr.n7.petrinet/src/petrinet/util/PetrinetAdapterFactory.java b/workspace/fr.n7.petrinet/src/petrinet/util/PetrinetAdapterFactory.java
new file mode 100755
index 0000000..726ae31
--- /dev/null
+++ b/workspace/fr.n7.petrinet/src/petrinet/util/PetrinetAdapterFactory.java
@@ -0,0 +1,192 @@
+/**
+ */
+package petrinet.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import petrinet.*;
+
+/**
+ *
+ * The Adapter Factory for the model.
+ * It provides an adapter createXXX
method for each class of the model.
+ *
+ * @see petrinet.PetrinetPackage
+ * @generated
+ */
+public class PetrinetAdapterFactory extends AdapterFactoryImpl {
+ /**
+ * The cached model package.
+ *
+ *
+ * @generated
+ */
+ protected static PetrinetPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ *
+ *
+ * @generated
+ */
+ public PetrinetAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = PetrinetPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Returns whether this factory is applicable for the type of the object.
+ *
+ * This implementation returns true
if the object is either the model's package or is an instance object of the model.
+ *
+ * @return whether this factory is applicable for the type of the object.
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object object) {
+ if (object == modelPackage) {
+ return true;
+ }
+ if (object instanceof EObject) {
+ return ((EObject)object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ /**
+ * The switch that delegates to the createXXX
methods.
+ *
+ *
+ * @generated
+ */
+ protected PetrinetSwitch modelSwitch =
+ new PetrinetSwitch() {
+ @Override
+ public Adapter caseNetwork(Network object) {
+ return createNetworkAdapter();
+ }
+ @Override
+ public Adapter caseNode(Node object) {
+ return createNodeAdapter();
+ }
+ @Override
+ public Adapter casePlace(Place object) {
+ return createPlaceAdapter();
+ }
+ @Override
+ public Adapter caseArc(Arc object) {
+ return createArcAdapter();
+ }
+ @Override
+ public Adapter caseTransition(Transition object) {
+ return createTransitionAdapter();
+ }
+ @Override
+ public Adapter defaultCase(EObject object) {
+ return createEObjectAdapter();
+ }
+ };
+
+ /**
+ * Creates an adapter for the target
.
+ *
+ *
+ * @param target the object to adapt.
+ * @return the adapter for the target
.
+ * @generated
+ */
+ @Override
+ public Adapter createAdapter(Notifier target) {
+ return modelSwitch.doSwitch((EObject)target);
+ }
+
+
+ /**
+ * Creates a new adapter for an object of class '{@link petrinet.Network Network}'.
+ *
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ *
+ * @return the new adapter.
+ * @see petrinet.Network
+ * @generated
+ */
+ public Adapter createNetworkAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link petrinet.Node Node}'.
+ *
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ *
+ * @return the new adapter.
+ * @see petrinet.Node
+ * @generated
+ */
+ public Adapter createNodeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link petrinet.Place Place}'.
+ *
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ *
+ * @return the new adapter.
+ * @see petrinet.Place
+ * @generated
+ */
+ public Adapter createPlaceAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link petrinet.Arc Arc}'.
+ *
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ *
+ * @return the new adapter.
+ * @see petrinet.Arc
+ * @generated
+ */
+ public Adapter createArcAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link petrinet.Transition Transition}'.
+ *
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ *
+ * @return the new adapter.
+ * @see petrinet.Transition
+ * @generated
+ */
+ public Adapter createTransitionAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for the default case.
+ *
+ * This default implementation returns null.
+ *
+ * @return the new adapter.
+ * @generated
+ */
+ public Adapter createEObjectAdapter() {
+ return null;
+ }
+
+} //PetrinetAdapterFactory
diff --git a/workspace/fr.n7.petrinet/src/petrinet/util/PetrinetSwitch.java b/workspace/fr.n7.petrinet/src/petrinet/util/PetrinetSwitch.java
new file mode 100755
index 0000000..b5bcd9e
--- /dev/null
+++ b/workspace/fr.n7.petrinet/src/petrinet/util/PetrinetSwitch.java
@@ -0,0 +1,196 @@
+/**
+ */
+package petrinet.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import petrinet.*;
+
+/**
+ *
+ * The Switch for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the caseXXX
method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ *
+ * @see petrinet.PetrinetPackage
+ * @generated
+ */
+public class PetrinetSwitch extends Switch {
+ /**
+ * The cached model package
+ *
+ *
+ * @generated
+ */
+ protected static PetrinetPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ *
+ *
+ * @generated
+ */
+ public PetrinetSwitch() {
+ if (modelPackage == null) {
+ modelPackage = PetrinetPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Checks whether this is a switch for the given package.
+ *
+ *
+ * @param ePackage the package in question.
+ * @return whether this is a switch for the given package.
+ * @generated
+ */
+ @Override
+ protected boolean isSwitchFor(EPackage ePackage) {
+ return ePackage == modelPackage;
+ }
+
+ /**
+ * Calls caseXXX
for each class of the model until one returns a non null result; it yields that result.
+ *
+ *
+ * @return the first non-null result returned by a caseXXX
call.
+ * @generated
+ */
+ @Override
+ protected T doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case PetrinetPackage.NETWORK: {
+ Network network = (Network)theEObject;
+ T result = caseNetwork(network);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case PetrinetPackage.NODE: {
+ Node node = (Node)theEObject;
+ T result = caseNode(node);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case PetrinetPackage.PLACE: {
+ Place place = (Place)theEObject;
+ T result = casePlace(place);
+ if (result == null) result = caseNode(place);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case PetrinetPackage.ARC: {
+ Arc arc = (Arc)theEObject;
+ T result = caseArc(arc);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case PetrinetPackage.TRANSITION: {
+ Transition transition = (Transition)theEObject;
+ T result = caseTransition(transition);
+ if (result == null) result = caseNode(transition);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ default: return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of 'Network'.
+ *
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ *
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of 'Network'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseNetwork(Network object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of 'Node'.
+ *
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ *
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of 'Node'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseNode(Node object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of 'Place'.
+ *
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ *
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of 'Place'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T casePlace(Place object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of 'Arc'.
+ *
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ *
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of 'Arc'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseArc(Arc object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of 'Transition'.
+ *
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ *
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of 'Transition'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseTransition(Transition object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of 'EObject'.
+ *
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch, but this is the last case anyway.
+ *
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of 'EObject'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ @Override
+ public T defaultCase(EObject object) {
+ return null;
+ }
+
+} //PetrinetSwitch
diff --git a/workspace/game.tests/test-bin/.gitignore b/workspace/game.tests/test-bin/.gitignore
new file mode 100644
index 0000000..7904a1c
--- /dev/null
+++ b/workspace/game.tests/test-bin/.gitignore
@@ -0,0 +1,2 @@
+/game/
+/xtext/
diff --git a/workspace/game.tests/test-bin/xtext/tests/.GameParsingTest.xtendbin b/workspace/game.tests/test-bin/xtext/tests/.GameParsingTest.xtendbin
index e4d0dcc..1f5bcf7 100644
Binary files a/workspace/game.tests/test-bin/xtext/tests/.GameParsingTest.xtendbin and b/workspace/game.tests/test-bin/xtext/tests/.GameParsingTest.xtendbin differ
diff --git a/workspace/game.tests/xtend-gen/xtext/tests/.GameParsingTest.xtendbin b/workspace/game.tests/xtend-gen/xtext/tests/.GameParsingTest.xtendbin
index e4d0dcc..1f5bcf7 100644
Binary files a/workspace/game.tests/xtend-gen/xtext/tests/.GameParsingTest.xtendbin and b/workspace/game.tests/xtend-gen/xtext/tests/.GameParsingTest.xtendbin differ
diff --git a/workspace/game.tests/xtend-gen/xtext/tests/.gitignore b/workspace/game.tests/xtend-gen/xtext/tests/.gitignore
new file mode 100644
index 0000000..5fdc003
--- /dev/null
+++ b/workspace/game.tests/xtend-gen/xtext/tests/.gitignore
@@ -0,0 +1,3 @@
+/.GameParsingTest.java._trace
+/.GameParsingTest.xtendbin
+/GameParsingTest.java
diff --git a/workspace/game/.gitignore b/workspace/game/.gitignore
new file mode 100644
index 0000000..ae3c172
--- /dev/null
+++ b/workspace/game/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/workspace/game/bin/xtext/AbstractGameRuntimeModule.class b/workspace/game/bin/xtext/AbstractGameRuntimeModule.class
index 84e1ca6..9afebf5 100644
Binary files a/workspace/game/bin/xtext/AbstractGameRuntimeModule.class and b/workspace/game/bin/xtext/AbstractGameRuntimeModule.class differ
diff --git a/workspace/game/bin/xtext/GameRuntimeModule.class b/workspace/game/bin/xtext/GameRuntimeModule.class
index 2b91d0f..f995be5 100644
Binary files a/workspace/game/bin/xtext/GameRuntimeModule.class and b/workspace/game/bin/xtext/GameRuntimeModule.class differ
diff --git a/workspace/game/bin/xtext/GameStandaloneSetup.class b/workspace/game/bin/xtext/GameStandaloneSetup.class
index 049a1fb..17bdee6 100644
Binary files a/workspace/game/bin/xtext/GameStandaloneSetup.class and b/workspace/game/bin/xtext/GameStandaloneSetup.class differ
diff --git a/workspace/game/bin/xtext/GameStandaloneSetupGenerated.class b/workspace/game/bin/xtext/GameStandaloneSetupGenerated.class
index e40af6f..ccf68f5 100644
Binary files a/workspace/game/bin/xtext/GameStandaloneSetupGenerated.class and b/workspace/game/bin/xtext/GameStandaloneSetupGenerated.class differ
diff --git a/workspace/game/bin/xtext/game/Action.class b/workspace/game/bin/xtext/game/Action.class
index f386a09..758a43d 100644
Binary files a/workspace/game/bin/xtext/game/Action.class and b/workspace/game/bin/xtext/game/Action.class differ
diff --git a/workspace/game/bin/xtext/game/AntiConditionConnaissance.class b/workspace/game/bin/xtext/game/AntiConditionConnaissance.class
index 02aa32d..11851c9 100644
Binary files a/workspace/game/bin/xtext/game/AntiConditionConnaissance.class and b/workspace/game/bin/xtext/game/AntiConditionConnaissance.class differ
diff --git a/workspace/game/bin/xtext/game/Chemin.class b/workspace/game/bin/xtext/game/Chemin.class
index 174a88c..d521b45 100644
Binary files a/workspace/game/bin/xtext/game/Chemin.class and b/workspace/game/bin/xtext/game/Chemin.class differ
diff --git a/workspace/game/bin/xtext/game/Condition.class b/workspace/game/bin/xtext/game/Condition.class
index 38bdc71..5db4537 100644
Binary files a/workspace/game/bin/xtext/game/Condition.class and b/workspace/game/bin/xtext/game/Condition.class differ
diff --git a/workspace/game/bin/xtext/game/ConditionConnaissance.class b/workspace/game/bin/xtext/game/ConditionConnaissance.class
index b4b7e0a..0c6c59d 100644
Binary files a/workspace/game/bin/xtext/game/ConditionConnaissance.class and b/workspace/game/bin/xtext/game/ConditionConnaissance.class differ
diff --git a/workspace/game/bin/xtext/game/ConditionEt.class b/workspace/game/bin/xtext/game/ConditionEt.class
index 285e4a1..c83a266 100644
Binary files a/workspace/game/bin/xtext/game/ConditionEt.class and b/workspace/game/bin/xtext/game/ConditionEt.class differ
diff --git a/workspace/game/bin/xtext/game/ConditionObjet.class b/workspace/game/bin/xtext/game/ConditionObjet.class
index 43ae1ab..556eb2d 100644
Binary files a/workspace/game/bin/xtext/game/ConditionObjet.class and b/workspace/game/bin/xtext/game/ConditionObjet.class differ
diff --git a/workspace/game/bin/xtext/game/ConditionTest.class b/workspace/game/bin/xtext/game/ConditionTest.class
index 96694a6..dc32196 100644
Binary files a/workspace/game/bin/xtext/game/ConditionTest.class and b/workspace/game/bin/xtext/game/ConditionTest.class differ
diff --git a/workspace/game/bin/xtext/game/Connaissance.class b/workspace/game/bin/xtext/game/Connaissance.class
index efbb9d6..008f44b 100644
Binary files a/workspace/game/bin/xtext/game/Connaissance.class and b/workspace/game/bin/xtext/game/Connaissance.class differ
diff --git a/workspace/game/bin/xtext/game/Description.class b/workspace/game/bin/xtext/game/Description.class
index 3d422e7..e8733f9 100644
Binary files a/workspace/game/bin/xtext/game/Description.class and b/workspace/game/bin/xtext/game/Description.class differ
diff --git a/workspace/game/bin/xtext/game/Explorateur.class b/workspace/game/bin/xtext/game/Explorateur.class
index f576c4f..ff2c3de 100644
Binary files a/workspace/game/bin/xtext/game/Explorateur.class and b/workspace/game/bin/xtext/game/Explorateur.class differ
diff --git a/workspace/game/bin/xtext/game/GameFactory.class b/workspace/game/bin/xtext/game/GameFactory.class
index 6f5f0ae..c23facb 100644
Binary files a/workspace/game/bin/xtext/game/GameFactory.class and b/workspace/game/bin/xtext/game/GameFactory.class differ
diff --git a/workspace/game/bin/xtext/game/GamePackage$Literals.class b/workspace/game/bin/xtext/game/GamePackage$Literals.class
index e1fe8cc..2213ec9 100644
Binary files a/workspace/game/bin/xtext/game/GamePackage$Literals.class and b/workspace/game/bin/xtext/game/GamePackage$Literals.class differ
diff --git a/workspace/game/bin/xtext/game/GamePackage.class b/workspace/game/bin/xtext/game/GamePackage.class
index 8e3ead7..a750462 100644
Binary files a/workspace/game/bin/xtext/game/GamePackage.class and b/workspace/game/bin/xtext/game/GamePackage.class differ
diff --git a/workspace/game/bin/xtext/game/Interraction.class b/workspace/game/bin/xtext/game/Interraction.class
index da58b1a..178251d 100644
Binary files a/workspace/game/bin/xtext/game/Interraction.class and b/workspace/game/bin/xtext/game/Interraction.class differ
diff --git a/workspace/game/bin/xtext/game/Jeu.class b/workspace/game/bin/xtext/game/Jeu.class
index 96a2404..81d529b 100644
Binary files a/workspace/game/bin/xtext/game/Jeu.class and b/workspace/game/bin/xtext/game/Jeu.class differ
diff --git a/workspace/game/bin/xtext/game/Lieu.class b/workspace/game/bin/xtext/game/Lieu.class
index a2c17c2..dfcb385 100644
Binary files a/workspace/game/bin/xtext/game/Lieu.class and b/workspace/game/bin/xtext/game/Lieu.class differ
diff --git a/workspace/game/bin/xtext/game/Objet.class b/workspace/game/bin/xtext/game/Objet.class
index 48daf2f..a6b6840 100644
Binary files a/workspace/game/bin/xtext/game/Objet.class and b/workspace/game/bin/xtext/game/Objet.class differ
diff --git a/workspace/game/bin/xtext/game/Personne.class b/workspace/game/bin/xtext/game/Personne.class
index 68d2450..9f9423f 100644
Binary files a/workspace/game/bin/xtext/game/Personne.class and b/workspace/game/bin/xtext/game/Personne.class differ
diff --git a/workspace/game/bin/xtext/game/Territoire.class b/workspace/game/bin/xtext/game/Territoire.class
index 24a452a..d80c976 100644
Binary files a/workspace/game/bin/xtext/game/Territoire.class and b/workspace/game/bin/xtext/game/Territoire.class differ
diff --git a/workspace/game/bin/xtext/game/Transformation.class b/workspace/game/bin/xtext/game/Transformation.class
index cf33288..7ed21f8 100644
Binary files a/workspace/game/bin/xtext/game/Transformation.class and b/workspace/game/bin/xtext/game/Transformation.class differ
diff --git a/workspace/game/bin/xtext/game/impl/ActionImpl.class b/workspace/game/bin/xtext/game/impl/ActionImpl.class
index 39d6ff0..2681834 100644
Binary files a/workspace/game/bin/xtext/game/impl/ActionImpl.class and b/workspace/game/bin/xtext/game/impl/ActionImpl.class differ
diff --git a/workspace/game/bin/xtext/game/impl/AntiConditionConnaissanceImpl.class b/workspace/game/bin/xtext/game/impl/AntiConditionConnaissanceImpl.class
index e70b588..3928a45 100644
Binary files a/workspace/game/bin/xtext/game/impl/AntiConditionConnaissanceImpl.class and b/workspace/game/bin/xtext/game/impl/AntiConditionConnaissanceImpl.class differ
diff --git a/workspace/game/bin/xtext/game/impl/CheminImpl.class b/workspace/game/bin/xtext/game/impl/CheminImpl.class
index 6962bb2..867cc64 100644
Binary files a/workspace/game/bin/xtext/game/impl/CheminImpl.class and b/workspace/game/bin/xtext/game/impl/CheminImpl.class differ
diff --git a/workspace/game/bin/xtext/game/impl/ConditionConnaissanceImpl.class b/workspace/game/bin/xtext/game/impl/ConditionConnaissanceImpl.class
index 4f76b11..03e77f9 100644
Binary files a/workspace/game/bin/xtext/game/impl/ConditionConnaissanceImpl.class and b/workspace/game/bin/xtext/game/impl/ConditionConnaissanceImpl.class differ
diff --git a/workspace/game/bin/xtext/game/impl/ConditionEtImpl.class b/workspace/game/bin/xtext/game/impl/ConditionEtImpl.class
index 3e204e4..7bf76bf 100644
Binary files a/workspace/game/bin/xtext/game/impl/ConditionEtImpl.class and b/workspace/game/bin/xtext/game/impl/ConditionEtImpl.class differ
diff --git a/workspace/game/bin/xtext/game/impl/ConditionImpl.class b/workspace/game/bin/xtext/game/impl/ConditionImpl.class
index 673dd33..531fe2b 100644
Binary files a/workspace/game/bin/xtext/game/impl/ConditionImpl.class and b/workspace/game/bin/xtext/game/impl/ConditionImpl.class differ
diff --git a/workspace/game/bin/xtext/game/impl/ConditionObjetImpl.class b/workspace/game/bin/xtext/game/impl/ConditionObjetImpl.class
index 7328001..c9c14c4 100644
Binary files a/workspace/game/bin/xtext/game/impl/ConditionObjetImpl.class and b/workspace/game/bin/xtext/game/impl/ConditionObjetImpl.class differ
diff --git a/workspace/game/bin/xtext/game/impl/ConditionTestImpl.class b/workspace/game/bin/xtext/game/impl/ConditionTestImpl.class
index b77540f..6da469c 100644
Binary files a/workspace/game/bin/xtext/game/impl/ConditionTestImpl.class and b/workspace/game/bin/xtext/game/impl/ConditionTestImpl.class differ
diff --git a/workspace/game/bin/xtext/game/impl/ConnaissanceImpl.class b/workspace/game/bin/xtext/game/impl/ConnaissanceImpl.class
index 99b7ca3..59c556d 100644
Binary files a/workspace/game/bin/xtext/game/impl/ConnaissanceImpl.class and b/workspace/game/bin/xtext/game/impl/ConnaissanceImpl.class differ
diff --git a/workspace/game/bin/xtext/game/impl/DescriptionImpl.class b/workspace/game/bin/xtext/game/impl/DescriptionImpl.class
index 9608862..162a3f6 100644
Binary files a/workspace/game/bin/xtext/game/impl/DescriptionImpl.class and b/workspace/game/bin/xtext/game/impl/DescriptionImpl.class differ
diff --git a/workspace/game/bin/xtext/game/impl/ExplorateurImpl.class b/workspace/game/bin/xtext/game/impl/ExplorateurImpl.class
index bc4727e..151f0da 100644
Binary files a/workspace/game/bin/xtext/game/impl/ExplorateurImpl.class and b/workspace/game/bin/xtext/game/impl/ExplorateurImpl.class differ
diff --git a/workspace/game/bin/xtext/game/impl/GameFactoryImpl.class b/workspace/game/bin/xtext/game/impl/GameFactoryImpl.class
index 4d5b7cc..28c57df 100644
Binary files a/workspace/game/bin/xtext/game/impl/GameFactoryImpl.class and b/workspace/game/bin/xtext/game/impl/GameFactoryImpl.class differ
diff --git a/workspace/game/bin/xtext/game/impl/GamePackageImpl.class b/workspace/game/bin/xtext/game/impl/GamePackageImpl.class
index 9dc83ac..dbf22da 100644
Binary files a/workspace/game/bin/xtext/game/impl/GamePackageImpl.class and b/workspace/game/bin/xtext/game/impl/GamePackageImpl.class differ
diff --git a/workspace/game/bin/xtext/game/impl/InterractionImpl.class b/workspace/game/bin/xtext/game/impl/InterractionImpl.class
index e77ab91..74025f8 100644
Binary files a/workspace/game/bin/xtext/game/impl/InterractionImpl.class and b/workspace/game/bin/xtext/game/impl/InterractionImpl.class differ
diff --git a/workspace/game/bin/xtext/game/impl/JeuImpl.class b/workspace/game/bin/xtext/game/impl/JeuImpl.class
index bf66a21..49c9ea2 100644
Binary files a/workspace/game/bin/xtext/game/impl/JeuImpl.class and b/workspace/game/bin/xtext/game/impl/JeuImpl.class differ
diff --git a/workspace/game/bin/xtext/game/impl/LieuImpl.class b/workspace/game/bin/xtext/game/impl/LieuImpl.class
index 6ea44e3..f92a42a 100644
Binary files a/workspace/game/bin/xtext/game/impl/LieuImpl.class and b/workspace/game/bin/xtext/game/impl/LieuImpl.class differ
diff --git a/workspace/game/bin/xtext/game/impl/ObjetImpl.class b/workspace/game/bin/xtext/game/impl/ObjetImpl.class
index 26bde9e..0d80db9 100644
Binary files a/workspace/game/bin/xtext/game/impl/ObjetImpl.class and b/workspace/game/bin/xtext/game/impl/ObjetImpl.class differ
diff --git a/workspace/game/bin/xtext/game/impl/PersonneImpl.class b/workspace/game/bin/xtext/game/impl/PersonneImpl.class
index 28308f3..28d49f0 100644
Binary files a/workspace/game/bin/xtext/game/impl/PersonneImpl.class and b/workspace/game/bin/xtext/game/impl/PersonneImpl.class differ
diff --git a/workspace/game/bin/xtext/game/impl/TerritoireImpl.class b/workspace/game/bin/xtext/game/impl/TerritoireImpl.class
index e9069a1..9413cec 100644
Binary files a/workspace/game/bin/xtext/game/impl/TerritoireImpl.class and b/workspace/game/bin/xtext/game/impl/TerritoireImpl.class differ
diff --git a/workspace/game/bin/xtext/game/impl/TransformationImpl.class b/workspace/game/bin/xtext/game/impl/TransformationImpl.class
index 29e84f9..4e9693e 100644
Binary files a/workspace/game/bin/xtext/game/impl/TransformationImpl.class and b/workspace/game/bin/xtext/game/impl/TransformationImpl.class differ
diff --git a/workspace/game/bin/xtext/game/util/GameAdapterFactory.class b/workspace/game/bin/xtext/game/util/GameAdapterFactory.class
index 20259b2..a8b5d6b 100644
Binary files a/workspace/game/bin/xtext/game/util/GameAdapterFactory.class and b/workspace/game/bin/xtext/game/util/GameAdapterFactory.class differ
diff --git a/workspace/game/bin/xtext/game/util/GameSwitch.class b/workspace/game/bin/xtext/game/util/GameSwitch.class
index aa303ba..7d45a00 100644
Binary files a/workspace/game/bin/xtext/game/util/GameSwitch.class and b/workspace/game/bin/xtext/game/util/GameSwitch.class differ
diff --git a/workspace/game/bin/xtext/generator/.GameGenerator.xtendbin b/workspace/game/bin/xtext/generator/.GameGenerator.xtendbin
index 4d0c9e6..1119808 100644
Binary files a/workspace/game/bin/xtext/generator/.GameGenerator.xtendbin and b/workspace/game/bin/xtext/generator/.GameGenerator.xtendbin differ
diff --git a/workspace/game/bin/xtext/generator/GameGenerator.class b/workspace/game/bin/xtext/generator/GameGenerator.class
index c9c35e4..b946db0 100644
Binary files a/workspace/game/bin/xtext/generator/GameGenerator.class and b/workspace/game/bin/xtext/generator/GameGenerator.class differ
diff --git a/workspace/game/bin/xtext/generator/GameGenerator.xtend b/workspace/game/bin/xtext/generator/GameGenerator.xtend
deleted file mode 100644
index 8ab531b..0000000
--- a/workspace/game/bin/xtext/generator/GameGenerator.xtend
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * generated by Xtext 2.23.0
- */
-package xtext.generator
-
-import org.eclipse.emf.ecore.resource.Resource
-import org.eclipse.xtext.generator.AbstractGenerator
-import org.eclipse.xtext.generator.IFileSystemAccess2
-import org.eclipse.xtext.generator.IGeneratorContext
-
-/**
- * Generates code from your model files on save.
- *
- * See https://www.eclipse.org/Xtext/documentation/303_runtime_concepts.html#code-generation
- */
-class GameGenerator extends AbstractGenerator {
-
- override void doGenerate(Resource resource, IFileSystemAccess2 fsa, IGeneratorContext context) {
-// fsa.generateFile('greetings.txt', 'People to greet: ' +
-// resource.allContents
-// .filter(Greeting)
-// .map[name]
-// .join(', '))
- }
-}
diff --git a/workspace/game/bin/xtext/parser/antlr/GameAntlrTokenFileProvider.class b/workspace/game/bin/xtext/parser/antlr/GameAntlrTokenFileProvider.class
index 740df99..0a1c952 100644
Binary files a/workspace/game/bin/xtext/parser/antlr/GameAntlrTokenFileProvider.class and b/workspace/game/bin/xtext/parser/antlr/GameAntlrTokenFileProvider.class differ
diff --git a/workspace/game/bin/xtext/parser/antlr/GameParser.class b/workspace/game/bin/xtext/parser/antlr/GameParser.class
index 09e94ca..9b455f4 100644
Binary files a/workspace/game/bin/xtext/parser/antlr/GameParser.class and b/workspace/game/bin/xtext/parser/antlr/GameParser.class differ
diff --git a/workspace/game/bin/xtext/parser/antlr/internal/InternalGameLexer$DFA12.class b/workspace/game/bin/xtext/parser/antlr/internal/InternalGameLexer$DFA12.class
index 292d7e0..087d08e 100644
Binary files a/workspace/game/bin/xtext/parser/antlr/internal/InternalGameLexer$DFA12.class and b/workspace/game/bin/xtext/parser/antlr/internal/InternalGameLexer$DFA12.class differ
diff --git a/workspace/game/bin/xtext/parser/antlr/internal/InternalGameLexer.class b/workspace/game/bin/xtext/parser/antlr/internal/InternalGameLexer.class
index 32ac2d9..3a7e0bd 100644
Binary files a/workspace/game/bin/xtext/parser/antlr/internal/InternalGameLexer.class and b/workspace/game/bin/xtext/parser/antlr/internal/InternalGameLexer.class differ
diff --git a/workspace/game/bin/xtext/parser/antlr/internal/InternalGameParser.class b/workspace/game/bin/xtext/parser/antlr/internal/InternalGameParser.class
index 9c08ba0..1e5ea21 100644
Binary files a/workspace/game/bin/xtext/parser/antlr/internal/InternalGameParser.class and b/workspace/game/bin/xtext/parser/antlr/internal/InternalGameParser.class differ
diff --git a/workspace/game/bin/xtext/scoping/AbstractGameScopeProvider.class b/workspace/game/bin/xtext/scoping/AbstractGameScopeProvider.class
index af399db..1e8c263 100644
Binary files a/workspace/game/bin/xtext/scoping/AbstractGameScopeProvider.class and b/workspace/game/bin/xtext/scoping/AbstractGameScopeProvider.class differ
diff --git a/workspace/game/bin/xtext/scoping/GameScopeProvider.class b/workspace/game/bin/xtext/scoping/GameScopeProvider.class
index acaf6eb..12427a2 100644
Binary files a/workspace/game/bin/xtext/scoping/GameScopeProvider.class and b/workspace/game/bin/xtext/scoping/GameScopeProvider.class differ
diff --git a/workspace/game/bin/xtext/serializer/GameSemanticSequencer.class b/workspace/game/bin/xtext/serializer/GameSemanticSequencer.class
index dceac9a..655f1ed 100644
Binary files a/workspace/game/bin/xtext/serializer/GameSemanticSequencer.class and b/workspace/game/bin/xtext/serializer/GameSemanticSequencer.class differ
diff --git a/workspace/game/bin/xtext/serializer/GameSyntacticSequencer.class b/workspace/game/bin/xtext/serializer/GameSyntacticSequencer.class
index ccfe568..ea390f2 100644
Binary files a/workspace/game/bin/xtext/serializer/GameSyntacticSequencer.class and b/workspace/game/bin/xtext/serializer/GameSyntacticSequencer.class differ
diff --git a/workspace/game/bin/xtext/services/GameGrammarAccess$ActionElements.class b/workspace/game/bin/xtext/services/GameGrammarAccess$ActionElements.class
index 6771d99..de3922f 100644
Binary files a/workspace/game/bin/xtext/services/GameGrammarAccess$ActionElements.class and b/workspace/game/bin/xtext/services/GameGrammarAccess$ActionElements.class differ
diff --git a/workspace/game/bin/xtext/services/GameGrammarAccess$AntiConditionConnaissanceElements.class b/workspace/game/bin/xtext/services/GameGrammarAccess$AntiConditionConnaissanceElements.class
index 1fe2d3f..f1de71a 100644
Binary files a/workspace/game/bin/xtext/services/GameGrammarAccess$AntiConditionConnaissanceElements.class and b/workspace/game/bin/xtext/services/GameGrammarAccess$AntiConditionConnaissanceElements.class differ
diff --git a/workspace/game/bin/xtext/services/GameGrammarAccess$CheminElements.class b/workspace/game/bin/xtext/services/GameGrammarAccess$CheminElements.class
index 859014f..b95b4d5 100644
Binary files a/workspace/game/bin/xtext/services/GameGrammarAccess$CheminElements.class and b/workspace/game/bin/xtext/services/GameGrammarAccess$CheminElements.class differ
diff --git a/workspace/game/bin/xtext/services/GameGrammarAccess$ComparateurElements.class b/workspace/game/bin/xtext/services/GameGrammarAccess$ComparateurElements.class
index faac0b2..47dc825 100644
Binary files a/workspace/game/bin/xtext/services/GameGrammarAccess$ComparateurElements.class and b/workspace/game/bin/xtext/services/GameGrammarAccess$ComparateurElements.class differ
diff --git a/workspace/game/bin/xtext/services/GameGrammarAccess$ConditionConnaissanceElements.class b/workspace/game/bin/xtext/services/GameGrammarAccess$ConditionConnaissanceElements.class
index a483293..dbe4523 100644
Binary files a/workspace/game/bin/xtext/services/GameGrammarAccess$ConditionConnaissanceElements.class and b/workspace/game/bin/xtext/services/GameGrammarAccess$ConditionConnaissanceElements.class differ
diff --git a/workspace/game/bin/xtext/services/GameGrammarAccess$ConditionElements.class b/workspace/game/bin/xtext/services/GameGrammarAccess$ConditionElements.class
index ea6758f..a4cb6c9 100644
Binary files a/workspace/game/bin/xtext/services/GameGrammarAccess$ConditionElements.class and b/workspace/game/bin/xtext/services/GameGrammarAccess$ConditionElements.class differ
diff --git a/workspace/game/bin/xtext/services/GameGrammarAccess$ConditionEtElements.class b/workspace/game/bin/xtext/services/GameGrammarAccess$ConditionEtElements.class
index 2cd10a7..00f1fb3 100644
Binary files a/workspace/game/bin/xtext/services/GameGrammarAccess$ConditionEtElements.class and b/workspace/game/bin/xtext/services/GameGrammarAccess$ConditionEtElements.class differ
diff --git a/workspace/game/bin/xtext/services/GameGrammarAccess$ConditionObjetElements.class b/workspace/game/bin/xtext/services/GameGrammarAccess$ConditionObjetElements.class
index 678215a..94aed1f 100644
Binary files a/workspace/game/bin/xtext/services/GameGrammarAccess$ConditionObjetElements.class and b/workspace/game/bin/xtext/services/GameGrammarAccess$ConditionObjetElements.class differ
diff --git a/workspace/game/bin/xtext/services/GameGrammarAccess$ConditionTestElements.class b/workspace/game/bin/xtext/services/GameGrammarAccess$ConditionTestElements.class
index 3bbbf0d..81a6e34 100644
Binary files a/workspace/game/bin/xtext/services/GameGrammarAccess$ConditionTestElements.class and b/workspace/game/bin/xtext/services/GameGrammarAccess$ConditionTestElements.class differ
diff --git a/workspace/game/bin/xtext/services/GameGrammarAccess$ConnaissanceElements.class b/workspace/game/bin/xtext/services/GameGrammarAccess$ConnaissanceElements.class
index 3ff5169..b0ffc8d 100644
Binary files a/workspace/game/bin/xtext/services/GameGrammarAccess$ConnaissanceElements.class and b/workspace/game/bin/xtext/services/GameGrammarAccess$ConnaissanceElements.class differ
diff --git a/workspace/game/bin/xtext/services/GameGrammarAccess$DescriptionElements.class b/workspace/game/bin/xtext/services/GameGrammarAccess$DescriptionElements.class
index 22dfa15..9636932 100644
Binary files a/workspace/game/bin/xtext/services/GameGrammarAccess$DescriptionElements.class and b/workspace/game/bin/xtext/services/GameGrammarAccess$DescriptionElements.class differ
diff --git a/workspace/game/bin/xtext/services/GameGrammarAccess$ExplorateurElements.class b/workspace/game/bin/xtext/services/GameGrammarAccess$ExplorateurElements.class
index b627ade..a732eee 100644
Binary files a/workspace/game/bin/xtext/services/GameGrammarAccess$ExplorateurElements.class and b/workspace/game/bin/xtext/services/GameGrammarAccess$ExplorateurElements.class differ
diff --git a/workspace/game/bin/xtext/services/GameGrammarAccess$InterractionElements.class b/workspace/game/bin/xtext/services/GameGrammarAccess$InterractionElements.class
index 5d66ce4..d9ad700 100644
Binary files a/workspace/game/bin/xtext/services/GameGrammarAccess$InterractionElements.class and b/workspace/game/bin/xtext/services/GameGrammarAccess$InterractionElements.class differ
diff --git a/workspace/game/bin/xtext/services/GameGrammarAccess$JeuElements.class b/workspace/game/bin/xtext/services/GameGrammarAccess$JeuElements.class
index 20248e3..2defa5f 100644
Binary files a/workspace/game/bin/xtext/services/GameGrammarAccess$JeuElements.class and b/workspace/game/bin/xtext/services/GameGrammarAccess$JeuElements.class differ
diff --git a/workspace/game/bin/xtext/services/GameGrammarAccess$LieuElements.class b/workspace/game/bin/xtext/services/GameGrammarAccess$LieuElements.class
index a40c53a..3ba1128 100644
Binary files a/workspace/game/bin/xtext/services/GameGrammarAccess$LieuElements.class and b/workspace/game/bin/xtext/services/GameGrammarAccess$LieuElements.class differ
diff --git a/workspace/game/bin/xtext/services/GameGrammarAccess$NomElements.class b/workspace/game/bin/xtext/services/GameGrammarAccess$NomElements.class
index f56773c..6e6de0f 100644
Binary files a/workspace/game/bin/xtext/services/GameGrammarAccess$NomElements.class and b/workspace/game/bin/xtext/services/GameGrammarAccess$NomElements.class differ
diff --git a/workspace/game/bin/xtext/services/GameGrammarAccess$ObjetElements.class b/workspace/game/bin/xtext/services/GameGrammarAccess$ObjetElements.class
index 6138d99..3202054 100644
Binary files a/workspace/game/bin/xtext/services/GameGrammarAccess$ObjetElements.class and b/workspace/game/bin/xtext/services/GameGrammarAccess$ObjetElements.class differ
diff --git a/workspace/game/bin/xtext/services/GameGrammarAccess$PersonneElements.class b/workspace/game/bin/xtext/services/GameGrammarAccess$PersonneElements.class
index 62c3674..b4d6439 100644
Binary files a/workspace/game/bin/xtext/services/GameGrammarAccess$PersonneElements.class and b/workspace/game/bin/xtext/services/GameGrammarAccess$PersonneElements.class differ
diff --git a/workspace/game/bin/xtext/services/GameGrammarAccess$TerritoireElements.class b/workspace/game/bin/xtext/services/GameGrammarAccess$TerritoireElements.class
index 5c61e9e..0279c76 100644
Binary files a/workspace/game/bin/xtext/services/GameGrammarAccess$TerritoireElements.class and b/workspace/game/bin/xtext/services/GameGrammarAccess$TerritoireElements.class differ
diff --git a/workspace/game/bin/xtext/services/GameGrammarAccess$TransformationElements.class b/workspace/game/bin/xtext/services/GameGrammarAccess$TransformationElements.class
index c59533b..a38c239 100644
Binary files a/workspace/game/bin/xtext/services/GameGrammarAccess$TransformationElements.class and b/workspace/game/bin/xtext/services/GameGrammarAccess$TransformationElements.class differ
diff --git a/workspace/game/bin/xtext/services/GameGrammarAccess.class b/workspace/game/bin/xtext/services/GameGrammarAccess.class
index 622d256..d400077 100644
Binary files a/workspace/game/bin/xtext/services/GameGrammarAccess.class and b/workspace/game/bin/xtext/services/GameGrammarAccess.class differ
diff --git a/workspace/game/bin/xtext/validation/AbstractGameValidator.class b/workspace/game/bin/xtext/validation/AbstractGameValidator.class
index 1e9b1e3..f71a9a5 100644
Binary files a/workspace/game/bin/xtext/validation/AbstractGameValidator.class and b/workspace/game/bin/xtext/validation/AbstractGameValidator.class differ
diff --git a/workspace/game/bin/xtext/validation/GameConfigurableIssueCodesProvider.class b/workspace/game/bin/xtext/validation/GameConfigurableIssueCodesProvider.class
index f4d0c88..0ddcb2b 100644
Binary files a/workspace/game/bin/xtext/validation/GameConfigurableIssueCodesProvider.class and b/workspace/game/bin/xtext/validation/GameConfigurableIssueCodesProvider.class differ
diff --git a/workspace/game/bin/xtext/validation/GameValidator.class b/workspace/game/bin/xtext/validation/GameValidator.class
index e8052c6..fe0db24 100644
Binary files a/workspace/game/bin/xtext/validation/GameValidator.class and b/workspace/game/bin/xtext/validation/GameValidator.class differ
diff --git a/workspace/game/xtend-gen/xtext/generator/.GameGenerator.xtendbin b/workspace/game/xtend-gen/xtext/generator/.GameGenerator.xtendbin
index 4d0c9e6..1119808 100644
Binary files a/workspace/game/xtend-gen/xtext/generator/.GameGenerator.xtendbin and b/workspace/game/xtend-gen/xtext/generator/.GameGenerator.xtendbin differ
diff --git a/workspace/game/xtend-gen/xtext/generator/.gitignore b/workspace/game/xtend-gen/xtext/generator/.gitignore
new file mode 100644
index 0000000..3674055
--- /dev/null
+++ b/workspace/game/xtend-gen/xtext/generator/.gitignore
@@ -0,0 +1,3 @@
+/.GameGenerator.java._trace
+/.GameGenerator.xtendbin
+/GameGenerator.java