Merge "Added 8th and 9th argument to pooled lambdas"
This commit is contained in:
@@ -4117,6 +4117,10 @@ com.android.internal.util.StateMachine$SmHandler$StateInfo
|
||||
com.android.internal.util.VirtualRefBasePtr
|
||||
com.android.internal.util.XmlUtils
|
||||
com.android.internal.util.XmlUtils$WriteMapCallback
|
||||
com.android.internal.util.function.NonaConsumer
|
||||
com.android.internal.util.function.NonaFunction
|
||||
com.android.internal.util.function.OctConsumer
|
||||
com.android.internal.util.function.OctFunction
|
||||
com.android.internal.util.function.HeptConsumer
|
||||
com.android.internal.util.function.HeptFunction
|
||||
com.android.internal.util.function.HexConsumer
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
/*
|
||||
* Copyright (C) 2018 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.internal.util.function;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
/**
|
||||
* A 9-argument {@link Consumer}
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public interface NonaConsumer<A, B, C, D, E, F, G, H, I> {
|
||||
void accept(A a, B b, C c, D d, E e, F f, G g, H h, I i);
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
/*
|
||||
* Copyright (C) 2018 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.internal.util.function;
|
||||
|
||||
import java.util.function.Function;
|
||||
|
||||
/**
|
||||
* A 9-argument {@link Function}
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public interface NonaFunction<A, B, C, D, E, F, G, H, I, R> {
|
||||
R apply(A a, B b, C c, D d, E e, F f, G g, H h, I i);
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
/*
|
||||
* Copyright (C) 2018 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.internal.util.function;
|
||||
|
||||
import java.util.function.Predicate;
|
||||
|
||||
/**
|
||||
* A 9-argument {@link Predicate}
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public interface NonaPredicate<A, B, C, D, E, F, G, H, I> {
|
||||
boolean test(A a, B b, C c, D d, E e, F f, G g, H h, I i);
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
/*
|
||||
* Copyright (C) 2018 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.internal.util.function;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
/**
|
||||
* A 8-argument {@link Consumer}
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public interface OctConsumer<A, B, C, D, E, F, G, H> {
|
||||
void accept(A a, B b, C c, D d, E e, F f, G g, H h);
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
/*
|
||||
* Copyright (C) 2018 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.internal.util.function;
|
||||
|
||||
import java.util.function.Function;
|
||||
|
||||
/**
|
||||
* A 8-argument {@link Function}
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public interface OctFunction<A, B, C, D, E, F, G, H, R> {
|
||||
R apply(A a, B b, C c, D d, E e, F f, G g, H h);
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
/*
|
||||
* Copyright (C) 2018 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.internal.util.function;
|
||||
|
||||
import java.util.function.Predicate;
|
||||
|
||||
/**
|
||||
* A 8-argument {@link Predicate}
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public interface OctPredicate<A, B, C, D, E, F, G, H> {
|
||||
boolean test(A a, B b, C c, D d, E e, F f, G g, H h);
|
||||
}
|
||||
@@ -22,6 +22,10 @@ import com.android.internal.util.function.HeptConsumer;
|
||||
import com.android.internal.util.function.HeptFunction;
|
||||
import com.android.internal.util.function.HexConsumer;
|
||||
import com.android.internal.util.function.HexFunction;
|
||||
import com.android.internal.util.function.NonaConsumer;
|
||||
import com.android.internal.util.function.NonaFunction;
|
||||
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.QuintConsumer;
|
||||
@@ -39,61 +43,62 @@ import java.util.function.Function;
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
abstract class OmniFunction<A, B, C, D, E, F, G, R> implements
|
||||
abstract class OmniFunction<A, B, C, D, E, F, G, H, I, R> implements
|
||||
PooledFunction<A, R>, BiFunction<A, B, R>, TriFunction<A, B, C, R>,
|
||||
QuadFunction<A, B, C, D, R>, QuintFunction<A, B, C, D, E, R>,
|
||||
HexFunction<A, B, C, D, E, F, R>, HeptFunction<A, B, C, D, E, F, G, R>,
|
||||
OctFunction<A, B, C, D, E, F, G, H, R>, NonaFunction<A, B, C, D, E, F, G, H, I, R>,
|
||||
PooledConsumer<A>, BiConsumer<A, B>, TriConsumer<A, B, C>, QuadConsumer<A, B, C, D>,
|
||||
QuintConsumer<A, B, C, D, E>, HexConsumer<A, B, C, D, E, F>,
|
||||
HeptConsumer<A, B, C, D, E, F, G>,
|
||||
PooledPredicate<A>, BiPredicate<A, B>,
|
||||
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>, PooledPredicate<A>, BiPredicate<A, B>,
|
||||
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);
|
||||
abstract R invoke(A a, B b, C c, D d, E e, F f, G g, H h, I i);
|
||||
|
||||
@Override
|
||||
public R apply(A o, B o2) {
|
||||
return invoke(o, o2, null, null, null, null, null);
|
||||
return invoke(o, o2, null, null, null, null, null, null, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public R apply(A o) {
|
||||
return invoke(o, null, null, null, null, null, null);
|
||||
return invoke(o, null, null, null, null, null, null, null, null);
|
||||
}
|
||||
|
||||
public abstract <V> OmniFunction<A, B, C, D, E, F, G, V> andThen(
|
||||
public abstract <V> OmniFunction<A, B, C, D, E, F, G, H, I, V> andThen(
|
||||
Function<? super R, ? extends V> after);
|
||||
public abstract OmniFunction<A, B, C, D, E, F, G, R> negate();
|
||||
public abstract OmniFunction<A, B, C, D, E, F, G, H, I, R> negate();
|
||||
|
||||
@Override
|
||||
public void accept(A o, B o2) {
|
||||
invoke(o, o2, null, null, null, null, null);
|
||||
invoke(o, o2, null, null, null, null, null, null, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(A o) {
|
||||
invoke(o, null, null, null, null, null, null);
|
||||
invoke(o, null, null, null, null, null, null, null, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
invoke(null, null, null, null, null, null, null);
|
||||
invoke(null, null, null, null, null, null, null, null, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public R get() {
|
||||
return invoke(null, null, null, null, null, null, null);
|
||||
return invoke(null, 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);
|
||||
return (Boolean) invoke(o, o2, null, null, null, null, null, null, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean test(A o) {
|
||||
return (Boolean) invoke(o, null, null, null, null, null, null);
|
||||
return (Boolean) invoke(o, null, null, null, null, null, null, null, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -108,52 +113,72 @@ abstract class OmniFunction<A, B, C, D, E, F, G, R> implements
|
||||
|
||||
@Override
|
||||
public R apply(A a, B b, C c) {
|
||||
return invoke(a, b, c, null, null, null, null);
|
||||
return invoke(a, b, c, null, null, null, null, null, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(A a, B b, C c) {
|
||||
invoke(a, b, c, null, null, null, null);
|
||||
invoke(a, b, c, null, null, null, null, null, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public R apply(A a, B b, C c, D d) {
|
||||
return invoke(a, b, c, d, null, null, null);
|
||||
return invoke(a, b, c, d, null, null, null, null, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public R apply(A a, B b, C c, D d, E e) {
|
||||
return invoke(a, b, c, d, e, null, null);
|
||||
return invoke(a, b, c, d, e, null, null, null, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public R apply(A a, B b, C c, D d, E e, F f) {
|
||||
return invoke(a, b, c, d, e, f, null);
|
||||
return invoke(a, b, c, d, e, f, null, null, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public R apply(A a, B b, C c, D d, E e, F f, G g) {
|
||||
return invoke(a, b, c, d, e, f, g);
|
||||
return invoke(a, b, c, d, e, f, g, null, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public R apply(A a, B b, C c, D d, E e, F f, G g, H h) {
|
||||
return invoke(a, b, c, d, e, f, g, h, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public R apply(A a, B b, C c, D d, E e, F f, G g, H h, I i) {
|
||||
return invoke(a, b, c, d, e, f, g, h, i);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(A a, B b, C c, D d) {
|
||||
invoke(a, b, c, d, null, null, null);
|
||||
invoke(a, b, c, d, null, null, null, null, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(A a, B b, C c, D d, E e) {
|
||||
invoke(a, b, c, d, e, null, null);
|
||||
invoke(a, b, c, d, e, null, null, null, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(A a, B b, C c, D d, E e, F f) {
|
||||
invoke(a, b, c, d, e, f, null);
|
||||
invoke(a, b, c, d, e, f, null, null, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(A a, B b, C c, D d, E e, F f, G g) {
|
||||
invoke(a, b, c, d, e, f, g);
|
||||
invoke(a, b, c, d, e, f, g, null, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(A a, B b, C c, D d, E e, F f, G g, H h) {
|
||||
invoke(a, b, c, d, e, f, g, h, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(A a, B b, C c, D d, E e, F f, G g, H h, I i) {
|
||||
invoke(a, b, c, d, e, f, g, h, i);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -167,5 +192,5 @@ abstract class OmniFunction<A, B, C, D, E, F, G, R> implements
|
||||
}
|
||||
|
||||
@Override
|
||||
public abstract OmniFunction<A, B, C, D, E, F, G, R> recycleOnUse();
|
||||
public abstract OmniFunction<A, B, C, D, E, F, G, H, I, R> recycleOnUse();
|
||||
}
|
||||
|
||||
@@ -25,6 +25,10 @@ import com.android.internal.util.function.HeptConsumer;
|
||||
import com.android.internal.util.function.HeptFunction;
|
||||
import com.android.internal.util.function.HexConsumer;
|
||||
import com.android.internal.util.function.HexFunction;
|
||||
import com.android.internal.util.function.NonaConsumer;
|
||||
import com.android.internal.util.function.NonaFunction;
|
||||
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.QuintConsumer;
|
||||
@@ -176,7 +180,8 @@ public interface PooledLambda {
|
||||
Consumer<? super A> function,
|
||||
A arg1) {
|
||||
return acquire(PooledLambdaImpl.sPool,
|
||||
function, 1, 0, ReturnType.VOID, arg1, null, null, null, null, null, null);
|
||||
function, 1, 0, ReturnType.VOID, arg1, null, null, null, null, null, null, null,
|
||||
null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -192,7 +197,8 @@ public interface PooledLambda {
|
||||
Predicate<? super A> function,
|
||||
A arg1) {
|
||||
return acquire(PooledLambdaImpl.sPool,
|
||||
function, 1, 0, ReturnType.BOOLEAN, arg1, null, null, null, null, null, null);
|
||||
function, 1, 0, ReturnType.BOOLEAN, arg1, null, null, null, null, null, null, null,
|
||||
null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -208,7 +214,8 @@ public interface PooledLambda {
|
||||
Function<? super A, ? extends R> function,
|
||||
A arg1) {
|
||||
return acquire(PooledLambdaImpl.sPool,
|
||||
function, 1, 0, ReturnType.OBJECT, arg1, null, null, null, null, null, null);
|
||||
function, 1, 0, ReturnType.OBJECT, arg1, null, null, null, null, null, null, null,
|
||||
null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -238,7 +245,8 @@ public interface PooledLambda {
|
||||
A arg1) {
|
||||
synchronized (Message.sPoolSync) {
|
||||
PooledRunnable callback = acquire(PooledLambdaImpl.sMessageCallbacksPool,
|
||||
function, 1, 0, ReturnType.VOID, arg1, null, null, null, null, null, null);
|
||||
function, 1, 0, ReturnType.VOID, arg1, null, null, null, null, null, null, null,
|
||||
null);
|
||||
return Message.obtain().setCallback(callback.recycleOnUse());
|
||||
}
|
||||
}
|
||||
@@ -257,7 +265,8 @@ public interface PooledLambda {
|
||||
BiConsumer<? super A, ? super B> function,
|
||||
A arg1, B arg2) {
|
||||
return acquire(PooledLambdaImpl.sPool,
|
||||
function, 2, 0, ReturnType.VOID, arg1, arg2, null, null, null, null, null);
|
||||
function, 2, 0, ReturnType.VOID, arg1, arg2, null, null, null, null, null, null,
|
||||
null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -274,7 +283,8 @@ public interface PooledLambda {
|
||||
BiPredicate<? super A, ? super B> function,
|
||||
A arg1, B arg2) {
|
||||
return acquire(PooledLambdaImpl.sPool,
|
||||
function, 2, 0, ReturnType.BOOLEAN, arg1, arg2, null, null, null, null, null);
|
||||
function, 2, 0, ReturnType.BOOLEAN, arg1, arg2, null, null, null, null, null, null,
|
||||
null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -291,7 +301,8 @@ public interface PooledLambda {
|
||||
BiFunction<? super A, ? super B, ? extends R> function,
|
||||
A arg1, B arg2) {
|
||||
return acquire(PooledLambdaImpl.sPool,
|
||||
function, 2, 0, ReturnType.OBJECT, arg1, arg2, null, null, null, null, null);
|
||||
function, 2, 0, ReturnType.OBJECT, arg1, arg2, null, null, null, null, null, null,
|
||||
null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -308,7 +319,8 @@ public interface PooledLambda {
|
||||
BiConsumer<? super A, ? super B> function,
|
||||
ArgumentPlaceholder<A> arg1, B arg2) {
|
||||
return acquire(PooledLambdaImpl.sPool,
|
||||
function, 2, 1, ReturnType.VOID, arg1, arg2, null, null, null, null, null);
|
||||
function, 2, 1, ReturnType.VOID, arg1, arg2, null, null, null, null, null, null,
|
||||
null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -325,7 +337,8 @@ public interface PooledLambda {
|
||||
BiPredicate<? super A, ? super B> function,
|
||||
ArgumentPlaceholder<A> arg1, B arg2) {
|
||||
return acquire(PooledLambdaImpl.sPool,
|
||||
function, 2, 1, ReturnType.BOOLEAN, arg1, arg2, null, null, null, null, null);
|
||||
function, 2, 1, ReturnType.BOOLEAN, arg1, arg2, null, null, null, null, null, null,
|
||||
null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -342,7 +355,8 @@ public interface PooledLambda {
|
||||
BiFunction<? super A, ? super B, ? extends R> function,
|
||||
ArgumentPlaceholder<A> arg1, B arg2) {
|
||||
return acquire(PooledLambdaImpl.sPool,
|
||||
function, 2, 1, ReturnType.OBJECT, arg1, arg2, null, null, null, null, null);
|
||||
function, 2, 1, ReturnType.OBJECT, arg1, arg2, null, null, null, null, null, null,
|
||||
null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -359,7 +373,8 @@ public interface PooledLambda {
|
||||
BiConsumer<? super A, ? super B> function,
|
||||
A arg1, ArgumentPlaceholder<B> arg2) {
|
||||
return acquire(PooledLambdaImpl.sPool,
|
||||
function, 2, 1, ReturnType.VOID, arg1, arg2, null, null, null, null, null);
|
||||
function, 2, 1, ReturnType.VOID, arg1, arg2, null, null, null, null, null, null,
|
||||
null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -376,7 +391,8 @@ public interface PooledLambda {
|
||||
BiPredicate<? super A, ? super B> function,
|
||||
A arg1, ArgumentPlaceholder<B> arg2) {
|
||||
return acquire(PooledLambdaImpl.sPool,
|
||||
function, 2, 1, ReturnType.BOOLEAN, arg1, arg2, null, null, null, null, null);
|
||||
function, 2, 1, ReturnType.BOOLEAN, arg1, arg2, null, null, null, null, null, null,
|
||||
null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -393,7 +409,8 @@ public interface PooledLambda {
|
||||
BiFunction<? super A, ? super B, ? extends R> function,
|
||||
A arg1, ArgumentPlaceholder<B> arg2) {
|
||||
return acquire(PooledLambdaImpl.sPool,
|
||||
function, 2, 1, ReturnType.OBJECT, arg1, arg2, null, null, null, null, null);
|
||||
function, 2, 1, ReturnType.OBJECT, arg1, arg2, null, null, null, null, null, null,
|
||||
null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -424,7 +441,8 @@ public interface PooledLambda {
|
||||
A arg1, B arg2) {
|
||||
synchronized (Message.sPoolSync) {
|
||||
PooledRunnable callback = acquire(PooledLambdaImpl.sMessageCallbacksPool,
|
||||
function, 2, 0, ReturnType.VOID, arg1, arg2, null, null, null, null, null);
|
||||
function, 2, 0, ReturnType.VOID, arg1, arg2, null, null, null, null, null, null,
|
||||
null);
|
||||
return Message.obtain().setCallback(callback.recycleOnUse());
|
||||
}
|
||||
}
|
||||
@@ -444,7 +462,8 @@ public interface PooledLambda {
|
||||
TriConsumer<? super A, ? super B, ? super C> function,
|
||||
A arg1, B arg2, C arg3) {
|
||||
return acquire(PooledLambdaImpl.sPool,
|
||||
function, 3, 0, ReturnType.VOID, arg1, arg2, arg3, null, null, null, null);
|
||||
function, 3, 0, ReturnType.VOID, arg1, arg2, arg3, null, null, null, null, null,
|
||||
null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -462,7 +481,8 @@ public interface PooledLambda {
|
||||
TriFunction<? super A, ? super B, ? super C, ? extends R> function,
|
||||
A arg1, B arg2, C arg3) {
|
||||
return acquire(PooledLambdaImpl.sPool,
|
||||
function, 3, 0, ReturnType.OBJECT, arg1, arg2, arg3, null, null, null, null);
|
||||
function, 3, 0, ReturnType.OBJECT, arg1, arg2, arg3, null, null, null, null, null,
|
||||
null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -480,7 +500,8 @@ public interface PooledLambda {
|
||||
TriConsumer<? super A, ? super B, ? super C> function,
|
||||
ArgumentPlaceholder<A> arg1, B arg2, C arg3) {
|
||||
return acquire(PooledLambdaImpl.sPool,
|
||||
function, 3, 1, ReturnType.VOID, arg1, arg2, arg3, null, null, null, null);
|
||||
function, 3, 1, ReturnType.VOID, arg1, arg2, arg3, null, null, null, null, null,
|
||||
null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -498,7 +519,8 @@ public interface PooledLambda {
|
||||
TriFunction<? super A, ? super B, ? super C, ? extends R> function,
|
||||
ArgumentPlaceholder<A> arg1, B arg2, C arg3) {
|
||||
return acquire(PooledLambdaImpl.sPool,
|
||||
function, 3, 1, ReturnType.OBJECT, arg1, arg2, arg3, null, null, null, null);
|
||||
function, 3, 1, ReturnType.OBJECT, arg1, arg2, arg3, null, null, null, null, null,
|
||||
null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -516,7 +538,8 @@ public interface PooledLambda {
|
||||
TriConsumer<? super A, ? super B, ? super C> function,
|
||||
A arg1, ArgumentPlaceholder<B> arg2, C arg3) {
|
||||
return acquire(PooledLambdaImpl.sPool,
|
||||
function, 3, 1, ReturnType.VOID, arg1, arg2, arg3, null, null, null, null);
|
||||
function, 3, 1, ReturnType.VOID, arg1, arg2, arg3, null, null, null, null, null,
|
||||
null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -534,7 +557,8 @@ public interface PooledLambda {
|
||||
TriFunction<? super A, ? super B, ? super C, ? extends R> function,
|
||||
A arg1, ArgumentPlaceholder<B> arg2, C arg3) {
|
||||
return acquire(PooledLambdaImpl.sPool,
|
||||
function, 3, 1, ReturnType.OBJECT, arg1, arg2, arg3, null, null, null, null);
|
||||
function, 3, 1, ReturnType.OBJECT, arg1, arg2, arg3, null, null, null, null, null,
|
||||
null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -552,7 +576,8 @@ public interface PooledLambda {
|
||||
TriConsumer<? super A, ? super B, ? super C> function,
|
||||
A arg1, B arg2, ArgumentPlaceholder<C> arg3) {
|
||||
return acquire(PooledLambdaImpl.sPool,
|
||||
function, 3, 1, ReturnType.VOID, arg1, arg2, arg3, null, null, null, null);
|
||||
function, 3, 1, ReturnType.VOID, arg1, arg2, arg3, null, null, null, null, null,
|
||||
null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -570,7 +595,8 @@ public interface PooledLambda {
|
||||
TriFunction<? super A, ? super B, ? super C, ? extends R> function,
|
||||
A arg1, B arg2, ArgumentPlaceholder<C> arg3) {
|
||||
return acquire(PooledLambdaImpl.sPool,
|
||||
function, 3, 1, ReturnType.OBJECT, arg1, arg2, arg3, null, null, null, null);
|
||||
function, 3, 1, ReturnType.OBJECT, arg1, arg2, arg3, null, null, null, null, null,
|
||||
null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -602,7 +628,8 @@ public interface PooledLambda {
|
||||
A arg1, B arg2, C arg3) {
|
||||
synchronized (Message.sPoolSync) {
|
||||
PooledRunnable callback = acquire(PooledLambdaImpl.sMessageCallbacksPool,
|
||||
function, 3, 0, ReturnType.VOID, arg1, arg2, arg3, null, null, null, null);
|
||||
function, 3, 0, ReturnType.VOID, arg1, arg2, arg3, null, null, null, null, null,
|
||||
null);
|
||||
return Message.obtain().setCallback(callback.recycleOnUse());
|
||||
}
|
||||
}
|
||||
@@ -623,7 +650,8 @@ public interface PooledLambda {
|
||||
QuadConsumer<? super A, ? super B, ? super C, ? super D> function,
|
||||
A arg1, B arg2, C arg3, D arg4) {
|
||||
return acquire(PooledLambdaImpl.sPool,
|
||||
function, 4, 0, ReturnType.VOID, arg1, arg2, arg3, arg4, null, null, null);
|
||||
function, 4, 0, ReturnType.VOID, arg1, arg2, arg3, arg4, null, null, null, null,
|
||||
null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -642,7 +670,8 @@ public interface PooledLambda {
|
||||
QuadFunction<? super A, ? super B, ? super C, ? super D, ? extends R> function,
|
||||
A arg1, B arg2, C arg3, D arg4) {
|
||||
return acquire(PooledLambdaImpl.sPool,
|
||||
function, 4, 0, ReturnType.OBJECT, arg1, arg2, arg3, arg4, null, null, null);
|
||||
function, 4, 0, ReturnType.OBJECT, arg1, arg2, arg3, arg4, null, null, null, null,
|
||||
null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -661,7 +690,8 @@ public interface PooledLambda {
|
||||
QuadConsumer<? super A, ? super B, ? super C, ? super D> function,
|
||||
ArgumentPlaceholder<A> arg1, B arg2, C arg3, D arg4) {
|
||||
return acquire(PooledLambdaImpl.sPool,
|
||||
function, 4, 1, ReturnType.VOID, arg1, arg2, arg3, arg4, null, null, null);
|
||||
function, 4, 1, ReturnType.VOID, arg1, arg2, arg3, arg4, null, null, null, null,
|
||||
null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -680,7 +710,8 @@ public interface PooledLambda {
|
||||
QuadFunction<? super A, ? super B, ? super C, ? super D, ? extends R> function,
|
||||
ArgumentPlaceholder<A> arg1, B arg2, C arg3, D arg4) {
|
||||
return acquire(PooledLambdaImpl.sPool,
|
||||
function, 4, 1, ReturnType.OBJECT, arg1, arg2, arg3, arg4, null, null, null);
|
||||
function, 4, 1, ReturnType.OBJECT, arg1, arg2, arg3, arg4, null, null, null, null,
|
||||
null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -699,7 +730,8 @@ public interface PooledLambda {
|
||||
QuadConsumer<? super A, ? super B, ? super C, ? super D> function,
|
||||
A arg1, ArgumentPlaceholder<B> arg2, C arg3, D arg4) {
|
||||
return acquire(PooledLambdaImpl.sPool,
|
||||
function, 4, 1, ReturnType.VOID, arg1, arg2, arg3, arg4, null, null, null);
|
||||
function, 4, 1, ReturnType.VOID, arg1, arg2, arg3, arg4, null, null, null, null,
|
||||
null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -718,7 +750,8 @@ public interface PooledLambda {
|
||||
QuadFunction<? super A, ? super B, ? super C, ? super D, ? extends R> function,
|
||||
A arg1, ArgumentPlaceholder<B> arg2, C arg3, D arg4) {
|
||||
return acquire(PooledLambdaImpl.sPool,
|
||||
function, 4, 1, ReturnType.OBJECT, arg1, arg2, arg3, arg4, null, null, null);
|
||||
function, 4, 1, ReturnType.OBJECT, arg1, arg2, arg3, arg4, null, null, null, null,
|
||||
null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -737,7 +770,8 @@ public interface PooledLambda {
|
||||
QuadConsumer<? super A, ? super B, ? super C, ? super D> function,
|
||||
A arg1, B arg2, ArgumentPlaceholder<C> arg3, D arg4) {
|
||||
return acquire(PooledLambdaImpl.sPool,
|
||||
function, 4, 1, ReturnType.VOID, arg1, arg2, arg3, arg4, null, null, null);
|
||||
function, 4, 1, ReturnType.VOID, arg1, arg2, arg3, arg4, null, null, null, null,
|
||||
null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -756,7 +790,8 @@ public interface PooledLambda {
|
||||
QuadFunction<? super A, ? super B, ? super C, ? super D, ? extends R> function,
|
||||
A arg1, B arg2, ArgumentPlaceholder<C> arg3, D arg4) {
|
||||
return acquire(PooledLambdaImpl.sPool,
|
||||
function, 4, 1, ReturnType.OBJECT, arg1, arg2, arg3, arg4, null, null, null);
|
||||
function, 4, 1, ReturnType.OBJECT, arg1, arg2, arg3, arg4, null, null, null, null,
|
||||
null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -775,7 +810,8 @@ public interface PooledLambda {
|
||||
QuadConsumer<? super A, ? super B, ? super C, ? super D> function,
|
||||
A arg1, B arg2, C arg3, ArgumentPlaceholder<D> arg4) {
|
||||
return acquire(PooledLambdaImpl.sPool,
|
||||
function, 4, 1, ReturnType.VOID, arg1, arg2, arg3, arg4, null, null, null);
|
||||
function, 4, 1, ReturnType.VOID, arg1, arg2, arg3, arg4, null, null, null, null,
|
||||
null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -794,7 +830,8 @@ public interface PooledLambda {
|
||||
QuadFunction<? super A, ? super B, ? super C, ? super D, ? extends R> function,
|
||||
A arg1, B arg2, C arg3, ArgumentPlaceholder<D> arg4) {
|
||||
return acquire(PooledLambdaImpl.sPool,
|
||||
function, 4, 1, ReturnType.OBJECT, arg1, arg2, arg3, arg4, null, null, null);
|
||||
function, 4, 1, ReturnType.OBJECT, arg1, arg2, arg3, arg4, null, null, null, null,
|
||||
null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -827,7 +864,8 @@ public interface PooledLambda {
|
||||
A arg1, B arg2, C arg3, D arg4) {
|
||||
synchronized (Message.sPoolSync) {
|
||||
PooledRunnable callback = acquire(PooledLambdaImpl.sMessageCallbacksPool,
|
||||
function, 4, 0, ReturnType.VOID, arg1, arg2, arg3, arg4, null, null, null);
|
||||
function, 4, 0, ReturnType.VOID, arg1, arg2, arg3, arg4, null, null, null, null,
|
||||
null);
|
||||
return Message.obtain().setCallback(callback.recycleOnUse());
|
||||
}
|
||||
}
|
||||
@@ -849,7 +887,8 @@ public interface PooledLambda {
|
||||
QuintConsumer<? super A, ? super B, ? super C, ? super D, ? super E> function,
|
||||
A arg1, B arg2, C arg3, D arg4, E arg5) {
|
||||
return acquire(PooledLambdaImpl.sPool,
|
||||
function, 5, 0, ReturnType.VOID, arg1, arg2, arg3, arg4, arg5, null, null);
|
||||
function, 5, 0, ReturnType.VOID, arg1, arg2, arg3, arg4, arg5, null, null, null,
|
||||
null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -869,7 +908,8 @@ public interface PooledLambda {
|
||||
QuintFunction<? super A, ? super B, ? super C, ? super D, ? super E, ? extends R>
|
||||
function, A arg1, B arg2, C arg3, D arg4, E arg5) {
|
||||
return acquire(PooledLambdaImpl.sPool,
|
||||
function, 5, 0, ReturnType.OBJECT, arg1, arg2, arg3, arg4, arg5, null, null);
|
||||
function, 5, 0, ReturnType.OBJECT, arg1, arg2, arg3, arg4, arg5, null, null, null,
|
||||
null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -904,7 +944,8 @@ public interface PooledLambda {
|
||||
A arg1, B arg2, C arg3, D arg4, E arg5) {
|
||||
synchronized (Message.sPoolSync) {
|
||||
PooledRunnable callback = acquire(PooledLambdaImpl.sMessageCallbacksPool,
|
||||
function, 5, 0, ReturnType.VOID, arg1, arg2, arg3, arg4, arg5, null, null);
|
||||
function, 5, 0, ReturnType.VOID, arg1, arg2, arg3, arg4, arg5, null, null, null,
|
||||
null);
|
||||
return Message.obtain().setCallback(callback.recycleOnUse());
|
||||
}
|
||||
}
|
||||
@@ -927,7 +968,8 @@ public interface PooledLambda {
|
||||
HexConsumer<? super A, ? super B, ? super C, ? super D, ? super E, ? super F> function,
|
||||
A arg1, B arg2, C arg3, D arg4, E arg5, F arg6) {
|
||||
return acquire(PooledLambdaImpl.sPool,
|
||||
function, 6, 0, ReturnType.VOID, arg1, arg2, arg3, arg4, arg5, arg6, null);
|
||||
function, 6, 0, ReturnType.VOID, arg1, arg2, arg3, arg4, arg5, arg6, null, null,
|
||||
null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -948,7 +990,8 @@ public interface PooledLambda {
|
||||
HexFunction<? super A, ? super B, ? super C, ? super D, ? super E, ? super F,
|
||||
? extends R> function, A arg1, B arg2, C arg3, D arg4, E arg5, F arg6) {
|
||||
return acquire(PooledLambdaImpl.sPool,
|
||||
function, 6, 0, ReturnType.OBJECT, arg1, arg2, arg3, arg4, arg5, arg6, null);
|
||||
function, 6, 0, ReturnType.OBJECT, arg1, arg2, arg3, arg4, arg5, arg6, null, null,
|
||||
null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -984,7 +1027,8 @@ public interface PooledLambda {
|
||||
A arg1, B arg2, C arg3, D arg4, E arg5, F arg6) {
|
||||
synchronized (Message.sPoolSync) {
|
||||
PooledRunnable callback = acquire(PooledLambdaImpl.sMessageCallbacksPool,
|
||||
function, 6, 0, ReturnType.VOID, arg1, arg2, arg3, arg4, arg5, arg6, null);
|
||||
function, 6, 0, ReturnType.VOID, arg1, arg2, arg3, arg4, arg5, arg6, null, null,
|
||||
null);
|
||||
return Message.obtain().setCallback(callback.recycleOnUse());
|
||||
}
|
||||
}
|
||||
@@ -1008,7 +1052,8 @@ public interface PooledLambda {
|
||||
HeptConsumer<? super A, ? super B, ? super C, ? super D, ? super E, ? super F,
|
||||
? super G> function, A arg1, B arg2, C arg3, D arg4, E arg5, F arg6, G arg7) {
|
||||
return acquire(PooledLambdaImpl.sPool,
|
||||
function, 7, 0, ReturnType.VOID, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
|
||||
function, 7, 0, ReturnType.VOID, arg1, arg2, arg3, arg4, arg5, arg6, arg7, null,
|
||||
null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1031,7 +1076,8 @@ public interface PooledLambda {
|
||||
? super G, ? extends R> function,
|
||||
A arg1, B arg2, C arg3, D arg4, E arg5, F arg6, G arg7) {
|
||||
return acquire(PooledLambdaImpl.sPool,
|
||||
function, 7, 0, ReturnType.OBJECT, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
|
||||
function, 7, 0, ReturnType.OBJECT, arg1, arg2, arg3, arg4, arg5, arg6, arg7, null,
|
||||
null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1068,7 +1114,195 @@ public interface PooledLambda {
|
||||
? super G> function, A arg1, B arg2, C arg3, D arg4, E arg5, F arg6, G arg7) {
|
||||
synchronized (Message.sPoolSync) {
|
||||
PooledRunnable callback = acquire(PooledLambdaImpl.sMessageCallbacksPool,
|
||||
function, 7, 0, ReturnType.VOID, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
|
||||
function, 7, 0, ReturnType.VOID, arg1, arg2, arg3, arg4, arg5, arg6, arg7, null,
|
||||
null);
|
||||
return Message.obtain().setCallback(callback.recycleOnUse());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@link PooledRunnable} factory
|
||||
*
|
||||
* @param function non-capturing lambda(typically an unbounded method reference)
|
||||
* to be invoked on call
|
||||
* @param arg1 parameter supplied to {@code function} on call
|
||||
* @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
|
||||
* @param arg6 parameter supplied to {@code function} on call
|
||||
* @param arg7 parameter supplied to {@code function} on call
|
||||
* @param arg8 parameter supplied to {@code function} on call
|
||||
* @return a {@link PooledRunnable}, equivalent to lambda:
|
||||
* {@code () -> function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) }
|
||||
*/
|
||||
static <A, B, C, D, E, F, G, H> PooledRunnable obtainRunnable(
|
||||
OctConsumer<? super A, ? super B, ? super C, ? super D, ? super E, ? super F, ? super G,
|
||||
? super H> function, A arg1, B arg2, C arg3, D arg4, E arg5, F arg6, G arg7,
|
||||
H arg8) {
|
||||
return acquire(PooledLambdaImpl.sPool,
|
||||
function, 8, 0, ReturnType.VOID, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8,
|
||||
null);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@link PooledSupplier} factory
|
||||
*
|
||||
* @param function non-capturing lambda(typically an unbounded method reference)
|
||||
* to be invoked on call
|
||||
* @param arg1 parameter supplied to {@code function} on call
|
||||
* @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
|
||||
* @param arg6 parameter supplied to {@code function} on call
|
||||
* @param arg7 parameter supplied to {@code function} on call
|
||||
* @param arg8 parameter supplied to {@code function} on call
|
||||
* @return a {@link PooledSupplier}, equivalent to lambda:
|
||||
* {@code () -> function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) }
|
||||
*/
|
||||
static <A, B, C, D, E, F, G, H, R> PooledSupplier<R> obtainSupplier(
|
||||
OctFunction<? super A, ? super B, ? super C, ? super D, ? super E, ? super F,
|
||||
? super G, ? super H, ? extends R> function,
|
||||
A arg1, B arg2, C arg3, D arg4, E arg5, F arg6, G arg7, H arg8) {
|
||||
return acquire(PooledLambdaImpl.sPool,
|
||||
function, 8, 0, ReturnType.OBJECT, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8,
|
||||
null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Factory of {@link Message}s that contain an
|
||||
* ({@link PooledLambda#recycleOnUse auto-recycling}) {@link PooledRunnable} as its
|
||||
* {@link Message#getCallback internal callback}.
|
||||
*
|
||||
* The callback is equivalent to one obtainable via
|
||||
* {@link #obtainRunnable(QuintConsumer, Object, Object, Object, Object, Object)}
|
||||
*
|
||||
* Note that using this method with {@link android.os.Handler#handleMessage}
|
||||
* is more efficient than the alternative of {@link android.os.Handler#post}
|
||||
* with a {@link PooledRunnable} due to the lack of 2 separate synchronization points
|
||||
* when obtaining {@link Message} and {@link PooledRunnable} from pools separately
|
||||
*
|
||||
* You may optionally set a {@link Message#what} for the message if you want to be
|
||||
* able to cancel it via {@link android.os.Handler#removeMessages}, but otherwise
|
||||
* there's no need to do so
|
||||
*
|
||||
* @param function non-capturing lambda(typically an unbounded method reference)
|
||||
* to be invoked on call
|
||||
* @param arg1 parameter supplied to {@code function} on call
|
||||
* @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
|
||||
* @param arg6 parameter supplied to {@code function} on call
|
||||
* @param arg7 parameter supplied to {@code function} on call
|
||||
* @param arg8 parameter supplied to {@code function} on call
|
||||
* @return a {@link Message} invoking {@code function(arg1, arg2, arg3, arg4, arg5, arg6,
|
||||
* arg7, arg8) } when handled
|
||||
*/
|
||||
static <A, B, C, D, E, F, G, H> Message obtainMessage(
|
||||
OctConsumer<? super A, ? super B, ? super C, ? super D, ? super E, ? super F, ? super G,
|
||||
? super H> function, A arg1, B arg2, C arg3, D arg4, E arg5, F arg6, G arg7,
|
||||
H arg8) {
|
||||
synchronized (Message.sPoolSync) {
|
||||
PooledRunnable callback = acquire(PooledLambdaImpl.sMessageCallbacksPool,
|
||||
function, 8, 0, ReturnType.VOID, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8,
|
||||
null);
|
||||
return Message.obtain().setCallback(callback.recycleOnUse());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@link PooledRunnable} factory
|
||||
*
|
||||
* @param function non-capturing lambda(typically an unbounded method reference)
|
||||
* to be invoked on call
|
||||
* @param arg1 parameter supplied to {@code function} on call
|
||||
* @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
|
||||
* @param arg6 parameter supplied to {@code function} on call
|
||||
* @param arg7 parameter supplied to {@code function} on call
|
||||
* @param arg8 parameter supplied to {@code function} on call
|
||||
* @param arg9 parameter supplied to {@code function} on call
|
||||
* @return a {@link PooledRunnable}, equivalent to lambda:
|
||||
* {@code () -> function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) }
|
||||
*/
|
||||
static <A, B, C, D, E, F, G, H, I> PooledRunnable obtainRunnable(
|
||||
NonaConsumer<? super A, ? super B, ? super C, ? super D, ? super E, ? super F,
|
||||
? super G, ? super H, ? super I> function, A arg1, B arg2, C arg3, D arg4,
|
||||
E arg5, F arg6, G arg7, H arg8, I arg9) {
|
||||
return acquire(PooledLambdaImpl.sPool,
|
||||
function, 9, 0, ReturnType.VOID, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8,
|
||||
arg9);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@link PooledSupplier} factory
|
||||
*
|
||||
* @param function non-capturing lambda(typically an unbounded method reference)
|
||||
* to be invoked on call
|
||||
* @param arg1 parameter supplied to {@code function} on call
|
||||
* @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
|
||||
* @param arg6 parameter supplied to {@code function} on call
|
||||
* @param arg7 parameter supplied to {@code function} on call
|
||||
* @param arg8 parameter supplied to {@code function} on call
|
||||
* @param arg9 parameter supplied to {@code function} on call
|
||||
* @return a {@link PooledSupplier}, equivalent to lambda:
|
||||
* {@code () -> function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) }
|
||||
*/
|
||||
static <A, B, C, D, E, F, G, H, I, R> PooledSupplier<R> obtainSupplier(
|
||||
NonaFunction<? super A, ? super B, ? super C, ? super D, ? super E, ? super F,
|
||||
? super G, ? super H, ? super I, ? extends R> function,
|
||||
A arg1, B arg2, C arg3, D arg4, E arg5, F arg6, G arg7, H arg8, I arg9) {
|
||||
return acquire(PooledLambdaImpl.sPool,
|
||||
function, 9, 0, ReturnType.OBJECT, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8,
|
||||
arg9);
|
||||
}
|
||||
|
||||
/**
|
||||
* Factory of {@link Message}s that contain an
|
||||
* ({@link PooledLambda#recycleOnUse auto-recycling}) {@link PooledRunnable} as its
|
||||
* {@link Message#getCallback internal callback}.
|
||||
*
|
||||
* The callback is equivalent to one obtainable via
|
||||
* {@link #obtainRunnable(QuintConsumer, Object, Object, Object, Object, Object)}
|
||||
*
|
||||
* Note that using this method with {@link android.os.Handler#handleMessage}
|
||||
* is more efficient than the alternative of {@link android.os.Handler#post}
|
||||
* with a {@link PooledRunnable} due to the lack of 2 separate synchronization points
|
||||
* when obtaining {@link Message} and {@link PooledRunnable} from pools separately
|
||||
*
|
||||
* You may optionally set a {@link Message#what} for the message if you want to be
|
||||
* able to cancel it via {@link android.os.Handler#removeMessages}, but otherwise
|
||||
* there's no need to do so
|
||||
*
|
||||
* @param function non-capturing lambda(typically an unbounded method reference)
|
||||
* to be invoked on call
|
||||
* @param arg1 parameter supplied to {@code function} on call
|
||||
* @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
|
||||
* @param arg6 parameter supplied to {@code function} on call
|
||||
* @param arg7 parameter supplied to {@code function} on call
|
||||
* @param arg8 parameter supplied to {@code function} on call
|
||||
* @param arg9 parameter supplied to {@code function} on call
|
||||
* @return a {@link Message} invoking {@code function(arg1, arg2, arg3, arg4, arg5, arg6,
|
||||
* arg7, arg8, arg9) } when handled
|
||||
*/
|
||||
static <A, B, C, D, E, F, G, H, I> Message obtainMessage(
|
||||
NonaConsumer<? super A, ? super B, ? super C, ? super D, ? super E, ? super F,
|
||||
? super G, ? super H, ? super I> function, A arg1, B arg2, C arg3, D arg4,
|
||||
E arg5, F arg6, G arg7, H arg8, I arg9) {
|
||||
synchronized (Message.sPoolSync) {
|
||||
PooledRunnable callback = acquire(PooledLambdaImpl.sMessageCallbacksPool,
|
||||
function, 9, 0, ReturnType.VOID, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8,
|
||||
arg9);
|
||||
return Message.obtain().setCallback(callback.recycleOnUse());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,6 +30,12 @@ import com.android.internal.util.function.HeptPredicate;
|
||||
import com.android.internal.util.function.HexConsumer;
|
||||
import com.android.internal.util.function.HexFunction;
|
||||
import com.android.internal.util.function.HexPredicate;
|
||||
import com.android.internal.util.function.NonaConsumer;
|
||||
import com.android.internal.util.function.NonaFunction;
|
||||
import com.android.internal.util.function.NonaPredicate;
|
||||
import com.android.internal.util.function.OctConsumer;
|
||||
import com.android.internal.util.function.OctFunction;
|
||||
import com.android.internal.util.function.OctPredicate;
|
||||
import com.android.internal.util.function.QuadConsumer;
|
||||
import com.android.internal.util.function.QuadFunction;
|
||||
import com.android.internal.util.function.QuadPredicate;
|
||||
@@ -54,12 +60,12 @@ import java.util.function.Supplier;
|
||||
* @hide
|
||||
*/
|
||||
final class PooledLambdaImpl<R> extends OmniFunction<Object,
|
||||
Object, Object, Object, Object, Object, Object, R> {
|
||||
Object, Object, Object, Object, Object, Object, Object, Object, R> {
|
||||
|
||||
private static final boolean DEBUG = false;
|
||||
private static final String LOG_TAG = "PooledLambdaImpl";
|
||||
|
||||
private static final int MAX_ARGS = 7;
|
||||
private static final int MAX_ARGS = 9;
|
||||
|
||||
private static final int MAX_POOL_SIZE = 50;
|
||||
|
||||
@@ -125,7 +131,7 @@ final class PooledLambdaImpl<R> extends OmniFunction<Object,
|
||||
|
||||
/**
|
||||
* Bit schema:
|
||||
* AAAAAAABCDEEEEEEFFFFFF
|
||||
* AAAAAAAAABCDEEEEEEFFFFFF
|
||||
*
|
||||
* Where:
|
||||
* A - whether {@link #mArgs arg} at corresponding index was specified at
|
||||
@@ -161,17 +167,19 @@ final class PooledLambdaImpl<R> extends OmniFunction<Object,
|
||||
}
|
||||
|
||||
@Override
|
||||
R invoke(Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) {
|
||||
R invoke(Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7,
|
||||
Object a8, Object a9) {
|
||||
checkNotRecycled();
|
||||
if (DEBUG) {
|
||||
Log.i(LOG_TAG, this + ".invoke("
|
||||
+ commaSeparateFirstN(
|
||||
new Object[] { a1, a2, a3, a4, a5, a6, a7 },
|
||||
new Object[] { a1, a2, a3, a4, a5, a6, a7, a8, a9 },
|
||||
LambdaType.decodeArgCount(getFlags(MASK_EXPOSED_AS)))
|
||||
+ ")");
|
||||
}
|
||||
final boolean notUsed = fillInArg(a1) && fillInArg(a2) && fillInArg(a3)
|
||||
&& fillInArg(a4) && fillInArg(a5) && fillInArg(a6) && fillInArg(a7);
|
||||
final boolean notUsed = fillInArg(a1) && fillInArg(a2) && fillInArg(a3) && fillInArg(a4)
|
||||
&& fillInArg(a5) && fillInArg(a6) && fillInArg(a7) && fillInArg(a8)
|
||||
&& fillInArg(a9);
|
||||
int argCount = LambdaType.decodeArgCount(getFlags(MASK_FUNC_TYPE));
|
||||
if (argCount != LambdaType.MASK_ARG_COUNT) {
|
||||
for (int i = 0; i < argCount; i++) {
|
||||
@@ -335,7 +343,7 @@ final class PooledLambdaImpl<R> extends OmniFunction<Object,
|
||||
popArg(2), popArg(3), popArg(4), popArg(5));
|
||||
}
|
||||
}
|
||||
}
|
||||
} break;
|
||||
|
||||
case 7: {
|
||||
switch (returnType) {
|
||||
@@ -356,7 +364,49 @@ final class PooledLambdaImpl<R> extends OmniFunction<Object,
|
||||
popArg(5), popArg(6));
|
||||
}
|
||||
}
|
||||
}
|
||||
} break;
|
||||
|
||||
case 8: {
|
||||
switch (returnType) {
|
||||
case LambdaType.ReturnType.VOID: {
|
||||
((OctConsumer) mFunc).accept(popArg(0), popArg(1),
|
||||
popArg(2), popArg(3), popArg(4),
|
||||
popArg(5), popArg(6), popArg(7));
|
||||
return null;
|
||||
}
|
||||
case LambdaType.ReturnType.BOOLEAN: {
|
||||
return (R) (Object) ((OctPredicate) mFunc).test(popArg(0),
|
||||
popArg(1), popArg(2), popArg(3),
|
||||
popArg(4), popArg(5), popArg(6), popArg(7));
|
||||
}
|
||||
case LambdaType.ReturnType.OBJECT: {
|
||||
return (R) ((OctFunction) mFunc).apply(popArg(0), popArg(1),
|
||||
popArg(2), popArg(3), popArg(4),
|
||||
popArg(5), popArg(6), popArg(7));
|
||||
}
|
||||
}
|
||||
} break;
|
||||
|
||||
case 9: {
|
||||
switch (returnType) {
|
||||
case LambdaType.ReturnType.VOID: {
|
||||
((NonaConsumer) mFunc).accept(popArg(0), popArg(1),
|
||||
popArg(2), popArg(3), popArg(4), popArg(5),
|
||||
popArg(6), popArg(7), popArg(8));
|
||||
return null;
|
||||
}
|
||||
case LambdaType.ReturnType.BOOLEAN: {
|
||||
return (R) (Object) ((NonaPredicate) mFunc).test(popArg(0),
|
||||
popArg(1), popArg(2), popArg(3), popArg(4),
|
||||
popArg(5), popArg(6), popArg(7), popArg(8));
|
||||
}
|
||||
case LambdaType.ReturnType.OBJECT: {
|
||||
return (R) ((NonaFunction) mFunc).apply(popArg(0), popArg(1),
|
||||
popArg(2), popArg(3), popArg(4), popArg(5),
|
||||
popArg(6), popArg(7), popArg(8));
|
||||
}
|
||||
}
|
||||
} break;
|
||||
}
|
||||
throw new IllegalStateException("Unknown function type: " + LambdaType.toString(funcType));
|
||||
}
|
||||
@@ -419,8 +469,8 @@ final class PooledLambdaImpl<R> extends OmniFunction<Object,
|
||||
* Internal non-typesafe factory method for {@link PooledLambdaImpl}
|
||||
*/
|
||||
static <E extends PooledLambda> E acquire(Pool pool, Object func,
|
||||
int fNumArgs, int numPlaceholders, int fReturnType,
|
||||
Object a, Object b, Object c, Object d, Object e, Object f, Object g) {
|
||||
int fNumArgs, int numPlaceholders, int fReturnType, Object a, Object b, Object c,
|
||||
Object d, Object e, Object f, Object g, Object h, Object i) {
|
||||
PooledLambdaImpl r = acquire(pool);
|
||||
if (DEBUG) {
|
||||
Log.i(LOG_TAG,
|
||||
@@ -436,6 +486,8 @@ final class PooledLambdaImpl<R> extends OmniFunction<Object,
|
||||
+ ", e = " + e
|
||||
+ ", f = " + f
|
||||
+ ", g = " + g
|
||||
+ ", h = " + h
|
||||
+ ", i = " + i
|
||||
+ ")");
|
||||
}
|
||||
r.mFunc = func;
|
||||
@@ -449,6 +501,8 @@ final class PooledLambdaImpl<R> extends OmniFunction<Object,
|
||||
setIfInBounds(r.mArgs, 4, e);
|
||||
setIfInBounds(r.mArgs, 5, f);
|
||||
setIfInBounds(r.mArgs, 6, g);
|
||||
setIfInBounds(r.mArgs, 7, h);
|
||||
setIfInBounds(r.mArgs, 8, i);
|
||||
return (E) r;
|
||||
}
|
||||
|
||||
@@ -474,13 +528,14 @@ final class PooledLambdaImpl<R> extends OmniFunction<Object,
|
||||
}
|
||||
|
||||
@Override
|
||||
public OmniFunction<Object, Object, Object, Object, Object, Object, Object, R> negate() {
|
||||
public OmniFunction<Object, Object, Object, Object, Object, Object, Object, Object, Object,
|
||||
R> negate() {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public <V> OmniFunction<Object, Object, Object, Object, Object, Object, Object, V> andThen(
|
||||
Function<? super R, ? extends V> after) {
|
||||
public <V> OmniFunction<Object, Object, Object, Object, Object, Object, Object, Object, Object,
|
||||
V> andThen(Function<? super R, ? extends V> after) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@@ -500,7 +555,8 @@ final class PooledLambdaImpl<R> extends OmniFunction<Object,
|
||||
}
|
||||
|
||||
@Override
|
||||
public OmniFunction<Object, Object, Object, Object, Object, Object, Object, R> recycleOnUse() {
|
||||
public OmniFunction<Object, Object, Object, Object, Object, Object, Object, Object, Object,
|
||||
R> recycleOnUse() {
|
||||
if (DEBUG) Log.i(LOG_TAG, this + ".recycleOnUse()");
|
||||
mFlags |= FLAG_RECYCLE_ON_USE;
|
||||
return this;
|
||||
@@ -584,6 +640,8 @@ final class PooledLambdaImpl<R> extends OmniFunction<Object,
|
||||
case 5: return "Quint";
|
||||
case 6: return "Hex";
|
||||
case 7: return "Hept";
|
||||
case 8: return "Oct";
|
||||
case 9: return "Nona";
|
||||
default: throw new IllegalArgumentException("" + argCount);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user