Typy nowe
This commit is contained in:
parent
7690e4cdc4
commit
619a921b1e
@ -1,5 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="GradleMigrationSettings" migrationVersion="1" />
|
||||
<component name="GradleSettings">
|
||||
<option name="linkedExternalProjectsSettings">
|
||||
<GradleProjectSettings>
|
||||
|
||||
@ -26,6 +26,10 @@ interface LabelsKLib {
|
||||
|
||||
val ampere: String
|
||||
|
||||
val tesla: String
|
||||
|
||||
val lux: String
|
||||
|
||||
val second: String
|
||||
val hour: String
|
||||
|
||||
@ -35,6 +39,13 @@ interface LabelsKLib {
|
||||
|
||||
val degree: String
|
||||
|
||||
val percent: String
|
||||
|
||||
val double: String
|
||||
|
||||
val hz: String
|
||||
val bpm: String
|
||||
|
||||
val mega: String
|
||||
val kilo: String
|
||||
val hecto: String
|
||||
|
||||
@ -10,3 +10,4 @@ interface AngleI : TypedDouble
|
||||
data class Angle(override val value: Double) : AngleI
|
||||
|
||||
val deg: NotSiUnit<AngleI> = notSiUnit({ degree }, 1.0) { Angle(it) }
|
||||
val rad: NotSiUnit<AngleI> = notSiUnit({ "rad" }, 0.01745329252) { Angle(it) }
|
||||
|
||||
11
src/main/java/org/lemiesz/klib/types/Double.kt
Normal file
11
src/main/java/org/lemiesz/klib/types/Double.kt
Normal file
@ -0,0 +1,11 @@
|
||||
package org.lemiesz.klib.types
|
||||
|
||||
import org.lemiesz.klib.types.lib.NotSiUnit
|
||||
import org.lemiesz.klib.types.lib.TypedDouble
|
||||
import org.lemiesz.klib.types.lib.notSiUnit
|
||||
|
||||
|
||||
//@JvmInline
|
||||
data class GenericDouble(override val value: Double) : TypedDouble
|
||||
|
||||
val double: NotSiUnit<GenericDouble> = notSiUnit({ double }, 1.0) { GenericDouble(it) }
|
||||
11
src/main/java/org/lemiesz/klib/types/Frequency.kt
Normal file
11
src/main/java/org/lemiesz/klib/types/Frequency.kt
Normal file
@ -0,0 +1,11 @@
|
||||
package org.lemiesz.klib.types
|
||||
|
||||
import org.lemiesz.klib.types.lib.TypedDouble
|
||||
import org.lemiesz.klib.types.lib.notSiUnit
|
||||
import org.lemiesz.klib.types.lib.siUnit
|
||||
|
||||
@JvmInline
|
||||
value class Frequency(override val value: Double) : TypedDouble
|
||||
|
||||
val Hz = siUnit({ hz }, 1.0) { Frequency(it) }
|
||||
val bpm = notSiUnit({ bpm }, 0.01666666667) { Frequency(it) }
|
||||
9
src/main/java/org/lemiesz/klib/types/Illuminance.kt
Normal file
9
src/main/java/org/lemiesz/klib/types/Illuminance.kt
Normal file
@ -0,0 +1,9 @@
|
||||
package org.lemiesz.klib.types
|
||||
|
||||
import org.lemiesz.klib.types.lib.TypedDouble
|
||||
import org.lemiesz.klib.types.lib.siUnit
|
||||
|
||||
@JvmInline
|
||||
value class Illuminance(override val value: Double) : TypedDouble
|
||||
|
||||
val lux = siUnit({ lux }, 1.0) { Illuminance(it) }
|
||||
9
src/main/java/org/lemiesz/klib/types/Magnetic.kt
Normal file
9
src/main/java/org/lemiesz/klib/types/Magnetic.kt
Normal file
@ -0,0 +1,9 @@
|
||||
package org.lemiesz.klib.types
|
||||
|
||||
import org.lemiesz.klib.types.lib.TypedDouble
|
||||
import org.lemiesz.klib.types.lib.siUnit
|
||||
|
||||
@JvmInline
|
||||
value class Magnetic(override val value: Double) : TypedDouble
|
||||
|
||||
val T = siUnit({ tesla }, 1.0) { Magnetic(it) }
|
||||
11
src/main/java/org/lemiesz/klib/types/Percent.kt
Normal file
11
src/main/java/org/lemiesz/klib/types/Percent.kt
Normal file
@ -0,0 +1,11 @@
|
||||
package org.lemiesz.klib.types
|
||||
|
||||
import org.lemiesz.klib.types.lib.NotSiUnit
|
||||
import org.lemiesz.klib.types.lib.TypedDouble
|
||||
import org.lemiesz.klib.types.lib.notSiUnit
|
||||
|
||||
|
||||
//@JvmInline
|
||||
data class Percent(override val value: Double) : TypedDouble
|
||||
|
||||
val percent: NotSiUnit<GenericDouble> = notSiUnit({ percent }, 1.0) { GenericDouble(it) }
|
||||
24
src/main/java/org/lemiesz/klib/types/RotationRate.kt
Normal file
24
src/main/java/org/lemiesz/klib/types/RotationRate.kt
Normal file
@ -0,0 +1,24 @@
|
||||
package org.lemiesz.klib.types
|
||||
|
||||
import org.lemiesz.klib.flow.combineStateFlow
|
||||
import org.lemiesz.klib.types.lib.*
|
||||
|
||||
//@JvmInline
|
||||
data class RotationRate(override val value: Double) : TypedDouble
|
||||
|
||||
|
||||
val radS = rad / s
|
||||
val degS = deg / s
|
||||
|
||||
|
||||
operator fun <T : AngleI> MultiplierUnit<T>.div(divider: MultiplierUnit<TimeSpan>) = NotSiUnit(
|
||||
label = {
|
||||
label().combineStateFlow(this, divider.label(this)) { s1, s2 ->
|
||||
"$s1/$s2"
|
||||
}
|
||||
},
|
||||
multiplier = multiplier / divider.multiplier
|
||||
) {
|
||||
RotationRate(it)
|
||||
}
|
||||
|
||||
@ -26,5 +26,5 @@ val hecto = UnitModifier(100.0) { hecto }
|
||||
val deca = UnitModifier(10.0) { deca }
|
||||
val centi = UnitModifier(0.01) { centi }
|
||||
val milli = UnitModifier(0.001) { milli }
|
||||
val micro = UnitModifier(0.000_001) { milli }
|
||||
val nano = UnitModifier(0.000_000_001) { milli }
|
||||
val micro = UnitModifier(0.000_001) { micro }
|
||||
val nano = UnitModifier(0.000_000_001) { nano }
|
||||
|
||||
Loading…
Reference in New Issue
Block a user