--- jsr166/src/extra166y/AbstractParallelAnyArray.java 2010/10/22 05:18:30 1.5 +++ jsr166/src/extra166y/AbstractParallelAnyArray.java 2013/01/18 04:23:27 1.12 @@ -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 @@ -82,7 +82,7 @@ public abstract class AbstractParallelAn /** * Returns the index of some element matching bound and filter * constraints, or -1 if none. - * @return index of matching element, or -1 if none. + * @return index of matching element, or -1 if none */ public int anyIndex() { if (!hasFilter()) @@ -95,7 +95,7 @@ public abstract class AbstractParallelAn } /** - * Returns true if there are no elements + * Returns true if there are no elements. * @return true if there are no elements */ public boolean isEmpty() { @@ -403,7 +403,7 @@ public abstract class AbstractParallelAn int otherOffset, BinaryLongOp combiner) {} // Base of object ref array classes - static abstract class OPap extends AbstractParallelAnyArray { + abstract static class OPap extends AbstractParallelAnyArray { T[] array; OPap(ForkJoinPool ex, int origin, int fence, T[] array) { super(ex, origin, fence); @@ -433,7 +433,7 @@ public abstract class AbstractParallelAn } // Base of double array classes - static abstract class DPap extends AbstractParallelAnyArray { + abstract static class DPap extends AbstractParallelAnyArray { double[] array; DPap(ForkJoinPool ex, int origin, int fence, double[] array) { super(ex, origin, fence); @@ -463,7 +463,7 @@ public abstract class AbstractParallelAn } // Base of long array classes - static abstract class LPap extends AbstractParallelAnyArray { + abstract static class LPap extends AbstractParallelAnyArray { long[] array; LPap(ForkJoinPool ex, int origin, int fence, long[] array) { super(ex, origin, fence); @@ -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) { @@ -2218,7 +2228,7 @@ public abstract class AbstractParallelAn // Object-mapped - static abstract class OOMPap extends ParallelArrayWithMapping { + abstract static class OOMPap extends ParallelArrayWithMapping { final Op op; OOMPap(ForkJoinPool ex, int origin, int fence, T[] array, @@ -2248,7 +2258,7 @@ public abstract class AbstractParallelAn } } - static abstract class DOMPap extends ParallelDoubleArrayWithMapping { + abstract static class DOMPap extends ParallelDoubleArrayWithMapping { final DoubleToObject op; DOMPap(ForkJoinPool ex, int origin, int fence, double[] array, DoubleToObject op) { @@ -2277,7 +2287,7 @@ public abstract class AbstractParallelAn } } - static abstract class LOMPap extends ParallelLongArrayWithMapping { + abstract static class LOMPap extends ParallelLongArrayWithMapping { final LongToObject op; LOMPap(ForkJoinPool ex, int origin, int fence, long[] array, LongToObject op) { @@ -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; @@ -3003,7 +3013,7 @@ public abstract class AbstractParallelAn // Object-combined - static abstract class OOCPap extends ParallelArrayWithMapping { + abstract static class OOCPap extends ParallelArrayWithMapping { final IntAndObjectToObject op; OOCPap(ForkJoinPool ex, int origin, int fence, T[] array, @@ -3035,7 +3045,7 @@ public abstract class AbstractParallelAn } } - static abstract class DOCPap extends ParallelDoubleArrayWithMapping { + abstract static class DOCPap extends ParallelDoubleArrayWithMapping { final IntAndDoubleToObject op; DOCPap(ForkJoinPool ex, int origin, int fence, double[] array, IntAndDoubleToObject op) { @@ -3066,7 +3076,7 @@ public abstract class AbstractParallelAn } } - static abstract class LOCPap extends ParallelLongArrayWithMapping { + abstract static class LOCPap extends ParallelLongArrayWithMapping { final IntAndLongToObject op; LOCPap(ForkJoinPool ex, int origin, int fence, long[] array, IntAndLongToObject op) { @@ -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; @@ -3774,7 +3784,7 @@ public abstract class AbstractParallelAn // Double-mapped - static abstract class ODMPap extends ParallelArrayWithDoubleMapping { + abstract static class ODMPap extends ParallelArrayWithDoubleMapping { final ObjectToDouble op; ODMPap(ForkJoinPool ex, int origin, int fence, T[] array, ObjectToDouble op) { @@ -3804,7 +3814,7 @@ public abstract class AbstractParallelAn } - static abstract class DDMPap extends ParallelDoubleArrayWithDoubleMapping { + abstract static class DDMPap extends ParallelDoubleArrayWithDoubleMapping { final DoubleOp op; DDMPap (ForkJoinPool ex, int origin, int fence, @@ -3834,7 +3844,7 @@ public abstract class AbstractParallelAn } } - static abstract class LDMPap extends ParallelLongArrayWithDoubleMapping { + abstract static class LDMPap extends ParallelLongArrayWithDoubleMapping { final LongToDouble op; LDMPap(ForkJoinPool ex, int origin, int fence, long[] array, LongToDouble op) { @@ -4520,7 +4530,7 @@ public abstract class AbstractParallelAn } // double-combined - static abstract class ODCPap extends ParallelArrayWithDoubleMapping { + abstract static class ODCPap extends ParallelArrayWithDoubleMapping { final IntAndObjectToDouble op; ODCPap(ForkJoinPool ex, int origin, int fence, T[] array, IntAndObjectToDouble op) { @@ -4552,7 +4562,7 @@ public abstract class AbstractParallelAn } - static abstract class DDCPap extends ParallelDoubleArrayWithDoubleMapping { + abstract static class DDCPap extends ParallelDoubleArrayWithDoubleMapping { final IntAndDoubleToDouble op; DDCPap(ForkJoinPool ex, int origin, int fence, double[] array, IntAndDoubleToDouble op) { @@ -4583,7 +4593,7 @@ public abstract class AbstractParallelAn } } - static abstract class LDCPap extends ParallelLongArrayWithDoubleMapping { + abstract static class LDCPap extends ParallelLongArrayWithDoubleMapping { final IntAndLongToDouble op; LDCPap(ForkJoinPool ex, int origin, int fence, long[] array, IntAndLongToDouble op) { @@ -5271,7 +5281,7 @@ public abstract class AbstractParallelAn } // long-combined - static abstract class OLMPap extends ParallelArrayWithLongMapping { + abstract static class OLMPap extends ParallelArrayWithLongMapping { final ObjectToLong op; OLMPap(ForkJoinPool ex, int origin, int fence, T[] array, final ObjectToLong op) { @@ -5300,7 +5310,7 @@ public abstract class AbstractParallelAn } } - static abstract class DLMPap extends ParallelDoubleArrayWithLongMapping { + abstract static class DLMPap extends ParallelDoubleArrayWithLongMapping { final DoubleToLong op; DLMPap(ForkJoinPool ex, int origin, int fence, double[] array, DoubleToLong op) { @@ -5330,7 +5340,7 @@ public abstract class AbstractParallelAn } - static abstract class LLMPap extends ParallelLongArrayWithLongMapping { + abstract static class LLMPap extends ParallelLongArrayWithLongMapping { final LongOp op; LLMPap(ForkJoinPool ex, int origin, int fence, long[] array, LongOp op) { @@ -6022,7 +6032,7 @@ public abstract class AbstractParallelAn } // long-combined - static abstract class OLCPap extends ParallelArrayWithLongMapping { + abstract static class OLCPap extends ParallelArrayWithLongMapping { final IntAndObjectToLong op; OLCPap(ForkJoinPool ex, int origin, int fence, T[] array, IntAndObjectToLong op) { @@ -6053,7 +6063,7 @@ public abstract class AbstractParallelAn } } - static abstract class DLCPap extends ParallelDoubleArrayWithLongMapping { + abstract static class DLCPap extends ParallelDoubleArrayWithLongMapping { final IntAndDoubleToLong op; DLCPap(ForkJoinPool ex, int origin, int fence, double[] array, IntAndDoubleToLong op) { @@ -6084,7 +6094,7 @@ public abstract class AbstractParallelAn } } - static abstract class LLCPap extends ParallelLongArrayWithLongMapping { + abstract static class LLCPap extends ParallelLongArrayWithLongMapping { final IntAndLongToLong op; LLCPap(ForkJoinPool ex, int origin, int fence, long[] array, IntAndLongToLong 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); }