Skip to content

Commit

Permalink
wip: more code reuse via QuantityClassGenerator
Browse files Browse the repository at this point in the history
  • Loading branch information
knokko committed Sep 4, 2024
1 parent 19604fb commit 713ebbc
Show file tree
Hide file tree
Showing 15 changed files with 9 additions and 86 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -42,12 +42,6 @@ internal class AccelerationClassGenerator(
writer.println("\t\tval MPS2 = ${quantity.className}(1$suffix)")
}

override fun generateNumberUnitExtensionFunctions(typeName: String) {
writer.println()
writer.println("val $typeName.mps2")
writer.println("\tget() = ${quantity.className}.MPS2 * this")
}

override fun generateExtensionFunctions() {
super.generateExtensionFunctions()

Expand Down
8 changes: 1 addition & 7 deletions src/main/kotlin/fixie/generator/angle/AngleClassGenerator.kt
Original file line number Diff line number Diff line change
Expand Up @@ -185,13 +185,7 @@ internal class AngleClassGenerator(
writer.println("operator fun $typeName.times(right: ${quantity.className}) = right * this")
}

if (quantity.createNumberExtensions) {
for (unit in AngleUnit.entries) {
writer.println()
writer.println("val $typeName.${unit.name.lowercase(Locale.ROOT)}")
writer.println("\tget() = ${quantity.className}.${unit.name.lowercase(Locale.ROOT)}(this)")
}
}
if (quantity.createNumberExtensions) generateNumberUnitExtensionFunctions(typeName)
}
}

Expand Down
8 changes: 0 additions & 8 deletions src/main/kotlin/fixie/generator/area/AreaClassGenerator.kt
Original file line number Diff line number Diff line change
Expand Up @@ -54,14 +54,6 @@ class AreaClassGenerator(
}
}

override fun generateNumberUnitExtensionFunctions(typeName: String) {
writer.println()
for (unit in AreaUnit.entries) {
writer.println("val $typeName.${unit.abbreviation.replace("^", "")}")
writer.println("\tget() = ${quantity.className}.${unit.name} * this")
}
}

override fun generateMathFunctions() {
super.generateMathFunctions()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,4 @@ class DensityClassGenerator(
writer.println("\t\tval KGPL = ${quantity.className}(${quantity.number!!.className}.ONE)")
}
}

override fun generateNumberUnitExtensionFunctions(typeName: String) {
writer.println()
writer.println("val $typeName.kgpl")
writer.println("\tget() = ${quantity.className}.KGPL * this")
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -70,12 +70,4 @@ internal class DisplacementClassGenerator(
writer.println("\t\tval $unit = raw($rawValue${if (quantity.number.internalType.signed) "" else "u"})")
}
}

override fun generateNumberUnitExtensionFunctions(typeName: String) {
for (unit in quantity.computeSupportedUnits().map { it.first }) {
writer.println()
writer.println("val $typeName.${unit.abbreviation}")
writer.println("\tget() = ${quantity.className}.$unit * this")
}
}
}
8 changes: 0 additions & 8 deletions src/main/kotlin/fixie/generator/mass/MassClassGenerator.kt
Original file line number Diff line number Diff line change
Expand Up @@ -42,12 +42,4 @@ class MassClassGenerator(
writer.println("\t\tval ${unit.name} = ${quantity.className}(${unit.factor}$suffix)")
}
}

override fun generateNumberUnitExtensionFunctions(typeName: String) {
writer.println()
for (unit in MassUnit.entries) {
writer.println("val $typeName.${unit.abbreviation}")
writer.println("\tget() = ${quantity.className}.${unit.name} * this")
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -50,10 +50,4 @@ class MomentumClassGenerator(
val suffix = if (quantity.floatType.numBytes == 4) "f" else ".0"
writer.println("\t\tval NEWTON_SECOND = ${quantity.className}(1$suffix)")
}

override fun generateNumberUnitExtensionFunctions(typeName: String) {
writer.println()
writer.println("val $typeName.newSec")
writer.println("\tget() = ${quantity.className}.NEWTON_SECOND * this")
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,6 @@ class SquareMomentumClassGenerator(
writer.println("\t/** Gets the square momentum value, in (Ns)^2 */")
}

override fun generateNumberUnitExtensionFunctions(typeName: String) {
// TODO Why is this not done automatically?
writer.println()
writer.println("val $typeName.squareNs")
writer.println("\tget() = ${quantity.className}.SQUARE_NEWTON_SECOND * this")
}

override fun generateToString() {
writer.println()
writer.println("\toverride fun toString() = String.format(\"%.2f%s\", value, \"(Ns)^2\")")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,6 @@ abstract class FixedQuantityClassGenerator<T : FixedQuantityClass>(
writer.println("\t\tfun raw(value: ${quantity.number.internalType}) = ${quantity.className}(${quantity.number.className}.raw(value))")
}

protected abstract fun generateNumberUnitExtensionFunctions(typeName: String)

override fun generateExtensionFunctions() {
for (typeName in arrayOf("Int", "Long", "Float", "Double", quantity.number.className)) {
writer.println()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,6 @@ abstract class FloatQuantityClassGenerator<T : FloatQuantityClass>(
}
}

protected abstract fun generateNumberUnitExtensionFunctions(typeName: String)

override fun generateExtensionFunctions() {
for (typeName in arrayOf("Int", "Long", "Float", "Double")) {
writer.println()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,6 @@ abstract class HybridQuantityClassGenerator<T : HybridQuantityClass>(
}
}

protected abstract fun generateNumberUnitExtensionFunctions(typeName: String)

override fun generateExtensionFunctions() {
for (typeName in getMultiplicationTypes()) {
writer.println()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,5 +96,13 @@ abstract class QuantityClassGenerator<T : QuantityClass>(

protected abstract fun generateExtensionFunctions()

protected fun generateNumberUnitExtensionFunctions(typeName: String) {
for (unit in quantity.getSupportedUnits()) {
writer.println()
writer.println("val $typeName.${unit.extensionName}")
writer.println("\tget() = ${quantity.className}.${unit.name} * this")
}
}

abstract fun generateMathFunctions()
}
8 changes: 0 additions & 8 deletions src/main/kotlin/fixie/generator/speed/SpeedClassGenerator.kt
Original file line number Diff line number Diff line change
Expand Up @@ -80,14 +80,6 @@ internal class SpeedClassGenerator(
}
}

override fun generateNumberUnitExtensionFunctions(typeName: String) {
for (unit in quantity.computeSupportedUnits().map { it.first }) {
writer.println()
writer.println("val $typeName.${unit.abbreviation.replace('/', 'p')}")
writer.println("\tget() = ${quantity.className}.$unit * this")
}
}

override fun generateExtensionFunctions() {
super.generateExtensionFunctions()

Expand Down
8 changes: 0 additions & 8 deletions src/main/kotlin/fixie/generator/spin/SpinClassGenerator.kt
Original file line number Diff line number Diff line change
Expand Up @@ -55,14 +55,6 @@ class SpinClassGenerator(
}
}

override fun generateNumberUnitExtensionFunctions(typeName: String) {
for (unit in SpinUnit.entries) {
writer.println()
writer.println("val $typeName.${unit.extensionName}")
writer.println("\tget() = ${quantity.className}.$unit * this")
}
}

override fun generateExtensionFunctions() {
super.generateExtensionFunctions()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,12 +50,4 @@ class VolumeClassGenerator(
writer.println("\t\tval ${unit.name} = ${quantity.className}(${unit.factor}$suffix)")
}
}

override fun generateNumberUnitExtensionFunctions(typeName: String) {
writer.println()
for (unit in VolumeUnit.entries) {
writer.println("val $typeName.${unit.abbreviation.replace("^", "")}")
writer.println("\tget() = ${quantity.className}.${unit.name} * this")
}
}
}

0 comments on commit 713ebbc

Please sign in to comment.