1133 |
|
} |
1134 |
|
} |
1135 |
|
|
1136 |
+ |
static final class AndPredicate<T> implements Predicate<T> { |
1137 |
+ |
final Predicate<? super T> first; |
1138 |
+ |
final Predicate<? super T> second; |
1139 |
+ |
AndPredicate(Predicate<? super T> first, |
1140 |
+ |
Predicate<? super T> second) { |
1141 |
+ |
this.first = first; this.second = second; |
1142 |
+ |
} |
1143 |
+ |
public final boolean op(T x) { return first.op(x) && second.op(x); } |
1144 |
+ |
} |
1145 |
+ |
|
1146 |
|
// Filtered (but unmapped) classes |
1147 |
|
static final class OFPap<T> extends ParallelArrayWithFilter<T> { |
1148 |
|
final Predicate<? super T> selector; |
1159 |
|
public ParallelArrayWithFilter<T> withFilter |
1160 |
|
(Predicate<? super T> selector) { |
1161 |
|
return new OFPap<T>(ex, origin, fence, array, |
1162 |
< |
CommonOps.andPredicate(this.selector, selector)); |
1162 |
> |
new AndPredicate(this.selector, selector)); |
1163 |
|
} |
1164 |
|
|
1165 |
|
public ParallelArrayWithFilter<T> withIndexedFilter |