equal
deleted
inserted
replaced
560 } |
560 } |
561 } |
561 } |
562 |
562 |
563 // Implementations |
563 // Implementations |
564 |
564 |
565 private static abstract class EmptyNode<T, T_ARR, T_CONS> implements Node<T> { |
565 private abstract static class EmptyNode<T, T_ARR, T_CONS> implements Node<T> { |
566 EmptyNode() { } |
566 EmptyNode() { } |
567 |
567 |
568 @Override |
568 @Override |
569 public T[] asArray(IntFunction<T[]> generator) { |
569 public T[] asArray(IntFunction<T[]> generator) { |
570 return generator.apply(0); |
570 return generator.apply(0); |
748 } |
748 } |
749 |
749 |
750 /** |
750 /** |
751 * Node class for an internal node with two or more children |
751 * Node class for an internal node with two or more children |
752 */ |
752 */ |
753 private static abstract class AbstractConcNode<T, T_NODE extends Node<T>> implements Node<T> { |
753 private abstract static class AbstractConcNode<T, T_NODE extends Node<T>> implements Node<T> { |
754 protected final T_NODE left; |
754 protected final T_NODE left; |
755 protected final T_NODE right; |
755 protected final T_NODE right; |
756 private final long size; |
756 private final long size; |
757 |
757 |
758 AbstractConcNode(T_NODE left, T_NODE right) { |
758 AbstractConcNode(T_NODE left, T_NODE right) { |
930 } |
930 } |
931 } |
931 } |
932 } |
932 } |
933 |
933 |
934 /** Abstract class for spliterator for all internal node classes */ |
934 /** Abstract class for spliterator for all internal node classes */ |
935 private static abstract class InternalNodeSpliterator<T, |
935 private abstract static class InternalNodeSpliterator<T, |
936 S extends Spliterator<T>, |
936 S extends Spliterator<T>, |
937 N extends Node<T>> |
937 N extends Node<T>> |
938 implements Spliterator<T> { |
938 implements Spliterator<T> { |
939 // Node we are pointing to |
939 // Node we are pointing to |
940 // null if full traversal has occurred |
940 // null if full traversal has occurred |
1112 else |
1112 else |
1113 while(tryAdvance(consumer)) { } |
1113 while(tryAdvance(consumer)) { } |
1114 } |
1114 } |
1115 } |
1115 } |
1116 |
1116 |
1117 private static abstract class OfPrimitive<T, T_CONS, T_ARR, |
1117 private abstract static class OfPrimitive<T, T_CONS, T_ARR, |
1118 T_SPLITR extends Spliterator.OfPrimitive<T, T_CONS, T_SPLITR>, |
1118 T_SPLITR extends Spliterator.OfPrimitive<T, T_CONS, T_SPLITR>, |
1119 N extends Node.OfPrimitive<T, T_CONS, T_ARR, T_SPLITR, N>> |
1119 N extends Node.OfPrimitive<T, T_CONS, T_ARR, T_SPLITR, N>> |
1120 extends InternalNodeSpliterator<T, T_SPLITR, N> |
1120 extends InternalNodeSpliterator<T, T_SPLITR, N> |
1121 implements Spliterator.OfPrimitive<T, T_CONS, T_SPLITR> { |
1121 implements Spliterator.OfPrimitive<T, T_CONS, T_SPLITR> { |
1122 |
1122 |
1825 |
1825 |
1826 /* |
1826 /* |
1827 * This and subclasses are not intended to be serializable |
1827 * This and subclasses are not intended to be serializable |
1828 */ |
1828 */ |
1829 @SuppressWarnings("serial") |
1829 @SuppressWarnings("serial") |
1830 private static abstract class SizedCollectorTask<P_IN, P_OUT, T_SINK extends Sink<P_OUT>, |
1830 private abstract static class SizedCollectorTask<P_IN, P_OUT, T_SINK extends Sink<P_OUT>, |
1831 K extends SizedCollectorTask<P_IN, P_OUT, T_SINK, K>> |
1831 K extends SizedCollectorTask<P_IN, P_OUT, T_SINK, K>> |
1832 extends CountedCompleter<Void> |
1832 extends CountedCompleter<Void> |
1833 implements Sink<P_OUT> { |
1833 implements Sink<P_OUT> { |
1834 protected final Spliterator<P_IN> spliterator; |
1834 protected final Spliterator<P_IN> spliterator; |
1835 protected final PipelineHelper<P_OUT> helper; |
1835 protected final PipelineHelper<P_OUT> helper; |
2028 } |
2028 } |
2029 } |
2029 } |
2030 } |
2030 } |
2031 |
2031 |
2032 @SuppressWarnings("serial") |
2032 @SuppressWarnings("serial") |
2033 private static abstract class ToArrayTask<T, T_NODE extends Node<T>, |
2033 private abstract static class ToArrayTask<T, T_NODE extends Node<T>, |
2034 K extends ToArrayTask<T, T_NODE, K>> |
2034 K extends ToArrayTask<T, T_NODE, K>> |
2035 extends CountedCompleter<Void> { |
2035 extends CountedCompleter<Void> { |
2036 protected final T_NODE node; |
2036 protected final T_NODE node; |
2037 protected final int offset; |
2037 protected final int offset; |
2038 |
2038 |