blob: 420a0b43b27b42e36a8d168ff10dcd9d4e8f7617 [file] [log] [blame]
package org.eclipse.emf.henshin.interpreter;
import java.util.List;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
/**
* An extension of {@link EGraph}s to support partitioning.
* @author Christian Krause
*/
public interface PartitionedEGraph extends EGraph {
/**
* Get the number of partitions of this partitioned graph.
* @return The number of partitions.
*/
int getNumPartitions();
/**
* Get all {@link EObject}s of this graph which are compatible with the given type
* and are in a given partition. The partition must be greater or equal zero and
* strictly less than the number of partitions of this graph.
* This returns a fresh and modifiable list.
* @param type The type of the objects.
* @param strict Whether subtypes are excluded from the result.
* @param partition The partition to be used.
* @return A set of {@link EObject}s compatible with the type.
*/
List<EObject> getDomain(EClass type, boolean strict, int partition);
/**
* Returns the size of the domain for a type in a partition. The returned number
* equals the size of the list returned by {@link #getDomain(EClass, boolean, int)}.
* This method should be used whenever the actual objects are not needed.
* @param type The type.
* @param strict Whether subtypes are excluded.
* @param partition The partition to be used.
* @return The size of the domain.
*/
int getDomainSize(EClass type, boolean strict, int partition);
}