| |
| modeltype Ecore uses 'http://www.eclipse.org/emf/2002/Ecore'; |
| transformation mapMultipleInherits(in inModel : Ecore, out outModel : Ecore); |
| |
| main() { |
| inModel.rootObjects()[EPackage]->map createTargetPackage(); |
| } |
| |
| mapping EPackage::createTargetPackage() : EPackage { |
| name := self.name; |
| eClassifiers += self.eClassifiers[EClass]->map createDataType(); |
| eClassifiers += self.eClassifiers[EClass]->map createClass(); |
| eClassifiers += self.eClassifiers[EClass]->map createDataType(); |
| eClassifiers += self.eClassifiers[EClass]->map createClass(); |
| } |
| |
| abstract mapping ENamedElement::createElement() : ENamedElement { |
| name := self.name + 'i'; |
| } |
| |
| abstract mapping EClassifier::createClassifier() : EClassifier |
| inherits ENamedElement::createElement |
| { |
| instanceClassName := 'MyClass'; |
| } |
| |
| mapping EClassifier::createDataType() : EDataType |
| inherits EClassifier::createClassifier, ENamedElement::createElement |
| { |
| instanceClassName := 'String' |
| } |
| |
| mapping EClassifier::createClass() : EClass |
| inherits EClassifier::createClassifier, ENamedElement::createElement |
| { |
| interface := true |
| } |
| |