--- jsr166/src/extra166y/AbstractParallelAnyArray.java 2010/10/22 05:18:30 1.5 +++ jsr166/src/extra166y/AbstractParallelAnyArray.java 2012/02/21 01:54:03 1.10 @@ -1,7 +1,7 @@ /* * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at - * http://creativecommons.org/licenses/publicdomain + * http://creativecommons.org/publicdomain/zero/1.0/ */ package extra166y; @@ -65,7 +65,7 @@ public abstract class AbstractParallelAn // A few public methods exported across all subclasses /** - * Return the number of elements selected using bound or + * Returns the number of elements selected using bound or * filter restrictions. Note that this method must evaluate * all selectors to return its result. * @return the number of elements @@ -965,7 +965,7 @@ public abstract class AbstractParallelAn public ParallelLongArrayWithLongMapping withIndexedMapping (IntAndLongToLong mapper) { - return new LULCPap(ex, origin, fence, array, mapper); + return new LULCPap(ex, origin, fence, array, mapper); } public int indexOf(long target) { @@ -1133,6 +1133,16 @@ public abstract class AbstractParallelAn } } + static final class AndPredicate implements Predicate { + final Predicate first; + final Predicate second; + AndPredicate(Predicate first, + Predicate second) { + this.first = first; this.second = second; + } + public final boolean op(T x) { return first.op(x) && second.op(x); } + } + // Filtered (but unmapped) classes static final class OFPap extends ParallelArrayWithFilter { final Predicate selector; @@ -1149,7 +1159,7 @@ public abstract class AbstractParallelAn public ParallelArrayWithFilter withFilter (Predicate selector) { return new OFPap(ex, origin, fence, array, - CommonOps.andPredicate(this.selector, selector)); + new AndPredicate(this.selector, selector)); } public ParallelArrayWithFilter withIndexedFilter @@ -1189,7 +1199,7 @@ public abstract class AbstractParallelAn return new OFLCPap(ex, origin, fence, array, selector, mapper); } - void leafApply(int lo, int hi, Procedure procedure) { + void leafApply(int lo, int hi, Procedure procedure) { final Predicate s = selector; final Object[] a = this.array; for (int i = lo; i < hi; ++i) { @@ -1367,7 +1377,7 @@ public abstract class AbstractParallelAn return new DFLCPap(ex, origin, fence, array, selector, mapper); } - final void leafApply(int lo, int hi, DoubleProcedure procedure) { + final void leafApply(int lo, int hi, DoubleProcedure procedure) { final DoublePredicate s = selector; final double[] a = this.array; for (int i = lo; i < hi; ++i) { @@ -1547,7 +1557,7 @@ public abstract class AbstractParallelAn return new LFLCPap(ex, origin, fence, array, selector, mapper); } - final void leafApply(int lo, int hi, LongProcedure procedure) { + final void leafApply(int lo, int hi, LongProcedure procedure) { final LongPredicate s = selector; final long[] a = this.array; for (int i = lo; i < hi; ++i) { @@ -1730,7 +1740,7 @@ public abstract class AbstractParallelAn return new ORLCPap(ex, origin, fence, array, selector, mapper); } - void leafApply(int lo, int hi, Procedure procedure) { + void leafApply(int lo, int hi, Procedure procedure) { final IntAndObjectPredicate s = selector; final Object[] a = this.array; for (int i = lo; i < hi; ++i) { @@ -1910,7 +1920,7 @@ public abstract class AbstractParallelAn return new DRLCPap(ex, origin, fence, array, selector, mapper); } - final void leafApply(int lo, int hi, DoubleProcedure procedure) { + final void leafApply(int lo, int hi, DoubleProcedure procedure) { final IntAndDoublePredicate s = selector; final double[] a = this.array; for (int i = lo; i < hi; ++i) { @@ -2090,7 +2100,7 @@ public abstract class AbstractParallelAn return new LRLCPap(ex, origin, fence, array, selector, mapper); } - final void leafApply(int lo, int hi, LongProcedure procedure) { + final void leafApply(int lo, int hi, LongProcedure procedure) { final IntAndLongPredicate s = selector; final long[] a = this.array; for (int i = lo; i < hi; ++i) { @@ -2350,7 +2360,7 @@ public abstract class AbstractParallelAn compoundIndexedOp(this.op, mapper)); } - void leafApply(int lo, int hi, Procedure procedure) { + void leafApply(int lo, int hi, Procedure procedure) { final Op f = op; final Object[] a = this.array; for (int i = lo; i < hi; ++i) @@ -2412,7 +2422,7 @@ public abstract class AbstractParallelAn compoundIndexedOp(this.op, mapper)); } - void leafApply(int lo, int hi, Procedure procedure) { + void leafApply(int lo, int hi, Procedure procedure) { final double[] a = this.array; final DoubleToObject f = op; for (int i = lo; i < hi; ++i) @@ -2474,7 +2484,7 @@ public abstract class AbstractParallelAn compoundIndexedOp(this.op, mapper)); } - void leafApply(int lo, int hi, Procedure procedure) { + void leafApply(int lo, int hi, Procedure procedure) { final long[] a = this.array; final LongToObject f = op; for (int i = lo; i < hi; ++i) @@ -2545,7 +2555,7 @@ public abstract class AbstractParallelAn compoundIndexedOp(this.op, mapper)); } - void leafApply(int lo, int hi, Procedure procedure) { + void leafApply(int lo, int hi, Procedure procedure) { final Predicate s = selector; final Object[] a = this.array; final Op f = op; @@ -2633,7 +2643,7 @@ public abstract class AbstractParallelAn compoundIndexedOp(this.op, mapper)); } - void leafApply(int lo, int hi, Procedure procedure) { + void leafApply(int lo, int hi, Procedure procedure) { final DoublePredicate s = selector; final DoubleToObject f = op; final double[] a = this.array; @@ -2715,7 +2725,7 @@ public abstract class AbstractParallelAn compoundIndexedOp(this.op, mapper)); } - void leafApply(int lo, int hi, Procedure procedure) { + void leafApply(int lo, int hi, Procedure procedure) { final LongPredicate s = selector; final LongToObject f = op; final long[] a = this.array; @@ -2798,7 +2808,7 @@ public abstract class AbstractParallelAn compoundIndexedOp(this.op, mapper)); } - void leafApply(int lo, int hi, Procedure procedure) { + void leafApply(int lo, int hi, Procedure procedure) { final IntAndObjectPredicate s = selector; final Object[] a = this.array; final Op f = op; @@ -2886,7 +2896,7 @@ public abstract class AbstractParallelAn compoundIndexedOp(this.op, mapper)); } - void leafApply(int lo, int hi, Procedure procedure) { + void leafApply(int lo, int hi, Procedure procedure) { final IntAndDoublePredicate s = selector; final DoubleToObject f = op; final double[] a = this.array; @@ -2968,7 +2978,7 @@ public abstract class AbstractParallelAn compoundIndexedOp(this.op, mapper)); } - void leafApply(int lo, int hi, Procedure procedure) { + void leafApply(int lo, int hi, Procedure procedure) { final IntAndLongPredicate s = selector; final LongToObject f = op; final long[] a = this.array; @@ -3141,7 +3151,7 @@ public abstract class AbstractParallelAn compoundIndexedOp(this.op, mapper)); } - void leafApply(int lo, int hi, Procedure procedure) { + void leafApply(int lo, int hi, Procedure procedure) { final IntAndObjectToObject f = op; final Object[] a = this.array; for (int i = lo; i < hi; ++i) @@ -3203,7 +3213,7 @@ public abstract class AbstractParallelAn compoundIndexedOp(this.op, mapper)); } - void leafApply(int lo, int hi, Procedure procedure) { + void leafApply(int lo, int hi, Procedure procedure) { final IntAndDoubleToObject f = op; final double[] a = this.array; for (int i = lo; i < hi; ++i) @@ -3265,7 +3275,7 @@ public abstract class AbstractParallelAn compoundIndexedOp(this.op, mapper)); } - void leafApply(int lo, int hi, Procedure procedure) { + void leafApply(int lo, int hi, Procedure procedure) { final IntAndLongToObject f = op; final long[] a = this.array; for (int i = lo; i < hi; ++i) @@ -3287,7 +3297,7 @@ public abstract class AbstractParallelAn // object-combined filtered - static final class OFOCPap extends OOCPap { + static final class OFOCPap extends OOCPap { final Predicate selector; OFOCPap(ForkJoinPool ex, int origin, int fence, T[] array, Predicate selector, @@ -3337,7 +3347,7 @@ public abstract class AbstractParallelAn (this.op, mapper)); } - void leafApply(int lo, int hi, Procedure procedure) { + void leafApply(int lo, int hi, Procedure procedure) { final Predicate s = selector; final Object[] a = this.array; final IntAndObjectToObject f = op; @@ -3417,7 +3427,7 @@ public abstract class AbstractParallelAn compoundIndexedOp(this.op, mapper)); } - void leafApply(int lo, int hi, Procedure procedure) { + void leafApply(int lo, int hi, Procedure procedure) { final DoublePredicate s = selector; final double[] a = this.array; final IntAndDoubleToObject f = op; @@ -3497,7 +3507,7 @@ public abstract class AbstractParallelAn compoundIndexedOp(this.op, mapper)); } - void leafApply(int lo, int hi, Procedure procedure) { + void leafApply(int lo, int hi, Procedure procedure) { final LongPredicate s = selector; final long[] a = this.array; final IntAndLongToObject f = op; @@ -3530,7 +3540,7 @@ public abstract class AbstractParallelAn } // Object-combined, relational - static final class OROCPap extends OOCPap { + static final class OROCPap extends OOCPap { final IntAndObjectPredicate selector; OROCPap(ForkJoinPool ex, int origin, int fence, T[] array, IntAndObjectPredicate selector, @@ -3580,7 +3590,7 @@ public abstract class AbstractParallelAn (this.op, mapper)); } - void leafApply(int lo, int hi, Procedure procedure) { + void leafApply(int lo, int hi, Procedure procedure) { final IntAndObjectPredicate s = selector; final Object[] a = this.array; final IntAndObjectToObject f = op; @@ -3660,7 +3670,7 @@ public abstract class AbstractParallelAn compoundIndexedOp(this.op, mapper)); } - void leafApply(int lo, int hi, Procedure procedure) { + void leafApply(int lo, int hi, Procedure procedure) { final IntAndDoublePredicate s = selector; final double[] a = this.array; final IntAndDoubleToObject f = op; @@ -3740,7 +3750,7 @@ public abstract class AbstractParallelAn compoundIndexedOp(this.op, mapper)); } - void leafApply(int lo, int hi, Procedure procedure) { + void leafApply(int lo, int hi, Procedure procedure) { final IntAndLongPredicate s = selector; final long[] a = this.array; final IntAndLongToObject f = op; @@ -7872,14 +7882,14 @@ public abstract class AbstractParallelAn }; } - static IntAndDoublePredicate compoundIndexedSelector + static IntAndDoublePredicate compoundIndexedSelector (final IntAndDoublePredicate fst, final IntAndDoublePredicate snd) { return new IntAndDoublePredicate() { public boolean op(int i, double a) { return fst.op(i, a) && snd.op(i, a); } }; } - static IntAndDoublePredicate compoundIndexedSelector + static IntAndDoublePredicate compoundIndexedSelector (final IntAndDoublePredicate fst, final DoublePredicate snd) { return new IntAndDoublePredicate() { public boolean op(int i, double a) { return fst.op(i, a) && snd.op(a); } @@ -7893,14 +7903,14 @@ public abstract class AbstractParallelAn }; } - static IntAndLongPredicate compoundIndexedSelector + static IntAndLongPredicate compoundIndexedSelector (final IntAndLongPredicate fst, final IntAndLongPredicate snd) { return new IntAndLongPredicate() { public boolean op(int i, long a) { return fst.op(i, a) && snd.op(i, a); } }; } - static IntAndLongPredicate compoundIndexedSelector + static IntAndLongPredicate compoundIndexedSelector (final IntAndLongPredicate fst, final LongPredicate snd) { return new IntAndLongPredicate() { public boolean op(int i, long a) { return fst.op(i, a) && snd.op(a); }