1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157
|
<?xml version="1.0" encoding="UTF-8"?>
<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="genericsGoCrazy" nsURI="ggcNU" nsPrefix="ggcPrefix">
<eClassifiers xsi:type="ecore:EClass" name="MyClass">
<eTypeParameters name="T">
<eBounds eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eBounds eClassifier="#//Car"/>
</eTypeParameters>
<eOperations name="bar">
<eTypeParameters name="F"/>
<eParameters name="aF">
<eGenericType eTypeParameter="#//MyClass/bar/F"/>
</eParameters>
<eParameters name="aT">
<eGenericType eTypeParameter="#//MyClass/T"/>
</eParameters>
<eParameters name="ts">
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eTypeArguments eTypeParameter="#//MyClass/T"/>
</eGenericType>
</eParameters>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="a1" transient="true">
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//ECharacterObject"/>
</eTypeArguments>
</eGenericType>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="a2" lowerBound="1" transient="true">
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDoubleObject"/>
</eGenericType>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="a3" transient="true">
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eTypeArguments eClassifier="#//Car"/>
</eGenericType>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="theEObject">
<eGenericType eTypeParameter="#//MyClass/T"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="aMap">
<eGenericType eClassifier="#//MyMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eTypeParameter="#//MyClass/T"/>
</eGenericType>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Car">
<eOperations name="foo">
<eParameters name="a" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
</eOperations>
<eOperations name="enhancedFoo">
<eTypeParameters name="T">
<eBounds eClassifier="#//MyClass">
<eTypeArguments/>
</eBounds>
</eTypeParameters>
<eParameters name="aT">
<eGenericType eTypeParameter="#//Car/enhancedFoo/T"/>
</eParameters>
<eParameters name="aInt" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
</eOperations>
<eOperations name="superFoo" upperBound="-1">
<eGenericType eTypeParameter="#//Car/superFoo/V"/>
<eTypeParameters name="K"/>
<eTypeParameters name="V">
<eBounds eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eTypeArguments>
<eUpperBound eTypeParameter="#//Car/superFoo/K"/>
</eTypeArguments>
</eBounds>
<eBounds eClassifier="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject"/>
</eTypeParameters>
<eParameters name="key">
<eGenericType eTypeParameter="#//Car/superFoo/K"/>
</eParameters>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="fullName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
derived="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="doors" upperBound="-1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="aMC">
<eGenericType eClassifier="#//MyClass">
<eTypeArguments eClassifier="#//Car"/>
</eGenericType>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="previousCar" eType="#//Car"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="color" eType="#//Color"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="anotherMyClass">
<eGenericType eClassifier="#//MyClass">
<eTypeArguments>
<eLowerBound eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"/>
</eTypeArguments>
</eGenericType>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="yetAnotherMyClass">
<eGenericType eClassifier="#//MyClass">
<eTypeArguments>
<eUpperBound eClassifier="#//SubCar"/>
</eTypeArguments>
</eGenericType>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EDataType" name="MyMap" instanceClassName="org.example.MyMap">
<eTypeParameters name="K"/>
<eTypeParameters name="V">
<eBounds eTypeParameter="#//MyMap/K"/>
</eTypeParameters>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="MySubClass">
<eTypeParameters name="N">
<eBounds eClassifier="#//Car"/>
</eTypeParameters>
<eGenericSuperTypes eClassifier="#//MyClass">
<eTypeArguments eTypeParameter="#//MySubClass/N"/>
</eGenericSuperTypes>
<eGenericSuperTypes eClassifier="#//Car"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Comp">
<eTypeParameters name="E1">
<eBounds eClassifier="#//Car"/>
<eBounds eClassifier="#//MyClass">
<eTypeArguments eTypeParameter="#//Comp/E1"/>
</eBounds>
</eTypeParameters>
<eTypeParameters name="E2">
<eBounds eClassifier="#//Comp">
<eTypeArguments eTypeParameter="#//Comp/E1"/>
<eTypeArguments eTypeParameter="#//Comp/E2"/>
</eBounds>
</eTypeParameters>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" name="Color">
<eLiterals name="RED" value="1" literal="red"/>
<eLiterals name="BLUE" value="1" literal="blue"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SubCar" eSuperTypes="#//Car"/>
<eClassifiers xsi:type="ecore:EClass" name="OtherClass">
<eTypeParameters name="K">
<eBounds eClassifier="#//Car"/>
<eBounds eClassifier="#//MyClass">
<eTypeArguments eTypeParameter="#//OtherClass/K"/>
</eBounds>
</eTypeParameters>
<eTypeParameters name="T">
<eBounds eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eTypeArguments eTypeParameter="#//OtherClass/K"/>
</eBounds>
</eTypeParameters>
<eGenericSuperTypes eClassifier="#//MyClass">
<eTypeArguments eTypeParameter="#//OtherClass/K"/>
</eGenericSuperTypes>
</eClassifiers>
</ecore:EPackage>
|