Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f189acd0 authored by Wale Ogunwale's avatar Wale Ogunwale
Browse files

Add 3, 4, & 5 Predicate arg types to PooledLamdba

Bug: N/A
Test: They pass!
Change-Id: Ib3cd168c00899097ce4340ba10b34041f91bc32d
parent aa26bed5
Loading
Loading
Loading
Loading
+20 −1
Original line number Diff line number Diff line
@@ -30,10 +30,13 @@ import com.android.internal.util.function.OctConsumer;
import com.android.internal.util.function.OctFunction;
import com.android.internal.util.function.QuadConsumer;
import com.android.internal.util.function.QuadFunction;
import com.android.internal.util.function.QuadPredicate;
import com.android.internal.util.function.QuintConsumer;
import com.android.internal.util.function.QuintFunction;
import com.android.internal.util.function.QuintPredicate;
import com.android.internal.util.function.TriConsumer;
import com.android.internal.util.function.TriFunction;
import com.android.internal.util.function.TriPredicate;
import com.android.internal.util.function.UndecConsumer;
import com.android.internal.util.function.UndecFunction;

@@ -59,7 +62,8 @@ abstract class OmniFunction<A, B, C, D, E, F, G, H, I, J, K, R> implements
        HeptConsumer<A, B, C, D, E, F, G>, OctConsumer<A, B, C, D, E, F, G, H>,
        NonaConsumer<A, B, C, D, E, F, G, H, I>, DecConsumer<A, B, C, D, E, F, G, H, I, J>,
        UndecConsumer<A, B, C, D, E, F, G, H, I, J, K>,
        PooledPredicate<A>, BiPredicate<A, B>, PooledSupplier<R>, PooledRunnable, ThrowingRunnable,
        PooledPredicate<A>, BiPredicate<A, B>, TriPredicate<A, B, C>, QuadPredicate<A, B, C, D>,
        QuintPredicate<A, B, C, D, E>, PooledSupplier<R>, PooledRunnable, ThrowingRunnable,
        ThrowingSupplier<R>, PooledSupplier.OfInt, PooledSupplier.OfLong, PooledSupplier.OfDouble {

    abstract R invoke(A a, B b, C c, D d, E e, F f, G g, H h, I i, J j, K k);
@@ -98,6 +102,21 @@ abstract class OmniFunction<A, B, C, D, E, F, G, H, I, J, K, R> implements
        return invoke(null, null, null, null, null, null, null, null, null, null, null);
    }

    @Override
    public boolean test(A o, B o2, C o3, D o4, E o5) {
        return (Boolean) invoke(o, o2, o3, o4, o5, null, null, null, null, null, null);
    }

    @Override
    public boolean test(A o, B o2, C o3, D o4) {
        return (Boolean) invoke(o, o2, o3, o4, null, null, null, null, null, null, null);
    }

    @Override
    public boolean test(A o, B o2, C o3) {
        return (Boolean) invoke(o, o2, o3, null, null, null, null, null, null, null, null);
    }

    @Override
    public boolean test(A o, B o2) {
        return (Boolean) invoke(o, o2, null, null, null, null, null, null, null, null, null);
+63 −0
Original line number Diff line number Diff line
@@ -33,10 +33,13 @@ import com.android.internal.util.function.OctConsumer;
import com.android.internal.util.function.OctFunction;
import com.android.internal.util.function.QuadConsumer;
import com.android.internal.util.function.QuadFunction;
import com.android.internal.util.function.QuadPredicate;
import com.android.internal.util.function.QuintConsumer;
import com.android.internal.util.function.QuintFunction;
import com.android.internal.util.function.QuintPredicate;
import com.android.internal.util.function.TriConsumer;
import com.android.internal.util.function.TriFunction;
import com.android.internal.util.function.TriPredicate;
import com.android.internal.util.function.UndecConsumer;
import com.android.internal.util.function.UndecFunction;
import com.android.internal.util.function.pooled.PooledLambdaImpl.LambdaType.ReturnType;
@@ -345,6 +348,66 @@ public interface PooledLambda {
                null, null, null);
    }

    /**
     * {@link PooledPredicate} factory
     *
     * @param function non-capturing lambda(typically an unbounded method reference)
     *                 to be invoked on call
     * @param arg1 placeholder for a missing argument. Use {@link #__} to get one
     * @param arg2 parameter supplied to {@code function} on call
     * @param arg3 parameter supplied to {@code function} on call
     * @return a {@link PooledPredicate}, equivalent to lambda:
     *         {@code (arg1) -> function(arg1, arg2, arg3) }
     */
    static <A, B, C> PooledPredicate<A> obtainPredicate(
            TriPredicate<? super A, ? super B, ? super C> function,
            ArgumentPlaceholder<A> arg1, B arg2, C arg3) {
        return acquire(PooledLambdaImpl.sPool,
                function, 3, 1, ReturnType.BOOLEAN, arg1, arg2, arg3, null, null, null, null, null,
                null, null, null);
    }

    /**
     * {@link PooledPredicate} factory
     *
     * @param function non-capturing lambda(typically an unbounded method reference)
     *                 to be invoked on call
     * @param arg1 placeholder for a missing argument. Use {@link #__} to get one
     * @param arg2 parameter supplied to {@code function} on call
     * @param arg3 parameter supplied to {@code function} on call
     * @param arg4 parameter supplied to {@code function} on call
     * @return a {@link PooledPredicate}, equivalent to lambda:
     *         {@code (arg1) -> function(arg1, arg2, arg3, arg4) }
     */
    static <A, B, C, D> PooledPredicate<A> obtainPredicate(
            QuadPredicate<? super A, ? super B, ? super C, ? super D> function,
            ArgumentPlaceholder<A> arg1, B arg2, C arg3, D arg4) {
        return acquire(PooledLambdaImpl.sPool,
                function, 3, 1, ReturnType.BOOLEAN, arg1, arg2, arg3, arg4, null, null, null, null,
                null, null, null);
    }

    /**
     * {@link PooledPredicate} factory
     *
     * @param function non-capturing lambda(typically an unbounded method reference)
     *                 to be invoked on call
     * @param arg1 placeholder for a missing argument. Use {@link #__} to get one
     * @param arg2 parameter supplied to {@code function} on call
     * @param arg3 parameter supplied to {@code function} on call
     * @param arg4 parameter supplied to {@code function} on call
     * @param arg5 parameter supplied to {@code function} on call
     * @return a {@link PooledPredicate}, equivalent to lambda:
     *         {@code (arg1) -> function(arg1, arg2, arg3, arg4, arg5) }
     */
    static <A, B, C, D, E> PooledPredicate<A> obtainPredicate(
            QuintPredicate<? super A, ? super B, ? super C, ? super D, ? super E> function,
            ArgumentPlaceholder<A> arg1, B arg2, C arg3, D arg4, E arg5) {
        return acquire(PooledLambdaImpl.sPool,
                function, 3, 1, ReturnType.BOOLEAN, arg1, arg2, arg3, arg4, arg5, null, null, null,
                null, null, null);
    }

    /**
     * {@link PooledFunction} factory
     *