@Override void initPartialTraversalState() { SpinedBuffer<P_OUT> b = new SpinedBuffer<>(); buffer = b; bufferSink = ph.wrapSink(b::accept); pusher = () -> spliterator.tryAdvance(bufferSink); }
@Override void initPartialTraversalState() { SpinedBuffer<P_OUT> b = new SpinedBuffer<>(); buffer = b; bufferSink = ph.wrapSink(b::accept); pusher = () -> spliterator.tryAdvance(bufferSink); }
@Override public <S> Void evaluateParallel(PipelineHelper<T> helper, Spliterator<S> spliterator) { if (ordered) { new ForEachOrderedTask<>(helper, spliterator, this).invoke(); } else { new ForEachTask<>(helper, spliterator, helper.wrapSink(this)).invoke(); } return null; }
@Override public <S> Void evaluateParallel(PipelineHelper<T> helper, Spliterator<S> spliterator) { if (ordered) { new ForEachOrderedTask<>(helper, spliterator, this).invoke(); } else { new ForEachTask<>(helper, spliterator, helper.wrapSink(this)).invoke(); } return null; }
bufferSink = ph.wrapSink(trampoline); pusher = () -> spliterator.tryAdvance(bufferSink);
bufferSink = ph.wrapSink(trampoline); pusher = () -> spliterator.tryAdvance(bufferSink);
bufferSink = ph.wrapSink(trampoline); pusher = () -> spliterator.tryAdvance(bufferSink);
bufferSink = ph.wrapSink(trampoline); pusher = () -> spliterator.tryAdvance(bufferSink);
bufferSink = ph.wrapSink(trampoline); pusher = () -> spliterator.tryAdvance(bufferSink);
bufferSink = ph.wrapSink(trampoline); pusher = () -> spliterator.tryAdvance(bufferSink);
@Override protected final Node<P_OUT> doLeaf() { Node.Builder<P_OUT> builder = helper.makeNodeBuilder(-1, generator); Sink<P_OUT> s = op.opWrapSink(helper.getStreamAndOpFlags(), builder); if (shortCircuited = helper.copyIntoWithCancel(helper.wrapSink(s), spliterator)) { // Cancel later nodes if the predicate returned false // during traversal cancelLaterNodes(); } Node<P_OUT> node = builder.build(); thisNodeSize = node.count(); return node; }
@Override protected final Node<P_OUT> doLeaf() { Node.Builder<P_OUT> builder = helper.makeNodeBuilder(-1, generator); Sink<P_OUT> s = op.opWrapSink(helper.getStreamAndOpFlags(), builder); if (shortCircuited = helper.copyIntoWithCancel(helper.wrapSink(s), spliterator)) { // Cancel later nodes if the predicate returned false // during traversal cancelLaterNodes(); } Node<P_OUT> node = builder.build(); thisNodeSize = node.count(); return node; }
@Override protected final Node<P_OUT> doLeaf() { if (isRoot()) { long sizeIfKnown = StreamOpFlag.SIZED.isPreserved(op.sourceOrOpFlags) ? op.exactOutputSizeIfKnown(spliterator) : -1L; Node.Builder<P_OUT> nb = op.makeNodeBuilder(sizeIfKnown, generator); Sink<P_OUT> opSink = op.opWrapSink(helper.getStreamAndOpFlags(), nb); helper.copyIntoWithCancel(helper.wrapSink(opSink), spliterator); // There is no need to truncate since the op performs the // skipping and limiting of elements return nb.build(); } else { Node.Builder<P_OUT> nb = op.makeNodeBuilder(-1, generator); if (targetOffset == 0) { // limit only Sink<P_OUT> opSink = op.opWrapSink(helper.getStreamAndOpFlags(), nb); helper.copyIntoWithCancel(helper.wrapSink(opSink), spliterator); } else { helper.wrapAndCopyInto(nb, spliterator); } Node<P_OUT> node = nb.build(); thisNodeSize = node.count(); completed = true; spliterator = null; return node; } }
@Override protected final Node<P_OUT> doLeaf() { if (isRoot()) { long sizeIfKnown = StreamOpFlag.SIZED.isPreserved(op.sourceOrOpFlags) ? op.exactOutputSizeIfKnown(spliterator) : -1L; Node.Builder<P_OUT> nb = op.makeNodeBuilder(sizeIfKnown, generator); Sink<P_OUT> opSink = op.opWrapSink(helper.getStreamAndOpFlags(), nb); helper.copyIntoWithCancel(helper.wrapSink(opSink), spliterator); // There is no need to truncate since the op performs the // skipping and limiting of elements return nb.build(); } else { Node.Builder<P_OUT> nb = op.makeNodeBuilder(-1, generator); if (targetOffset == 0) { // limit only Sink<P_OUT> opSink = op.opWrapSink(helper.getStreamAndOpFlags(), nb); helper.copyIntoWithCancel(helper.wrapSink(opSink), spliterator); } else { helper.wrapAndCopyInto(nb, spliterator); } Node<P_OUT> node = nb.build(); thisNodeSize = node.count(); completed = true; spliterator = null; return node; } }