package DPJRuntime.Framework; /** * Interfaces and utilities declaring per-element operations used * within parallel methods on aggregates. This class provides type * names for operation signatures accepting (for now) one * argument and returning one result, for parameterized types. */ public class ArrayOps { public interface DisjointGenerator<type T<region R>, effect E> { public <region R>T<R> op() effect E; } public interface DisjointObjectToObject<type T1, T2<region R>, effect E> { public <region R>T2<R> op(final T1 obj) writes R effect E; } public interface DisjointIntAndObjectToObject<type T1, type T2<region R>, effect E> { public <region R>T2<R> op(int i, final T1 obj) writes R effect E; } public interface Reducer<type T<R>, effect E> { public T op(final T a, final T b) reads R writes a, b effect E; } }