package com.sap.runlet.abstractinterpreter.repository; import org.eclipse.emf.ecore.EObject; import com.sap.runlet.abstractinterpreter.objects.EntityObject; import com.sap.runlet.abstractinterpreter.objects.Link; /** * Change set that can be changed by adding created/deleted object/link entries * * @author Axel Uhl (D043530) */ public interface MutableChangeSet<LinkMetaObject extends EObject, LinkEndMetaObject extends EObject, MetaClass extends EObject, TypeUsage extends EObject, ClassUsage extends TypeUsage> extends ChangeSet<LinkMetaObject, LinkEndMetaObject, MetaClass, TypeUsage, ClassUsage> { /** * Postcondition: <tt>this.isEmpty()</tt> */ void clear(); void entityCreated(EntityObject<LinkMetaObject, LinkEndMetaObject, MetaClass, TypeUsage, ClassUsage> entity); void entityDeleted(EntityObject<LinkMetaObject, LinkEndMetaObject, MetaClass, TypeUsage, ClassUsage> entity); /** * Records a link creation. * * @param at for ordered associations, specify the position at which the link was added. * <tt>null</tt> or <tt>-1</tt> are not allowed if <tt>link.isOrdered()</tt>. The real * insert position must be specified instead which then equals the size of the ordered * collection holding the links when viewed from the unordered end. */ void linkCreated(Link<LinkMetaObject, LinkEndMetaObject, MetaClass, TypeUsage, ClassUsage> link, Integer at); void linkDeleted(Link<LinkMetaObject, LinkEndMetaObject, MetaClass, TypeUsage, ClassUsage> link, Integer at); }