ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/extra166y/ParallelArrayWithBounds.java
Revision: 1.8
Committed: Thu Feb 26 06:53:33 2015 UTC (9 years, 2 months ago) by jsr166
Branch: MAIN
CVS Tags: HEAD
Changes since 1.7: +0 -1 lines
Log Message:
delete unused imports

File Contents

# Content
1 /*
2 * Written by Doug Lea with assistance from members of JCP JSR-166
3 * Expert Group and released to the public domain, as explained at
4 * http://creativecommons.org/publicdomain/zero/1.0/
5 */
6
7 package extra166y;
8
9 import jsr166y.*;
10 import static extra166y.Ops.*;
11 import java.util.*;
12 import java.util.concurrent.atomic.*;
13
14 /**
15 * A prefix view of ParallelArray that causes operations to apply
16 * only to elements within a given range.
17 * Instances of this class may be constructed only via prefix
18 * methods of ParallelArray or its other prefix classes.
19 */
20 public abstract class ParallelArrayWithBounds<T> extends ParallelArrayWithFilter<T> {
21 ParallelArrayWithBounds
22 (ForkJoinPool ex, int origin, int fence, T[] array) {
23 super(ex, origin, fence, array);
24 }
25
26 /**
27 * Returns an operation prefix that causes a method to operate
28 * only on the elements of the array between firstIndex
29 * (inclusive) and upperBound (exclusive). The bound
30 * arguments are relative to the current bounds. For example
31 * {@code pa.withBounds(2, 8).withBounds(3, 5)} indexes the
32 * 5th (= 2+3) and 6th elements of pa. However, indices
33 * returned by methods such as {@code indexOf} are
34 * with respect to the underlying ParallelArray.
35 * @param firstIndex the lower bound (inclusive)
36 * @param upperBound the upper bound (exclusive)
37 * @return operation prefix
38 */
39 public abstract ParallelArrayWithBounds<T> withBounds
40 (int firstIndex, int upperBound);
41
42 /**
43 * Returns the index of some element equal to given target, or
44 * -1 if not present.
45 * @param target the element to search for
46 * @return the index or -1 if not present
47 */
48 public abstract int indexOf(T target);
49
50 /**
51 * Assuming this array is sorted, returns the index of an
52 * element equal to given target, or -1 if not present. If the
53 * array is not sorted, the results are undefined.
54 * @param target the element to search for
55 * @return the index or -1 if not present
56 */
57 public abstract int binarySearch(T target);
58
59 /**
60 * Assuming this array is sorted with respect to the given
61 * comparator, returns the index of an element equal to given
62 * target, or -1 if not present. If the array is not sorted,
63 * the results are undefined.
64 * @param target the element to search for
65 * @param comparator the comparator
66 * @return the index or -1 if not present
67 */
68 public abstract int binarySearch(T target,
69 Comparator<? super T> comparator);
70 /**
71 * Replaces each element with the running cumulation of applying
72 * the given reducer.
73 * @param reducer the reducer
74 * @param base the result for an empty array
75 * @return this (to simplify use in expressions)
76 */
77 public abstract ParallelArrayWithBounds<T> cumulate(Reducer<T> reducer, T base);
78
79 /**
80 * Replaces each element with the cumulation of applying the given
81 * reducer to all previous values, and returns the total
82 * reduction.
83 * @param reducer the reducer
84 * @param base the result for an empty array
85 * @return the total reduction
86 */
87 public abstract T precumulate(Reducer<T> reducer, T base);
88
89 /**
90 * Sorts the elements.
91 * Unlike Arrays.sort, this sort does
92 * not guarantee that elements with equal keys maintain their
93 * relative position in the array.
94 * @param cmp the comparator to use
95 * @return this (to simplify use in expressions)
96 */
97 public abstract ParallelArrayWithBounds<T> sort(Comparator<? super T> cmp);
98
99 /**
100 * Sorts the elements, assuming all elements are
101 * Comparable. Unlike Arrays.sort, this sort does not
102 * guarantee that elements with equal keys maintain their relative
103 * position in the array.
104 * @return this (to simplify use in expressions)
105 * @throws ClassCastException if any element is not Comparable
106 */
107 public abstract ParallelArrayWithBounds<T> sort();
108 }