|
| 1 | +@file:OptIn(ExperimentalContracts::class) |
| 2 | + |
1 | 3 | package org.jetbrains.kotlinx.dataframe.api
|
2 | 4 |
|
3 | 5 | import org.jetbrains.kotlinx.dataframe.AnyCol
|
| 6 | +import org.jetbrains.kotlinx.dataframe.columns.ColumnGroup |
4 | 7 | import org.jetbrains.kotlinx.dataframe.columns.ColumnKind
|
| 8 | +import org.jetbrains.kotlinx.dataframe.columns.FrameColumn |
| 9 | +import org.jetbrains.kotlinx.dataframe.columns.ValueColumn |
5 | 10 | import org.jetbrains.kotlinx.dataframe.impl.isNothing
|
6 | 11 | import org.jetbrains.kotlinx.dataframe.impl.projectTo
|
7 | 12 | import org.jetbrains.kotlinx.dataframe.type
|
8 | 13 | import org.jetbrains.kotlinx.dataframe.typeClass
|
| 14 | +import kotlin.contracts.ExperimentalContracts |
| 15 | +import kotlin.contracts.contract |
9 | 16 | import kotlin.reflect.KClass
|
10 | 17 | import kotlin.reflect.KType
|
11 | 18 | import kotlin.reflect.KTypeProjection
|
12 | 19 | import kotlin.reflect.full.isSubclassOf
|
13 | 20 | import kotlin.reflect.full.isSubtypeOf
|
14 | 21 | import kotlin.reflect.typeOf
|
15 | 22 |
|
16 |
| -public fun AnyCol.isColumnGroup(): Boolean = kind() == ColumnKind.Group |
| 23 | +public fun AnyCol.isColumnGroup(): Boolean { |
| 24 | + contract { returns(true) implies (this@isColumnGroup is ColumnGroup<*>) } |
| 25 | + return kind() == ColumnKind.Group |
| 26 | +} |
17 | 27 |
|
18 |
| -public fun AnyCol.isFrameColumn(): Boolean = kind() == ColumnKind.Frame |
| 28 | +public fun AnyCol.isFrameColumn(): Boolean { |
| 29 | + contract { returns(true) implies (this@isFrameColumn is FrameColumn<*>) } |
| 30 | + return kind() == ColumnKind.Frame |
| 31 | +} |
19 | 32 |
|
20 |
| -public fun AnyCol.isValueColumn(): Boolean = kind() == ColumnKind.Value |
| 33 | +public fun AnyCol.isValueColumn(): Boolean { |
| 34 | + contract { returns(true) implies (this@isValueColumn is ValueColumn<*>) } |
| 35 | + return kind() == ColumnKind.Value |
| 36 | +} |
21 | 37 |
|
22 | 38 | public fun AnyCol.isSubtypeOf(type: KType): Boolean =
|
23 | 39 | this.type.isSubtypeOf(type) && (!this.type.isMarkedNullable || type.isMarkedNullable)
|
|
0 commit comments