| transformation removeclassesinwhile; |
| |
| modeltype ECORE uses 'http://www.eclipse.org/emf/2002/Ecore'; |
| |
| mapping main(model: ecore::EPackage) : ecore::EPackage { |
| init { |
| result := model.deepclone().oclAsType(ecore::EPackage); |
| while_expr(result); |
| } |
| |
| } |
| |
| query while_expr(model: ecore::EPackage): OclVoid { |
| |
| while (model.eClassifiers->size() > 0) { |
| --dump(model.eClassifiers); |
| map patch(model, model.eClassifiers->size()); |
| }; |
| |
| return null; |
| } |
| |
| mapping patch(inout pac:ecore::EPackage, in sz : Integer): ecore::EPackage { |
| init { |
| var firstElem := pac.eClassifiers->first(); |
| var classifiers := pac.eClassifiers; |
| pac.eClassifiers := classifiers->excluding(firstElem)->asOrderedSet(); |
| } |
| |
| name := pac.name; |
| } |