blob: ab5c9eddcc9031a2060ad69ecf6117cdb023097f [file] [log] [blame]
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
}