blob: ac81093120e2d4bbb79be8473fdbe46c1a00bf38 [file] [log] [blame]
// Copyright (c) 2022, the R8 project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
package java.util.stream;
import static java.util.ConversionRuntimeException.exception;
import java.util.function.DoubleFunction;
import java.util.function.Function;
import java.util.function.IntFunction;
import java.util.function.LongFunction;
public class FlatMapApiFlips {
public static Function<?, ?> flipFunctionReturningStream(Function<?, ?> function) {
return new FunctionStreamWrapper<>(function);
}
public static IntFunction<?> flipFunctionReturningStream(IntFunction<?> function) {
return new IntFunctionStreamWrapper<>(function);
}
public static DoubleFunction<?> flipFunctionReturningStream(DoubleFunction<?> function) {
return new DoubleFunctionStreamWrapper<>(function);
}
public static LongFunction<?> flipFunctionReturningStream(LongFunction<?> function) {
return new LongFunctionStreamWrapper<>(function);
}
public static class FunctionStreamWrapper<T, R> implements Function<T, R> {
public Function<T, R> function;
public FunctionStreamWrapper(Function<T, R> function) {
this.function = function;
}
@SuppressWarnings("unchecked")
private R flipStream(R maybeStream) {
if (maybeStream == null) {
return null;
}
if (maybeStream instanceof java.util.stream.Stream<?>) {
return (R) j$.util.stream.Stream.wrap_convert((java.util.stream.Stream<?>) maybeStream);
}
if (maybeStream instanceof j$.util.stream.Stream<?>) {
return (R) j$.util.stream.Stream.wrap_convert((j$.util.stream.Stream<?>) maybeStream);
}
if (maybeStream instanceof java.util.stream.IntStream) {
return (R) j$.util.stream.IntStream.wrap_convert((java.util.stream.IntStream) maybeStream);
}
if (maybeStream instanceof j$.util.stream.IntStream) {
return (R) j$.util.stream.IntStream.wrap_convert((j$.util.stream.IntStream) maybeStream);
}
if (maybeStream instanceof java.util.stream.DoubleStream) {
return (R)
j$.util.stream.DoubleStream.wrap_convert((java.util.stream.DoubleStream) maybeStream);
}
if (maybeStream instanceof j$.util.stream.DoubleStream) {
return (R)
j$.util.stream.DoubleStream.wrap_convert((j$.util.stream.DoubleStream) maybeStream);
}
if (maybeStream instanceof java.util.stream.LongStream) {
return (R)
j$.util.stream.LongStream.wrap_convert((java.util.stream.LongStream) maybeStream);
}
if (maybeStream instanceof j$.util.stream.LongStream) {
return (R) j$.util.stream.LongStream.wrap_convert((j$.util.stream.LongStream) maybeStream);
}
throw exception("java.util.stream.*Stream", maybeStream.getClass());
}
public R apply(T arg) {
return flipStream(function.apply(arg));
}
}
public static class IntFunctionStreamWrapper<R> implements IntFunction<R> {
public IntFunction<R> function;
public IntFunctionStreamWrapper(IntFunction<R> function) {
this.function = function;
}
@SuppressWarnings("unchecked")
private R flipStream(R maybeStream) {
if (maybeStream == null) {
return null;
}
if (maybeStream instanceof java.util.stream.IntStream) {
return (R) j$.util.stream.IntStream.wrap_convert((java.util.stream.IntStream) maybeStream);
}
if (maybeStream instanceof j$.util.stream.IntStream) {
return (R) j$.util.stream.IntStream.wrap_convert((j$.util.stream.IntStream) maybeStream);
}
throw exception("java.util.stream.IntStream", maybeStream.getClass());
}
public R apply(int arg) {
return flipStream(function.apply(arg));
}
}
public static class DoubleFunctionStreamWrapper<R> implements DoubleFunction<R> {
public DoubleFunction<R> function;
public DoubleFunctionStreamWrapper(DoubleFunction<R> function) {
this.function = function;
}
@SuppressWarnings("unchecked")
private R flipStream(R maybeStream) {
if (maybeStream == null) {
return null;
}
if (maybeStream instanceof java.util.stream.DoubleStream) {
return (R)
j$.util.stream.DoubleStream.wrap_convert((java.util.stream.DoubleStream) maybeStream);
}
if (maybeStream instanceof j$.util.stream.DoubleStream) {
return (R)
j$.util.stream.DoubleStream.wrap_convert((j$.util.stream.DoubleStream) maybeStream);
}
throw exception("java.util.stream.DoubleStream", maybeStream.getClass());
}
public R apply(double arg) {
return flipStream(function.apply(arg));
}
}
public static class LongFunctionStreamWrapper<R> implements LongFunction<R> {
public LongFunction<R> function;
public LongFunctionStreamWrapper(LongFunction<R> function) {
this.function = function;
}
@SuppressWarnings("unchecked")
private R flipStream(R maybeStream) {
if (maybeStream == null) {
return null;
}
if (maybeStream instanceof java.util.stream.LongStream) {
return (R)
j$.util.stream.LongStream.wrap_convert((java.util.stream.LongStream) maybeStream);
}
if (maybeStream instanceof j$.util.stream.LongStream) {
return (R) j$.util.stream.LongStream.wrap_convert((j$.util.stream.LongStream) maybeStream);
}
throw exception("java.util.stream.LongStream", maybeStream.getClass());
}
public R apply(long arg) {
return flipStream(function.apply(arg));
}
}
}