Skip to content

Commit 7bf3f80

Browse files
committed
feat: add invoke extensions for java.util.function types
1 parent f1188df commit 7bf3f80

1 file changed

Lines changed: 92 additions & 0 deletions

File tree

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
@file:Suppress("unused", "NOTHING_TO_INLINE")
2+
@file:JvmName("java8-function-invoke")
3+
4+
package net.ccbluex.fastutil
5+
6+
import java.util.function.BiConsumer
7+
import java.util.function.BiFunction
8+
import java.util.function.BiPredicate
9+
import java.util.function.BinaryOperator
10+
import java.util.function.BooleanSupplier
11+
import java.util.function.Consumer
12+
import java.util.function.DoubleBinaryOperator
13+
import java.util.function.DoubleConsumer
14+
import java.util.function.DoubleFunction
15+
import java.util.function.DoublePredicate
16+
import java.util.function.DoubleSupplier
17+
import java.util.function.DoubleToIntFunction
18+
import java.util.function.DoubleToLongFunction
19+
import java.util.function.DoubleUnaryOperator
20+
import java.util.function.Function
21+
import java.util.function.IntBinaryOperator
22+
import java.util.function.IntConsumer
23+
import java.util.function.IntFunction
24+
import java.util.function.IntPredicate
25+
import java.util.function.IntSupplier
26+
import java.util.function.IntToDoubleFunction
27+
import java.util.function.IntToLongFunction
28+
import java.util.function.IntUnaryOperator
29+
import java.util.function.LongBinaryOperator
30+
import java.util.function.LongConsumer
31+
import java.util.function.LongFunction
32+
import java.util.function.LongPredicate
33+
import java.util.function.LongSupplier
34+
import java.util.function.LongToDoubleFunction
35+
import java.util.function.LongToIntFunction
36+
import java.util.function.LongUnaryOperator
37+
import java.util.function.ObjDoubleConsumer
38+
import java.util.function.ObjIntConsumer
39+
import java.util.function.ObjLongConsumer
40+
import java.util.function.Predicate
41+
import java.util.function.Supplier
42+
import java.util.function.ToDoubleBiFunction
43+
import java.util.function.ToDoubleFunction
44+
import java.util.function.ToIntBiFunction
45+
import java.util.function.ToIntFunction
46+
import java.util.function.ToLongBiFunction
47+
import java.util.function.ToLongFunction
48+
import java.util.function.UnaryOperator
49+
50+
inline operator fun <T, U> BiConsumer<T, U>.invoke(t: T, u: U) = accept(t, u)
51+
inline operator fun <T, U, R> BiFunction<T, U, R>.invoke(t: T, u: U): R = apply(t, u)
52+
inline operator fun <T, U> BiPredicate<T, U>.invoke(t: T, u: U): Boolean = test(t, u)
53+
inline operator fun <T> BinaryOperator<T>.invoke(t: T, u: T): T = apply(t, u)
54+
inline operator fun BooleanSupplier.invoke(): Boolean = asBoolean
55+
inline operator fun <T> Consumer<T>.invoke(t: T) = accept(t)
56+
inline operator fun DoubleBinaryOperator.invoke(left: Double, right: Double): Double = applyAsDouble(left, right)
57+
inline operator fun DoubleConsumer.invoke(value: Double) = accept(value)
58+
inline operator fun <R> DoubleFunction<R>.invoke(value: Double): R = apply(value)
59+
inline operator fun DoublePredicate.invoke(value: Double): Boolean = test(value)
60+
inline operator fun DoubleSupplier.invoke(): Double = asDouble
61+
inline operator fun DoubleToIntFunction.invoke(value: Double): Int = applyAsInt(value)
62+
inline operator fun DoubleToLongFunction.invoke(value: Double): Long = applyAsLong(value)
63+
inline operator fun DoubleUnaryOperator.invoke(value: Double): Double = applyAsDouble(value)
64+
inline operator fun <T, R> Function<T, R>.invoke(t: T): R = apply(t)
65+
inline operator fun IntBinaryOperator.invoke(left: Int, right: Int): Int = applyAsInt(left, right)
66+
inline operator fun IntConsumer.invoke(value: Int) = accept(value)
67+
inline operator fun <R> IntFunction<R>.invoke(value: Int): R = apply(value)
68+
inline operator fun IntPredicate.invoke(value: Int): Boolean = test(value)
69+
inline operator fun IntSupplier.invoke(): Int = asInt
70+
inline operator fun IntToDoubleFunction.invoke(value: Int): Double = applyAsDouble(value)
71+
inline operator fun IntToLongFunction.invoke(value: Int): Long = applyAsLong(value)
72+
inline operator fun IntUnaryOperator.invoke(value: Int): Int = applyAsInt(value)
73+
inline operator fun LongBinaryOperator.invoke(left: Long, right: Long): Long = applyAsLong(left, right)
74+
inline operator fun LongConsumer.invoke(value: Long) = accept(value)
75+
inline operator fun <R> LongFunction<R>.invoke(value: Long): R = apply(value)
76+
inline operator fun LongPredicate.invoke(value: Long): Boolean = test(value)
77+
inline operator fun LongSupplier.invoke(): Long = asLong
78+
inline operator fun LongToDoubleFunction.invoke(value: Long): Double = applyAsDouble(value)
79+
inline operator fun LongToIntFunction.invoke(value: Long): Int = applyAsInt(value)
80+
inline operator fun LongUnaryOperator.invoke(value: Long): Long = applyAsLong(value)
81+
inline operator fun <T> ObjDoubleConsumer<T>.invoke(t: T, value: Double) = accept(t, value)
82+
inline operator fun <T> ObjIntConsumer<T>.invoke(t: T, value: Int) = accept(t, value)
83+
inline operator fun <T> ObjLongConsumer<T>.invoke(t: T, value: Long) = accept(t, value)
84+
inline operator fun <T> Predicate<T>.invoke(t: T): Boolean = test(t)
85+
inline operator fun <T> Supplier<T>.invoke(): T = get()
86+
inline operator fun <T, U> ToDoubleBiFunction<T, U>.invoke(t: T, u: U): Double = applyAsDouble(t, u)
87+
inline operator fun <T> ToDoubleFunction<T>.invoke(t: T): Double = applyAsDouble(t)
88+
inline operator fun <T, U> ToIntBiFunction<T, U>.invoke(t: T, u: U): Int = applyAsInt(t, u)
89+
inline operator fun <T> ToIntFunction<T>.invoke(t: T): Int = applyAsInt(t)
90+
inline operator fun <T, U> ToLongBiFunction<T, U>.invoke(t: T, u: U): Long = applyAsLong(t, u)
91+
inline operator fun <T> ToLongFunction<T>.invoke(t: T): Long = applyAsLong(t)
92+
inline operator fun <T> UnaryOperator<T>.invoke(t: T): T = apply(t)

0 commit comments

Comments
 (0)