فهرست منبع

Moved Event Direction and VariableDeclaration modifier to base types

Andreas Mülder 10 سال پیش
والد
کامیت
3c5e01378b

+ 7 - 0
plugins/org.yakindu.base.types.edit/plugin.properties

@@ -185,3 +185,10 @@ _UI_TypeAlias_type = Type Alias
 _UI_Package_domain_feature = Domain
 _UI_Domain_domainID_feature = Domain ID
 _UI_Declaration_type = Declaration
+_UI_Property_const_feature = Const
+_UI_Property_readonly_feature = Readonly
+_UI_Property_external_feature = External
+_UI_Event_direction_feature = Direction
+_UI_Direction_LOCAL_literal = local
+_UI_Direction_IN_literal = in
+_UI_Direction_OUT_literal = out

+ 33 - 0
plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/EventItemProvider.java

@@ -12,8 +12,12 @@ import java.util.List;
 
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
 import org.yakindu.base.types.Event;
+import org.yakindu.base.types.TypesPackage;
 
 /**
  * This is the item provider adapter for a {@link org.yakindu.base.types.Event} object.
@@ -44,10 +48,33 @@ public class EventItemProvider
 		if (itemPropertyDescriptors == null) {
 			super.getPropertyDescriptors(object);
 
+			addDirectionPropertyDescriptor(object);
 		}
 		return itemPropertyDescriptors;
 	}
 
+	/**
+	 * This adds a property descriptor for the Direction feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addDirectionPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Event_direction_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Event_direction_feature", "_UI_Event_type"),
+				 TypesPackage.Literals.EVENT__DIRECTION,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
 	/**
 	 * This returns Event.gif.
 	 * <!-- begin-user-doc -->
@@ -83,6 +110,12 @@ public class EventItemProvider
 	@Override
 	public void notifyChanged(Notification notification) {
 		updateChildren(notification);
+
+		switch (notification.getFeatureID(Event.class)) {
+			case TypesPackage.EVENT__DIRECTION:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
 		super.notifyChanged(notification);
 	}
 

+ 81 - 0
plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/PropertyItemProvider.java

@@ -12,8 +12,12 @@ import java.util.List;
 
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
 import org.yakindu.base.types.Property;
+import org.yakindu.base.types.TypesPackage;
 
 /**
  * This is the item provider adapter for a {@link org.yakindu.base.types.Property} object.
@@ -44,10 +48,79 @@ public class PropertyItemProvider
 		if (itemPropertyDescriptors == null) {
 			super.getPropertyDescriptors(object);
 
+			addConstPropertyDescriptor(object);
+			addReadonlyPropertyDescriptor(object);
+			addExternalPropertyDescriptor(object);
 		}
 		return itemPropertyDescriptors;
 	}
 
+	/**
+	 * This adds a property descriptor for the Const feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addConstPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Property_const_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Property_const_feature", "_UI_Property_type"),
+				 TypesPackage.Literals.PROPERTY__CONST,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Readonly feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addReadonlyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Property_readonly_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Property_readonly_feature", "_UI_Property_type"),
+				 TypesPackage.Literals.PROPERTY__READONLY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the External feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addExternalPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Property_external_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Property_external_feature", "_UI_Property_type"),
+				 TypesPackage.Literals.PROPERTY__EXTERNAL,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
 	/**
 	 * This returns Property.gif.
 	 * <!-- begin-user-doc -->
@@ -83,6 +156,14 @@ public class PropertyItemProvider
 	@Override
 	public void notifyChanged(Notification notification) {
 		updateChildren(notification);
+
+		switch (notification.getFeatureID(Property.class)) {
+			case TypesPackage.PROPERTY__CONST:
+			case TypesPackage.PROPERTY__READONLY:
+			case TypesPackage.PROPERTY__EXTERNAL:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
 		super.notifyChanged(notification);
 	}
 

+ 13 - 2
plugins/org.yakindu.base.types/model/types.ecore

@@ -18,7 +18,11 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
         eType="#//Parameter" containment="true" eOpposite="#//Parameter/owningOperation"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Property" eSuperTypes="#//Declaration"/>
+  <eClassifiers xsi:type="ecore:EClass" name="Property" eSuperTypes="#//Declaration">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="const" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="readonly" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="external" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+  </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="Parameter" eSuperTypes="#//TypedElement base.ecore#//NamedElement">
     <eStructuralFeatures xsi:type="ecore:EReference" name="owningOperation" eType="#//Operation"
         eOpposite="#//Operation/parameters"/>
@@ -28,7 +32,14 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="typeArguments" upperBound="-1"
         eType="#//Type"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Event" eSuperTypes="#//Declaration"/>
+  <eClassifiers xsi:type="ecore:EClass" name="Event" eSuperTypes="#//Declaration">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="direction" eType="#//Direction"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="Direction">
+    <eLiterals name="LOCAL" literal="local"/>
+    <eLiterals name="IN" value="1" literal="in"/>
+    <eLiterals name="OUT" value="2" literal="out"/>
+  </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="EnumerationType" eSuperTypes="#//PrimitiveType">
     <eStructuralFeatures xsi:type="ecore:EReference" name="enumerator" upperBound="-1"
         eType="#//Enumerator" containment="true" eOpposite="#//Enumerator/owningEnumeration"/>

+ 235 - 0
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/Direction.java

@@ -0,0 +1,235 @@
+/**
+ */
+package org.yakindu.base.types;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Direction</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.yakindu.base.types.TypesPackage#getDirection()
+ * @model
+ * @generated
+ */
+public enum Direction implements Enumerator {
+	/**
+	 * The '<em><b>LOCAL</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #LOCAL_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	LOCAL(0, "LOCAL", "local"),
+
+	/**
+	 * The '<em><b>IN</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #IN_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	IN(1, "IN", "in"),
+
+	/**
+	 * The '<em><b>OUT</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #OUT_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	OUT(2, "OUT", "out");
+
+	/**
+	 * The '<em><b>LOCAL</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>LOCAL</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #LOCAL
+	 * @model literal="local"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LOCAL_VALUE = 0;
+
+	/**
+	 * The '<em><b>IN</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>IN</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #IN
+	 * @model literal="in"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int IN_VALUE = 1;
+
+	/**
+	 * The '<em><b>OUT</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>OUT</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #OUT
+	 * @model literal="out"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int OUT_VALUE = 2;
+
+	/**
+	 * An array of all the '<em><b>Direction</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final Direction[] VALUES_ARRAY =
+		new Direction[] {
+			LOCAL,
+			IN,
+			OUT,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Direction</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<Direction> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Direction</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static Direction get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			Direction result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Direction</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static Direction getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			Direction result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Direction</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static Direction get(int value) {
+		switch (value) {
+			case LOCAL_VALUE: return LOCAL;
+			case IN_VALUE: return IN;
+			case OUT_VALUE: return OUT;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private Direction(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+	  return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+	  return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+	  return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+	
+} //Direction

+ 35 - 0
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/Event.java

@@ -12,10 +12,45 @@ package org.yakindu.base.types;
  * A representation of the model object '<em><b>Event</b></em>'.
  * <!-- end-user-doc -->
  *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.yakindu.base.types.Event#getDirection <em>Direction</em>}</li>
+ * </ul>
+ * </p>
  *
  * @see org.yakindu.base.types.TypesPackage#getEvent()
  * @model
  * @generated
  */
 public interface Event extends Declaration {
+
+	/**
+	 * Returns the value of the '<em><b>Direction</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.yakindu.base.types.Direction}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Direction</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Direction</em>' attribute.
+	 * @see org.yakindu.base.types.Direction
+	 * @see #setDirection(Direction)
+	 * @see org.yakindu.base.types.TypesPackage#getEvent_Direction()
+	 * @model
+	 * @generated
+	 */
+	Direction getDirection();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.base.types.Event#getDirection <em>Direction</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Direction</em>' attribute.
+	 * @see org.yakindu.base.types.Direction
+	 * @see #getDirection()
+	 * @generated
+	 */
+	void setDirection(Direction value);
 } // Event

+ 86 - 0
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/Property.java

@@ -12,10 +12,96 @@ package org.yakindu.base.types;
  * A representation of the model object '<em><b>Property</b></em>'.
  * <!-- end-user-doc -->
  *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.yakindu.base.types.Property#isConst <em>Const</em>}</li>
+ *   <li>{@link org.yakindu.base.types.Property#isReadonly <em>Readonly</em>}</li>
+ *   <li>{@link org.yakindu.base.types.Property#isExternal <em>External</em>}</li>
+ * </ul>
+ * </p>
  *
  * @see org.yakindu.base.types.TypesPackage#getProperty()
  * @model
  * @generated
  */
 public interface Property extends Declaration {
+
+	/**
+	 * Returns the value of the '<em><b>Const</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Const</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Const</em>' attribute.
+	 * @see #setConst(boolean)
+	 * @see org.yakindu.base.types.TypesPackage#getProperty_Const()
+	 * @model
+	 * @generated
+	 */
+	boolean isConst();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.base.types.Property#isConst <em>Const</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Const</em>' attribute.
+	 * @see #isConst()
+	 * @generated
+	 */
+	void setConst(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Readonly</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Readonly</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Readonly</em>' attribute.
+	 * @see #setReadonly(boolean)
+	 * @see org.yakindu.base.types.TypesPackage#getProperty_Readonly()
+	 * @model
+	 * @generated
+	 */
+	boolean isReadonly();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.base.types.Property#isReadonly <em>Readonly</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Readonly</em>' attribute.
+	 * @see #isReadonly()
+	 * @generated
+	 */
+	void setReadonly(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>External</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>External</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>External</em>' attribute.
+	 * @see #setExternal(boolean)
+	 * @see org.yakindu.base.types.TypesPackage#getProperty_External()
+	 * @model
+	 * @generated
+	 */
+	boolean isExternal();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.base.types.Property#isExternal <em>External</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>External</em>' attribute.
+	 * @see #isExternal()
+	 * @generated
+	 */
+	void setExternal(boolean value);
 } // Property

+ 145 - 2
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/TypesPackage.java

@@ -8,6 +8,7 @@ package org.yakindu.base.types;
 
 import org.eclipse.emf.ecore.EAttribute;
 import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EEnum;
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.EReference;
 import org.yakindu.base.base.BasePackage;
@@ -365,6 +366,33 @@ public interface TypesPackage extends EPackage {
 	 */
 	int PROPERTY__NAME = DECLARATION__NAME;
 
+	/**
+	 * The feature id for the '<em><b>Const</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY__CONST = DECLARATION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Readonly</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY__READONLY = DECLARATION_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>External</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY__EXTERNAL = DECLARATION_FEATURE_COUNT + 2;
+
 	/**
 	 * The number of structural features of the '<em>Property</em>' class.
 	 * <!-- begin-user-doc -->
@@ -372,7 +400,7 @@ public interface TypesPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int PROPERTY_FEATURE_COUNT = DECLARATION_FEATURE_COUNT + 0;
+	int PROPERTY_FEATURE_COUNT = DECLARATION_FEATURE_COUNT + 3;
 
 	/**
 	 * The feature id for the '<em><b>Type</b></em>' reference.
@@ -457,6 +485,15 @@ public interface TypesPackage extends EPackage {
 	 */
 	int EVENT__NAME = DECLARATION__NAME;
 
+	/**
+	 * The feature id for the '<em><b>Direction</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVENT__DIRECTION = DECLARATION_FEATURE_COUNT + 0;
+
 	/**
 	 * The number of structural features of the '<em>Event</em>' class.
 	 * <!-- begin-user-doc -->
@@ -464,7 +501,7 @@ public interface TypesPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int EVENT_FEATURE_COUNT = DECLARATION_FEATURE_COUNT + 0;
+	int EVENT_FEATURE_COUNT = DECLARATION_FEATURE_COUNT + 1;
 
 
 	/**
@@ -982,6 +1019,16 @@ public interface TypesPackage extends EPackage {
 	 */
 	int TYPE_ALIAS_FEATURE_COUNT = TYPED_ELEMENT_FEATURE_COUNT + 3;
 
+	/**
+	 * The meta object id for the '{@link org.yakindu.base.types.Direction <em>Direction</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.yakindu.base.types.Direction
+	 * @see org.yakindu.base.types.impl.TypesPackageImpl#getDirection()
+	 * @generated
+	 */
+	int DIRECTION = 19;
+
 	/**
 	 * Returns the meta object for class '{@link org.yakindu.base.types.Package <em>Package</em>}'.
 	 * <!-- begin-user-doc -->
@@ -1087,6 +1134,39 @@ public interface TypesPackage extends EPackage {
 	 */
 	EClass getProperty();
 
+	/**
+	 * Returns the meta object for the attribute '{@link org.yakindu.base.types.Property#isConst <em>Const</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Const</em>'.
+	 * @see org.yakindu.base.types.Property#isConst()
+	 * @see #getProperty()
+	 * @generated
+	 */
+	EAttribute getProperty_Const();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.yakindu.base.types.Property#isReadonly <em>Readonly</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Readonly</em>'.
+	 * @see org.yakindu.base.types.Property#isReadonly()
+	 * @see #getProperty()
+	 * @generated
+	 */
+	EAttribute getProperty_Readonly();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.yakindu.base.types.Property#isExternal <em>External</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>External</em>'.
+	 * @see org.yakindu.base.types.Property#isExternal()
+	 * @see #getProperty()
+	 * @generated
+	 */
+	EAttribute getProperty_External();
+
 	/**
 	 * Returns the meta object for class '{@link org.yakindu.base.types.Parameter <em>Parameter</em>}'.
 	 * <!-- begin-user-doc -->
@@ -1150,6 +1230,17 @@ public interface TypesPackage extends EPackage {
 	 */
 	EClass getEvent();
 
+	/**
+	 * Returns the meta object for the attribute '{@link org.yakindu.base.types.Event#getDirection <em>Direction</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Direction</em>'.
+	 * @see org.yakindu.base.types.Event#getDirection()
+	 * @see #getEvent()
+	 * @generated
+	 */
+	EAttribute getEvent_Direction();
+
 	/**
 	 * Returns the meta object for class '{@link org.yakindu.base.types.EnumerationType <em>Enumeration Type</em>}'.
 	 * <!-- begin-user-doc -->
@@ -1392,6 +1483,16 @@ public interface TypesPackage extends EPackage {
 	 */
 	EClass getTypeAlias();
 
+	/**
+	 * Returns the meta object for enum '{@link org.yakindu.base.types.Direction <em>Direction</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Direction</em>'.
+	 * @see org.yakindu.base.types.Direction
+	 * @generated
+	 */
+	EEnum getDirection();
+
 	/**
 	 * Returns the factory that creates the instances of the model.
 	 * <!-- begin-user-doc -->
@@ -1504,6 +1605,30 @@ public interface TypesPackage extends EPackage {
 		 */
 		EClass PROPERTY = eINSTANCE.getProperty();
 
+		/**
+		 * The meta object literal for the '<em><b>Const</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PROPERTY__CONST = eINSTANCE.getProperty_Const();
+
+		/**
+		 * The meta object literal for the '<em><b>Readonly</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PROPERTY__READONLY = eINSTANCE.getProperty_Readonly();
+
+		/**
+		 * The meta object literal for the '<em><b>External</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PROPERTY__EXTERNAL = eINSTANCE.getProperty_External();
+
 		/**
 		 * The meta object literal for the '{@link org.yakindu.base.types.impl.ParameterImpl <em>Parameter</em>}' class.
 		 * <!-- begin-user-doc -->
@@ -1558,6 +1683,14 @@ public interface TypesPackage extends EPackage {
 		 */
 		EClass EVENT = eINSTANCE.getEvent();
 
+		/**
+		 * The meta object literal for the '<em><b>Direction</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute EVENT__DIRECTION = eINSTANCE.getEvent_Direction();
+
 		/**
 		 * The meta object literal for the '{@link org.yakindu.base.types.impl.EnumerationTypeImpl <em>Enumeration Type</em>}' class.
 		 * <!-- begin-user-doc -->
@@ -1764,6 +1897,16 @@ public interface TypesPackage extends EPackage {
 		 */
 		EClass TYPE_ALIAS = eINSTANCE.getTypeAlias();
 
+		/**
+		 * The meta object literal for the '{@link org.yakindu.base.types.Direction <em>Direction</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.yakindu.base.types.Direction
+		 * @see org.yakindu.base.types.impl.TypesPackageImpl#getDirection()
+		 * @generated
+		 */
+		EEnum DIRECTION = eINSTANCE.getDirection();
+
 	}
 
 } //TypesPackage

+ 121 - 0
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/EventImpl.java

@@ -6,7 +6,10 @@
  */
 package org.yakindu.base.types.impl;
 
+import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.yakindu.base.types.Direction;
 import org.yakindu.base.types.Event;
 import org.yakindu.base.types.TypesPackage;
 
@@ -15,11 +18,34 @@ import org.yakindu.base.types.TypesPackage;
  * An implementation of the model object '<em><b>Event</b></em>'.
  * <!-- end-user-doc -->
  * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.yakindu.base.types.impl.EventImpl#getDirection <em>Direction</em>}</li>
+ * </ul>
  * </p>
  *
  * @generated
  */
 public class EventImpl extends DeclarationImpl implements Event {
+	/**
+	 * The default value of the '{@link #getDirection() <em>Direction</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDirection()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final Direction DIRECTION_EDEFAULT = Direction.LOCAL;
+	/**
+	 * The cached value of the '{@link #getDirection() <em>Direction</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDirection()
+	 * @generated
+	 * @ordered
+	 */
+	protected Direction direction = DIRECTION_EDEFAULT;
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -39,4 +65,99 @@ public class EventImpl extends DeclarationImpl implements Event {
 		return TypesPackage.Literals.EVENT;
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Direction getDirection() {
+		return direction;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDirection(Direction newDirection) {
+		Direction oldDirection = direction;
+		direction = newDirection == null ? DIRECTION_EDEFAULT : newDirection;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, TypesPackage.EVENT__DIRECTION, oldDirection, direction));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case TypesPackage.EVENT__DIRECTION:
+				return getDirection();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case TypesPackage.EVENT__DIRECTION:
+				setDirection((Direction)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case TypesPackage.EVENT__DIRECTION:
+				setDirection(DIRECTION_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case TypesPackage.EVENT__DIRECTION:
+				return direction != DIRECTION_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(" (direction: ");
+		result.append(direction);
+		result.append(')');
+		return result.toString();
+	}
+
 } //EventImpl

+ 224 - 0
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/PropertyImpl.java

@@ -6,7 +6,9 @@
  */
 package org.yakindu.base.types.impl;
 
+import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.yakindu.base.types.Property;
 import org.yakindu.base.types.TypesPackage;
 
@@ -15,11 +17,72 @@ import org.yakindu.base.types.TypesPackage;
  * An implementation of the model object '<em><b>Property</b></em>'.
  * <!-- end-user-doc -->
  * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.yakindu.base.types.impl.PropertyImpl#isConst <em>Const</em>}</li>
+ *   <li>{@link org.yakindu.base.types.impl.PropertyImpl#isReadonly <em>Readonly</em>}</li>
+ *   <li>{@link org.yakindu.base.types.impl.PropertyImpl#isExternal <em>External</em>}</li>
+ * </ul>
  * </p>
  *
  * @generated
  */
 public class PropertyImpl extends DeclarationImpl implements Property {
+	/**
+	 * The default value of the '{@link #isConst() <em>Const</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isConst()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean CONST_EDEFAULT = false;
+	/**
+	 * The cached value of the '{@link #isConst() <em>Const</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isConst()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean const_ = CONST_EDEFAULT;
+	/**
+	 * The default value of the '{@link #isReadonly() <em>Readonly</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isReadonly()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean READONLY_EDEFAULT = false;
+	/**
+	 * The cached value of the '{@link #isReadonly() <em>Readonly</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isReadonly()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean readonly = READONLY_EDEFAULT;
+	/**
+	 * The default value of the '{@link #isExternal() <em>External</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isExternal()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean EXTERNAL_EDEFAULT = false;
+	/**
+	 * The cached value of the '{@link #isExternal() <em>External</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isExternal()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean external = EXTERNAL_EDEFAULT;
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -39,4 +102,165 @@ public class PropertyImpl extends DeclarationImpl implements Property {
 		return TypesPackage.Literals.PROPERTY;
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isConst() {
+		return const_;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setConst(boolean newConst) {
+		boolean oldConst = const_;
+		const_ = newConst;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, TypesPackage.PROPERTY__CONST, oldConst, const_));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isReadonly() {
+		return readonly;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setReadonly(boolean newReadonly) {
+		boolean oldReadonly = readonly;
+		readonly = newReadonly;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, TypesPackage.PROPERTY__READONLY, oldReadonly, readonly));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isExternal() {
+		return external;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setExternal(boolean newExternal) {
+		boolean oldExternal = external;
+		external = newExternal;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, TypesPackage.PROPERTY__EXTERNAL, oldExternal, external));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case TypesPackage.PROPERTY__CONST:
+				return isConst();
+			case TypesPackage.PROPERTY__READONLY:
+				return isReadonly();
+			case TypesPackage.PROPERTY__EXTERNAL:
+				return isExternal();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case TypesPackage.PROPERTY__CONST:
+				setConst((Boolean)newValue);
+				return;
+			case TypesPackage.PROPERTY__READONLY:
+				setReadonly((Boolean)newValue);
+				return;
+			case TypesPackage.PROPERTY__EXTERNAL:
+				setExternal((Boolean)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case TypesPackage.PROPERTY__CONST:
+				setConst(CONST_EDEFAULT);
+				return;
+			case TypesPackage.PROPERTY__READONLY:
+				setReadonly(READONLY_EDEFAULT);
+				return;
+			case TypesPackage.PROPERTY__EXTERNAL:
+				setExternal(EXTERNAL_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case TypesPackage.PROPERTY__CONST:
+				return const_ != CONST_EDEFAULT;
+			case TypesPackage.PROPERTY__READONLY:
+				return readonly != READONLY_EDEFAULT;
+			case TypesPackage.PROPERTY__EXTERNAL:
+				return external != EXTERNAL_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(" (const: ");
+		result.append(const_);
+		result.append(", readonly: ");
+		result.append(readonly);
+		result.append(", external: ");
+		result.append(external);
+		result.append(')');
+		return result.toString();
+	}
+
 } //PropertyImpl

+ 52 - 0
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/TypesFactoryImpl.java

@@ -7,11 +7,13 @@
 package org.yakindu.base.types.impl;
 
 import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
 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 org.yakindu.base.types.ComplexType;
+import org.yakindu.base.types.Direction;
 import org.yakindu.base.types.Domain;
 import org.yakindu.base.types.EnumerationType;
 import org.yakindu.base.types.Enumerator;
@@ -94,6 +96,36 @@ public class TypesFactoryImpl extends EFactoryImpl implements TypesFactory {
 		}
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object createFromString(EDataType eDataType, String initialValue) {
+		switch (eDataType.getClassifierID()) {
+			case TypesPackage.DIRECTION:
+				return createDirectionFromString(eDataType, initialValue);
+			default:
+				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String convertToString(EDataType eDataType, Object instanceValue) {
+		switch (eDataType.getClassifierID()) {
+			case TypesPackage.DIRECTION:
+				return convertDirectionToString(eDataType, instanceValue);
+			default:
+				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+		}
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -254,6 +286,26 @@ public class TypesFactoryImpl extends EFactoryImpl implements TypesFactory {
 		return typeAlias;
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Direction createDirectionFromString(EDataType eDataType, String initialValue) {
+		Direction result = Direction.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertDirectionToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->

+ 71 - 0
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/TypesPackageImpl.java

@@ -8,12 +8,14 @@ package org.yakindu.base.types.impl;
 
 import org.eclipse.emf.ecore.EAttribute;
 import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EEnum;
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.EReference;
 import org.eclipse.emf.ecore.impl.EPackageImpl;
 import org.yakindu.base.base.BasePackage;
 import org.yakindu.base.types.ComplexType;
 import org.yakindu.base.types.Declaration;
+import org.yakindu.base.types.Direction;
 import org.yakindu.base.types.Domain;
 import org.yakindu.base.types.EnumerationType;
 import org.yakindu.base.types.Enumerator;
@@ -162,6 +164,13 @@ public class TypesPackageImpl extends EPackageImpl implements TypesPackage {
 	 */
 	private EClass typeAliasEClass = null;
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum directionEEnum = null;
+
 	/**
 	 * Creates an instance of the model <b>Package</b>, registered with
 	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the
@@ -311,6 +320,33 @@ public class TypesPackageImpl extends EPackageImpl implements TypesPackage {
 		return propertyEClass;
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getProperty_Const() {
+		return (EAttribute)propertyEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getProperty_Readonly() {
+		return (EAttribute)propertyEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getProperty_External() {
+		return (EAttribute)propertyEClass.getEStructuralFeatures().get(2);
+	}
+
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
 	 * @generated
@@ -360,6 +396,15 @@ public class TypesPackageImpl extends EPackageImpl implements TypesPackage {
 		return eventEClass;
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getEvent_Direction() {
+		return (EAttribute)eventEClass.getEStructuralFeatures().get(0);
+	}
+
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
 	 * @generated
@@ -558,6 +603,15 @@ public class TypesPackageImpl extends EPackageImpl implements TypesPackage {
 		return typeAliasEClass;
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getDirection() {
+		return directionEEnum;
+	}
+
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
 	 * @generated
@@ -598,6 +652,9 @@ public class TypesPackageImpl extends EPackageImpl implements TypesPackage {
 		createEReference(operationEClass, OPERATION__PARAMETERS);
 
 		propertyEClass = createEClass(PROPERTY);
+		createEAttribute(propertyEClass, PROPERTY__CONST);
+		createEAttribute(propertyEClass, PROPERTY__READONLY);
+		createEAttribute(propertyEClass, PROPERTY__EXTERNAL);
 
 		parameterEClass = createEClass(PARAMETER);
 		createEReference(parameterEClass, PARAMETER__OWNING_OPERATION);
@@ -607,6 +664,7 @@ public class TypesPackageImpl extends EPackageImpl implements TypesPackage {
 		createEReference(typedElementEClass, TYPED_ELEMENT__TYPE_ARGUMENTS);
 
 		eventEClass = createEClass(EVENT);
+		createEAttribute(eventEClass, EVENT__DIRECTION);
 
 		enumerationTypeEClass = createEClass(ENUMERATION_TYPE);
 		createEReference(enumerationTypeEClass, ENUMERATION_TYPE__ENUMERATOR);
@@ -641,6 +699,9 @@ public class TypesPackageImpl extends EPackageImpl implements TypesPackage {
 		createEAttribute(domainEClass, DOMAIN__DOMAIN_ID);
 
 		typeAliasEClass = createEClass(TYPE_ALIAS);
+
+		// Create enums
+		directionEEnum = createEEnum(DIRECTION);
 	}
 
 	/**
@@ -711,6 +772,9 @@ public class TypesPackageImpl extends EPackageImpl implements TypesPackage {
 		initEReference(getOperation_Parameters(), this.getParameter(), this.getParameter_OwningOperation(), "parameters", null, 0, -1, Operation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(propertyEClass, Property.class, "Property", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getProperty_Const(), ecorePackage.getEBoolean(), "const", null, 0, 1, Property.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getProperty_Readonly(), ecorePackage.getEBoolean(), "readonly", null, 0, 1, Property.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getProperty_External(), ecorePackage.getEBoolean(), "external", null, 0, 1, Property.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(parameterEClass, Parameter.class, "Parameter", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEReference(getParameter_OwningOperation(), this.getOperation(), this.getOperation_Parameters(), "owningOperation", null, 0, 1, Parameter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
@@ -720,6 +784,7 @@ public class TypesPackageImpl extends EPackageImpl implements TypesPackage {
 		initEReference(getTypedElement_TypeArguments(), this.getType(), null, "typeArguments", null, 0, -1, TypedElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(eventEClass, Event.class, "Event", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getEvent_Direction(), this.getDirection(), "direction", null, 0, 1, Event.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(enumerationTypeEClass, EnumerationType.class, "EnumerationType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEReference(getEnumerationType_Enumerator(), this.getEnumerator(), this.getEnumerator_OwningEnumeration(), "enumerator", null, 0, -1, EnumerationType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
@@ -757,6 +822,12 @@ public class TypesPackageImpl extends EPackageImpl implements TypesPackage {
 
 		initEClass(typeAliasEClass, TypeAlias.class, "TypeAlias", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 
+		// Initialize enums and add enum literals
+		initEEnum(directionEEnum, Direction.class, "Direction");
+		addEEnumLiteral(directionEEnum, Direction.LOCAL);
+		addEEnumLiteral(directionEEnum, Direction.IN);
+		addEEnumLiteral(directionEEnum, Direction.OUT);
+
 		// Create resource
 		createResource(eNS_URI);
 	}