Skip to content

Commit

Permalink
Merge pull request #711 from splendo/feature/gunit
Browse files Browse the repository at this point in the history
Add GUnit Acceleration support
  • Loading branch information
Daeda88 authored Jul 3, 2023
2 parents 011027e + da0cfd8 commit e338714
Show file tree
Hide file tree
Showing 14 changed files with 1,860 additions and 238 deletions.
599 changes: 535 additions & 64 deletions scientific/api/androidLib/scientific.api

Large diffs are not rendered by default.

599 changes: 535 additions & 64 deletions scientific/api/jvm/scientific.api

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -29,60 +29,130 @@ import com.splendo.kaluga.scientific.unit.ImperialAcceleration
import com.splendo.kaluga.scientific.unit.ImperialTon
import com.splendo.kaluga.scientific.unit.ImperialTonForce
import com.splendo.kaluga.scientific.unit.ImperialWeight
import com.splendo.kaluga.scientific.unit.Kilogram
import com.splendo.kaluga.scientific.unit.MetricAcceleration
import com.splendo.kaluga.scientific.unit.MetricAndImperialAcceleration
import com.splendo.kaluga.scientific.unit.MetricWeight
import com.splendo.kaluga.scientific.unit.Milligram
import com.splendo.kaluga.scientific.unit.Ounce
import com.splendo.kaluga.scientific.unit.OunceForce
import com.splendo.kaluga.scientific.unit.Pound
import com.splendo.kaluga.scientific.unit.PoundForce
import com.splendo.kaluga.scientific.unit.Tonne
import com.splendo.kaluga.scientific.unit.UKImperialWeight
import com.splendo.kaluga.scientific.unit.USCustomaryWeight
import com.splendo.kaluga.scientific.unit.UsTon
import com.splendo.kaluga.scientific.unit.UsTonForce
import com.splendo.kaluga.scientific.unit.Weight
import kotlin.jvm.JvmName

@JvmName("accelerationTimesGram")
infix operator fun ScientificValue<PhysicalQuantity.Acceleration, MetricAcceleration>.times(mass: ScientificValue<PhysicalQuantity.Weight, Gram>) =
mass * this
@JvmName("metricAndImperialAccelerationTimesKilogram")
infix operator fun <MetricAndImperialAccelerationUnit : MetricAndImperialAcceleration> ScientificValue<PhysicalQuantity.Acceleration, MetricAndImperialAccelerationUnit>.times(
mass: ScientificValue<PhysicalQuantity.Weight, Kilogram>,
) = mass * this

@JvmName("metricAndImperialAccelerationTimesTonne")
infix operator fun <MetricAndImperialAccelerationUnit : MetricAndImperialAcceleration> ScientificValue<PhysicalQuantity.Acceleration, MetricAndImperialAccelerationUnit>.times(
mass: ScientificValue<PhysicalQuantity.Weight, Tonne>,
) = mass * this

@JvmName("metricAndImperialAccelerationTimesGram")
infix operator fun <MetricAndImperialAccelerationUnit : MetricAndImperialAcceleration> ScientificValue<PhysicalQuantity.Acceleration, MetricAndImperialAccelerationUnit>.times(
mass: ScientificValue<PhysicalQuantity.Weight, Gram>,
) = mass * this

@JvmName("metricAndImperialAccelerationTimesMilligram")
infix operator fun <MetricAndImperialAccelerationUnit : MetricAndImperialAcceleration> ScientificValue<PhysicalQuantity.Acceleration, MetricAndImperialAccelerationUnit>.times(
mass: ScientificValue<PhysicalQuantity.Weight, Milligram>,
) = mass * this

@JvmName("metricAccelerationTimesGram")
infix operator fun <MetricAccelerationUnit : MetricAcceleration> ScientificValue<PhysicalQuantity.Acceleration, MetricAccelerationUnit>.times(
mass: ScientificValue<PhysicalQuantity.Weight, Gram>,
) = mass * this

@JvmName("metricAccelerationTimesMetricWeight")
infix operator fun <WeightUnit : MetricWeight> ScientificValue<PhysicalQuantity.Acceleration, MetricAcceleration>.times(
infix operator fun <WeightUnit : MetricWeight, MetricAccelerationUnit : MetricAcceleration> ScientificValue<PhysicalQuantity.Acceleration, MetricAccelerationUnit>.times(
mass: ScientificValue<PhysicalQuantity.Weight, WeightUnit>,
) = mass * this

@JvmName("accelerationTimesPound")
infix operator fun ScientificValue<PhysicalQuantity.Acceleration, ImperialAcceleration>.times(mass: ScientificValue<PhysicalQuantity.Weight, Pound>) =
PoundForce.force(mass, this)
@JvmName("imperialAccelerationTimesPound")
infix operator fun <ImperialAccelerationUnit : ImperialAcceleration> ScientificValue<PhysicalQuantity.Acceleration, ImperialAccelerationUnit>.times(
mass: ScientificValue<PhysicalQuantity.Weight, Pound>,
) = PoundForce.force(mass, this)

@JvmName("accelerationTimesOunce")
infix operator fun ScientificValue<PhysicalQuantity.Acceleration, ImperialAcceleration>.times(mass: ScientificValue<PhysicalQuantity.Weight, Ounce>) =
OunceForce.force(mass, this)
@JvmName("imperialAccelerationTimesOunce")
infix operator fun <ImperialAccelerationUnit : ImperialAcceleration> ScientificValue<PhysicalQuantity.Acceleration, ImperialAccelerationUnit>.times(
mass: ScientificValue<PhysicalQuantity.Weight, Ounce>,
) = OunceForce.force(mass, this)

@JvmName("accelerationTimesGrain")
infix operator fun ScientificValue<PhysicalQuantity.Acceleration, ImperialAcceleration>.times(mass: ScientificValue<PhysicalQuantity.Weight, Grain>) =
GrainForce.force(mass, this)
@JvmName("imperialAccelerationTimesGrain")
infix operator fun <ImperialAccelerationUnit : ImperialAcceleration> ScientificValue<PhysicalQuantity.Acceleration, ImperialAccelerationUnit>.times(
mass: ScientificValue<PhysicalQuantity.Weight, Grain>,
) = GrainForce.force(mass, this)

@JvmName("accelerationTimesUSTon")
infix operator fun ScientificValue<PhysicalQuantity.Acceleration, ImperialAcceleration>.times(mass: ScientificValue<PhysicalQuantity.Weight, UsTon>) =
UsTonForce.force(mass, this)
@JvmName("imperialAccelerationTimesUSTon")
infix operator fun <ImperialAccelerationUnit : ImperialAcceleration> ScientificValue<PhysicalQuantity.Acceleration, ImperialAccelerationUnit>.times(
mass: ScientificValue<PhysicalQuantity.Weight, UsTon>,
) = UsTonForce.force(mass, this)

@JvmName("accelerationTimesImperialTon")
infix operator fun ScientificValue<PhysicalQuantity.Acceleration, ImperialAcceleration>.times(mass: ScientificValue<PhysicalQuantity.Weight, ImperialTon>) =
ImperialTonForce.force(mass, this)
@JvmName("imperialAccelerationTimesImperialTon")
infix operator fun <ImperialAccelerationUnit : ImperialAcceleration> ScientificValue<PhysicalQuantity.Acceleration, ImperialAccelerationUnit>.times(
mass: ScientificValue<PhysicalQuantity.Weight, ImperialTon>,
) = ImperialTonForce.force(mass, this)

@JvmName("imperialAccelerationTimesImperialWeight")
infix operator fun <WeightUnit : ImperialWeight> ScientificValue<PhysicalQuantity.Acceleration, ImperialAcceleration>.times(
infix operator fun <WeightUnit : ImperialWeight, ImperialAccelerationUnit : ImperialAcceleration> ScientificValue<PhysicalQuantity.Acceleration, ImperialAccelerationUnit>.times(
mass: ScientificValue<PhysicalQuantity.Weight, WeightUnit>,
) = mass * this

@JvmName("imperialAccelerationTimesUKImperialWeight")
infix operator fun <WeightUnit : UKImperialWeight> ScientificValue<PhysicalQuantity.Acceleration, ImperialAcceleration>.times(
infix operator fun <WeightUnit : UKImperialWeight, ImperialAccelerationUnit : ImperialAcceleration> ScientificValue<PhysicalQuantity.Acceleration, ImperialAccelerationUnit>.times(
mass: ScientificValue<PhysicalQuantity.Weight, WeightUnit>,
) = mass * this

@JvmName("imperialAccelerationTimesUSCustomaryWeight")
infix operator fun <WeightUnit : USCustomaryWeight> ScientificValue<PhysicalQuantity.Acceleration, ImperialAcceleration>.times(
infix operator fun <WeightUnit : USCustomaryWeight, ImperialAccelerationUnit : ImperialAcceleration> ScientificValue<PhysicalQuantity.Acceleration, ImperialAccelerationUnit>.times(
mass: ScientificValue<PhysicalQuantity.Weight, WeightUnit>,
) = mass * this

@JvmName("metricAndImperialAccelerationTimesPound")
infix operator fun <MetricAndImperialAccelerationUnit : MetricAndImperialAcceleration> ScientificValue<PhysicalQuantity.Acceleration, MetricAndImperialAccelerationUnit>.times(
mass: ScientificValue<PhysicalQuantity.Weight, Pound>,
) = PoundForce.force(mass, this)

@JvmName("metricAndImperialAccelerationTimesOunce")
infix operator fun <MetricAndImperialAccelerationUnit : MetricAndImperialAcceleration> ScientificValue<PhysicalQuantity.Acceleration, MetricAndImperialAccelerationUnit>.times(
mass: ScientificValue<PhysicalQuantity.Weight, Ounce>,
) = OunceForce.force(mass, this)

@JvmName("metricAndImperialAccelerationTimesGrain")
infix operator fun <MetricAndImperialAccelerationUnit : MetricAndImperialAcceleration> ScientificValue<PhysicalQuantity.Acceleration, MetricAndImperialAccelerationUnit>.times(
mass: ScientificValue<PhysicalQuantity.Weight, Grain>,
) = GrainForce.force(mass, this)

@JvmName("metricAndImperialAccelerationTimesUSTon")
infix operator fun <MetricAndImperialAccelerationUnit : MetricAndImperialAcceleration> ScientificValue<PhysicalQuantity.Acceleration, MetricAndImperialAccelerationUnit>.times(
mass: ScientificValue<PhysicalQuantity.Weight, UsTon>,
) = UsTonForce.force(mass, this)

@JvmName("metricAndImperialAccelerationTimesImperialTon")
infix operator fun <MetricAndImperialAccelerationUnit : MetricAndImperialAcceleration> ScientificValue<PhysicalQuantity.Acceleration, MetricAndImperialAccelerationUnit>.times(
mass: ScientificValue<PhysicalQuantity.Weight, ImperialTon>,
) = ImperialTonForce.force(mass, this)

@JvmName("metricAndImperialAccelerationTimesImperialWeight")
infix operator fun <WeightUnit : ImperialWeight, AccelerationUnit : MetricAndImperialAcceleration> ScientificValue<PhysicalQuantity.Acceleration, AccelerationUnit>.times(
mass: ScientificValue<PhysicalQuantity.Weight, WeightUnit>,
) = mass * this

@JvmName("metricAndImperialAccelerationTimesUKImperialWeight")
infix operator fun <WeightUnit : UKImperialWeight, AccelerationUnit : MetricAndImperialAcceleration> ScientificValue<PhysicalQuantity.Acceleration, AccelerationUnit>.times(
mass: ScientificValue<PhysicalQuantity.Weight, WeightUnit>,
) = mass * this

@JvmName("metricAndImperialAccelerationTimesUSCustomaryWeight")
infix operator fun <WeightUnit : USCustomaryWeight, AccelerationUnit : MetricAndImperialAcceleration> ScientificValue<PhysicalQuantity.Acceleration, AccelerationUnit>.times(
mass: ScientificValue<PhysicalQuantity.Weight, WeightUnit>,
) = mass * this

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,18 +24,24 @@ import com.splendo.kaluga.scientific.unit.Acceleration
import com.splendo.kaluga.scientific.unit.ImperialAcceleration
import com.splendo.kaluga.scientific.unit.Meter
import com.splendo.kaluga.scientific.unit.MetricAcceleration
import com.splendo.kaluga.scientific.unit.MetricAndImperialAcceleration
import com.splendo.kaluga.scientific.unit.Second
import com.splendo.kaluga.scientific.unit.Time
import com.splendo.kaluga.scientific.unit.per
import kotlin.jvm.JvmName

@JvmName("metricAndImperialAccelerationDivTime")
infix operator fun <AccelerationUnit : MetricAndImperialAcceleration, TimeUnit : Time> ScientificValue<PhysicalQuantity.Acceleration, AccelerationUnit>.div(
time: ScientificValue<PhysicalQuantity.Time, TimeUnit>,
) = (unit per time.unit).jolt(this, time)

@JvmName("metricAccelerationDivTime")
infix operator fun <TimeUnit : Time> ScientificValue<PhysicalQuantity.Acceleration, MetricAcceleration>.div(
infix operator fun <AccelerationUnit : MetricAcceleration, TimeUnit : Time> ScientificValue<PhysicalQuantity.Acceleration, AccelerationUnit>.div(
time: ScientificValue<PhysicalQuantity.Time, TimeUnit>,
) = (unit per time.unit).jolt(this, time)

@JvmName("imperialAccelerationDivTime")
infix operator fun <TimeUnit : Time> ScientificValue<PhysicalQuantity.Acceleration, ImperialAcceleration>.div(
infix operator fun <AccelerationUnit : ImperialAcceleration, TimeUnit : Time> ScientificValue<PhysicalQuantity.Acceleration, AccelerationUnit>.div(
time: ScientificValue<PhysicalQuantity.Time, TimeUnit>,
) = (unit per time.unit).jolt(this, time)

Expand Down
Loading

0 comments on commit e338714

Please sign in to comment.