blob: c7d48e594bed904d2b3588032b2f33e544e10781 [file] [log] [blame]
--@atlcompiler atl2006
--/*******************************************************************************
-- * Copyright (c) 2009 Ecole des Mines de Nantes.
-- * All rights reserved. This program and the accompanying materials
-- * are made available under the terms of the Eclipse Public License v2.0
-- * which accompanies this distribution, and is available at
-- * https://www.eclipse.org/legal/epl-2.0/
-- *
-- * Contributors:
-- * Kelly Garces - initial implementation and/or initial documentation
-- *******************************************************************************/
library Metametamodel;
-- helpers required aggregation methods and HOT
helper def: fullName (element : OclAny) : String =
if element.name.oclIsUndefined() then
''
else
if element.refImmediateComposite().oclIsUndefined() then
element.name + '::' + element.oclType()
else
element.refImmediateComposite().fullName + '::' + element.name + '::' + element.oclType().name
endif
endif;
helper def: allSupertypes (class : OclAny) : OrderedSet(OclAny) =
class.supertypes->iterate(e; acc : OrderedSet(OclAny) = OrderedSet {} |
acc->including(e)->union(e.allSupertypes)
->reject(e | e.name.oclIsUndefined()) --TODO the metamodel merger sometimes does not merge classes correctly
);