1
+ @file:OptIn(ExperimentalTypeInference ::class )
2
+
1
3
package org.jetbrains.kotlinx.dataframe.api
2
4
3
5
import org.jetbrains.kotlinx.dataframe.AnyRow
@@ -13,19 +15,16 @@ import org.jetbrains.kotlinx.dataframe.annotations.Refine
13
15
import org.jetbrains.kotlinx.dataframe.columns.ColumnReference
14
16
import org.jetbrains.kotlinx.dataframe.columns.toColumnSet
15
17
import org.jetbrains.kotlinx.dataframe.columns.toColumnsSetOf
16
- import org.jetbrains.kotlinx.dataframe.impl.aggregation.aggregators.Aggregator
17
18
import org.jetbrains.kotlinx.dataframe.impl.aggregation.aggregators.Aggregators
18
- import org.jetbrains.kotlinx.dataframe.impl.aggregation.aggregators.cast
19
19
import org.jetbrains.kotlinx.dataframe.impl.aggregation.modes.aggregateAll
20
20
import org.jetbrains.kotlinx.dataframe.impl.aggregation.modes.aggregateFor
21
21
import org.jetbrains.kotlinx.dataframe.impl.aggregation.modes.aggregateOf
22
22
import org.jetbrains.kotlinx.dataframe.impl.aggregation.modes.aggregateOfRow
23
- import org.jetbrains.kotlinx.dataframe.impl.aggregation.modes.of
24
23
import org.jetbrains.kotlinx.dataframe.impl.aggregation.numberColumns
25
24
import org.jetbrains.kotlinx.dataframe.impl.columns.toNumberColumns
26
25
import org.jetbrains.kotlinx.dataframe.impl.primitiveNumberTypes
27
26
import org.jetbrains.kotlinx.dataframe.impl.zero
28
- import org.jetbrains.kotlinx.dataframe.math.sumOf
27
+ import kotlin.experimental.ExperimentalTypeInference
29
28
import kotlin.reflect.KProperty
30
29
import kotlin.reflect.typeOf
31
30
@@ -52,8 +51,37 @@ public fun DataColumn<Double?>.sum(): Double = Aggregators.sum.aggregate(this) a
52
51
@JvmName(" sumNumber" )
53
52
public fun DataColumn<Number?>.sum (): Number = Aggregators .sum.aggregate(this )
54
53
55
- public inline fun <T , reified R : Number > DataColumn<T>.sumOf (noinline expression : (T ) -> R ): R ? =
56
- (Aggregators .sum as Aggregator <* , * >).cast<R >().aggregateOf(this , expression)
54
+ @JvmName(" sumOfInt" )
55
+ @OverloadResolutionByLambdaReturnType
56
+ public fun <T > DataColumn<T>.sumOf (expression : (T ) -> Int? ): Int = Aggregators .sum.aggregateOf(this , expression) as Int
57
+
58
+ @JvmName(" sumOfShort" )
59
+ @OverloadResolutionByLambdaReturnType
60
+ public fun <T > DataColumn<T>.sumOf (expression : (T ) -> Short? ): Int =
61
+ Aggregators .sum.aggregateOf(this , expression) as Int
62
+
63
+ @JvmName(" sumOfByte" )
64
+ @OverloadResolutionByLambdaReturnType
65
+ public fun <T > DataColumn<T>.sumOf (expression : (T ) -> Byte? ): Int = Aggregators .sum.aggregateOf(this , expression) as Int
66
+
67
+ @JvmName(" sumOfLong" )
68
+ @OverloadResolutionByLambdaReturnType
69
+ public fun <T > DataColumn<T>.sumOf (expression : (T ) -> Long? ): Long =
70
+ Aggregators .sum.aggregateOf(this , expression) as Long
71
+
72
+ @JvmName(" sumOfFloat" )
73
+ @OverloadResolutionByLambdaReturnType
74
+ public fun <T > DataColumn<T>.sumOf (expression : (T ) -> Float? ): Float =
75
+ Aggregators .sum.aggregateOf(this , expression) as Float
76
+
77
+ @JvmName(" sumOfDouble" )
78
+ @OverloadResolutionByLambdaReturnType
79
+ public fun <T > DataColumn<T>.sumOf (expression : (T ) -> Double? ): Double =
80
+ Aggregators .sum.aggregateOf(this , expression) as Double
81
+
82
+ @JvmName(" sumOfNumber" )
83
+ @OverloadResolutionByLambdaReturnType
84
+ public fun <T > DataColumn<T>.sumOf (expression : (T ) -> Number ? ): Number = Aggregators .sum.aggregateOf(this , expression)
57
85
58
86
// endregion
59
87
0 commit comments