Skip to content

Commit

Permalink
wip: Add square speed generator
Browse files Browse the repository at this point in the history
  • Loading branch information
knokko committed Sep 4, 2024
1 parent 59b27fc commit f81075e
Show file tree
Hide file tree
Showing 25 changed files with 254 additions and 3 deletions.
7 changes: 7 additions & 0 deletions example-configs/balls2d.gddl
Original file line number Diff line number Diff line change
Expand Up @@ -94,12 +94,19 @@
floatType = "Float",
oneUnit = "Meters per second",
displayUnit = "Meters per second",
square = "SquareSpeed",
displacement = "Displacement",
acceleration = "Acceleration",
mass = "Mass",
momentum = "Momentum",
createNumberExtensions = true
}],
squareSpeed = [{
className = "SquareSpeed",
floatType = "Double",
speed = "Speed",
createNumberExtensions = true
}],
spins = [{
className = "Spin",
floatType = "Float",
Expand Down
6 changes: 6 additions & 0 deletions example-configs/int16/fixed-units.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,16 @@
"number": "Fixed",
"oneUnit": "Meters per second",
"displayUnit": "Kilometers per second",
"square": "SquareSpeed",
"displacement": "Displacement",
"momentum": "Momentum",
"createNumberExtensions": true
}],
"squareSpeed": [{
"className": "SquareSpeed",
"floatType": "Float",
"createNumberExtensions": true
}],
"volumes": [{
"className": "Volume",
"floatType": "Double",
Expand Down
6 changes: 6 additions & 0 deletions example-configs/int16/float-connections.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,12 @@
"acceleration": "Acceleration",
"createNumberExtensions": false
}],
"squareSpeed": [{
"className": "SquareSpeed",
"floatType": "%FLOAT_TYPE%",
"speed": "Speed",
"createNumberExtensions": true
}],
"accelerations": [{
"className": "Acceleration",
"floatType": "%FLOAT_TYPE%",
Expand Down
6 changes: 6 additions & 0 deletions example-configs/int32/fixed-units.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,12 @@
"momentum": "Momentum",
"createNumberExtensions": false
}],
"squareSpeed": [{
"className": "SquareSpeed",
"floatType": "Float",
"speed": "Speed",
"createNumberExtensions": false
}],
"volumes": [{
"className": "Volume",
"floatType": "Float",
Expand Down
7 changes: 7 additions & 0 deletions example-configs/int32/float-connections.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,19 @@
"floatType": "%FLOAT_TYPE%",
"oneUnit": "Meters per second",
"displayUnit": "Miles per hour",
"square": "SquareSpeed",
"displacement": "Displacement",
"acceleration": "Acceleration",
"mass": "Mass",
"momentum": "Momentum",
"createNumberExtensions": true
}],
"squareSpeed": [{
"className": "SquareSpeed",
"floatType": "Double",
"speed": "Speed",
"createNumberExtensions": true
}],
"accelerations": [{
"className": "Acceleration",
"floatType": "%FLOAT_TYPE%",
Expand Down
7 changes: 7 additions & 0 deletions example-configs/int64/fixed-units.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,18 @@
"number": "Fixed",
"oneUnit": "Meters per second",
"displayUnit": "Kilometers per hour",
"square": "SquareSpeed",
"displacement": "Displacement",
"mass": "Mass",
"momentum": "Momentum",
"createNumberExtensions": true
}],
"squareSpeed": [{
"className": "SquareSpeed",
"floatType": "Float",
"speed": "Speed",
"createNumberExtensions": false
}],
"volumes": [{
"className": "Volume",
"floatType": "Double",
Expand Down
7 changes: 7 additions & 0 deletions example-configs/int64/float-connections.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,19 @@
"floatType": "%FLOAT_TYPE%",
"oneUnit": "Kilometers per second",
"displayUnit": "Meters per second",
"square": "SquareSpeed",
"displacement": "Displacement",
"acceleration": "Acceleration",
"mass": "Mass",
"momentum": "Momentum",
"createNumberExtensions": true
}],
"squareSpeed": [{
"className": "SquareSpeed",
"floatType": "%FLOAT_TYPE%",
"speed": "Speed",
"createNumberExtensions": false
}],
"accelerations": [{
"className": "Acceleration",
"floatType": "%FLOAT_TYPE%",
Expand Down
7 changes: 7 additions & 0 deletions example-configs/int8/fixed-units.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,18 @@
"number": "Fixed",
"oneUnit": "Kilometers per hour",
"displayUnit": "Meters per second",
"square": "SquareSpeed",
"displacement": "Displacement",
"mass": "Mass",
"momentum": "Momentum",
"createNumberExtensions": false
}],
"squareSpeed": [{
"className": "SquareSpeed",
"floatType": "Float",
"speed": "Speed",
"createNumberExtensions": false
}],
"volumes": [{
"className": "Volume",
"floatType": "Double",
Expand Down
7 changes: 7 additions & 0 deletions example-configs/int8/float-connections.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,19 @@
"floatType": "%FLOAT_TYPE%",
"oneUnit": "Miles per hour",
"displayUnit": "Meters per second",
"square": "SquareSpeed",
"displacement": "Displacement",
"acceleration": "Acceleration",
"mass": "Mass",
"momentum": "Momentum",
"createNumberExtensions": true
}],
"squareSpeed": [{
"className": "SquareSpeed",
"floatType": "Float",
"speed": "Speed",
"createNumberExtensions": false
}],
"accelerations": [{
"className": "Acceleration",
"floatType": "%FLOAT_TYPE%",
Expand Down
7 changes: 7 additions & 0 deletions example-configs/uint16/fixed-units.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,17 @@
"number": "Fixed",
"oneUnit": "Miles per hour",
"displayUnit": "Kilometers per hour",
"square": "SquareSpeed",
"displacement": "Displacement",
"mass": "Mass",
"createNumberExtensions": false
}],
"squareSpeed": [{
"className": "SquareSpeed",
"floatType": "Float",
"speed": "Speed",
"createNumberExtensions": false
}],
"volumes": [{
"className": "Volume",
"floatType": "Float",
Expand Down
5 changes: 5 additions & 0 deletions example-configs/uint16/float-connections.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,11 @@
"mass": "Mass",
"createNumberExtensions": true
}],
"squareSpeed": [{
"className": "SquareSpeed",
"floatType": "%FLOAT_TYPE%",
"createNumberExtensions": false
}],
"accelerations": [{
"className": "Acceleration",
"floatType": "%FLOAT_TYPE%",
Expand Down
6 changes: 6 additions & 0 deletions example-configs/uint32/float-connections.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,16 @@
"floatType": "%FLOAT_TYPE%",
"oneUnit": "Kilometers per hour",
"displayUnit": "Miles per hour",
"square": "SquareSpeed",
"displacement": "Displacement",
"acceleration": "Acceleration",
"createNumberExtensions": false
}],
"squareSpeed": [{
"className": "SquareSpeed",
"floatType": "%FLOAT_TYPE%",
"createNumberExtensions": true
}],
"accelerations": [{
"className": "Acceleration",
"floatType": "%FLOAT_TYPE%",
Expand Down
7 changes: 7 additions & 0 deletions example-configs/uint64/fixed-units.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,18 @@
"number": "Fixed",
"oneUnit": "Meters per second",
"displayUnit": "Miles per hour",
"square": "SquareSpeed",
"displacement": "Displacement",
"mass": "Mass",
"momentum": "Momentum",
"createNumberExtensions": true
}],
"squareSpeed": [{
"className": "SquareSpeed",
"floatType": "Double",
"speed": "Speed",
"createNumberExtensions": true
}],
"volumes": [{
"className": "Volume",
"floatType": "Float",
Expand Down
7 changes: 7 additions & 0 deletions example-configs/uint64/float-connections.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,19 @@
"floatType": "%FLOAT_TYPE%",
"oneUnit": "Kilometers per second",
"displayUnit": "Kilometers per second",
"square": "SquareSpeed",
"displacement": "Displacement",
"acceleration": "Acceleration",
"mass": "Mass",
"momentum": "Momentum",
"createNumberExtensions": false
}],
"squareSpeed": [{
"className": "SquareSpeed",
"floatType": "%FLOAT_TYPE%",
"speed": "Speed",
"createNumberExtensions": true
}],
"accelerations": [{
"className": "Acceleration",
"floatType": "%FLOAT_TYPE%",
Expand Down
7 changes: 7 additions & 0 deletions example-configs/uint8/fixed-units.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,18 @@
"number": "Fixed",
"oneUnit": "Miles per hour",
"displayUnit": "Meters per second",
"square": "SquareSpeed",
"displacement": "Displacement",
"mass": "Mass",
"momentum": "Momentum",
"createNumberExtensions": false
}],
"squareSpeed": [{
"className": "SquareSpeed",
"floatType": "Double",
"speed": "Speed",
"createNumberExtensions": false
}],
"volumes": [{
"className": "Volume",
"floatType": "Double",
Expand Down
7 changes: 7 additions & 0 deletions example-configs/uint8/float-connections.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,19 @@
"floatType": "%FLOAT_TYPE%",
"oneUnit": "Kilometers per second",
"displayUnit": "Miles per hour",
"square": "SquareSpeed",
"displacement": "Displacement",
"acceleration": "Acceleration",
"mass": "Mass",
"momentum": "Momentum",
"createNumberExtensions": false
}],
"squareSpeed": [{
"className": "SquareSpeed",
"floatType": "%FLOAT_TYPE%",
"speed": "Speed",
"createNumberExtensions": true
}],
"accelerations": [{
"className": "Acceleration",
"floatType": "%FLOAT_TYPE%",
Expand Down
8 changes: 6 additions & 2 deletions src/main/kotlin/fixie/generator/module/FixieModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import fixie.generator.number.NumberClass
import fixie.generator.parser.InvalidConfigException
import fixie.generator.quantity.QuantityClass
import fixie.generator.speed.SpeedClass
import fixie.generator.speed.SquareSpeedClass
import fixie.generator.spin.SpinClass
import fixie.generator.volume.VolumeClass

Expand All @@ -28,6 +29,7 @@ class FixieModule(
val squareMomenta: List<SquareMomentumClass> = emptyList(),
val displacements: List<DisplacementClass> = emptyList(),
val speed: List<SpeedClass> = emptyList(),
val squareSpeed: List<SquareSpeedClass> = emptyList(),
val spins: List<SpinClass> = emptyList(),
val densities: List<DensityClass> = emptyList()
) {
Expand Down Expand Up @@ -99,6 +101,7 @@ class FixieModule(
resolve(displacements, volumes, { it.volumeClassName }) { displacement, volume -> displacement.volume = volume }
resolve(displacements, areas, { it.areaClassName }) { displacement, area -> displacement.area = area }
resolve(displacements, speed, { it.speedClassName }) { displacement, speed -> displacement.speed = speed }
resolve(squareSpeed, speed, { it.speedClassName }) { square, speed -> square.speed = speed }
checkPresent(speed, numbers) { it.number }
resolve(speed, momenta, { it.momentumClassName }) { speed, momentum -> speed.momentum = momentum}
resolve(speed, masses, { it.massClassName }) { speed, mass -> speed.mass = mass }
Expand All @@ -108,12 +111,13 @@ class FixieModule(
resolve(speed, accelerations, { it.accelerationClassName }) { speed, acceleration ->
speed.acceleration = acceleration
}
resolve(speed, squareSpeed, { it.squareClassName }) { speed, square -> speed.square = square }
resolve(spins, angles, { it.angleClassName }) { spin, angle -> spin.angle = angle }

val allClassNames = numbers.map { it.className } +
displacements.map { it.className } + areas.map { it.className } + volumes.map { it.className } +
speed.map { it.className } + accelerations.map { it.className } + masses.map { it.className } +
momenta.map { it.className } + squareMomenta.map { it.className } +
speed.map { it.className } + squareSpeed.map { it.className } + accelerations.map { it.className } +
masses.map { it.className } + momenta.map { it.className } + squareMomenta.map { it.className } +
angles.map { it.className } + spins.map { it.className } + densities.map { it.className }

for (className in allClassNames) {
Expand Down
3 changes: 2 additions & 1 deletion src/main/kotlin/fixie/generator/module/ModuleGenerator.kt
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,9 @@ import fixie.generator.number.NumberTestsGenerator
import fixie.generator.quantity.QuantityClass
import fixie.generator.quantity.QuantityClassGenerator
import fixie.generator.quantity.QuantityTestsGenerator
import fixie.generator.speed.*
import fixie.generator.speed.SpeedClassGenerator
import fixie.generator.speed.SpeedTestsGenerator
import fixie.generator.speed.SpeedUnit
import fixie.generator.spin.SpinClassGenerator
import fixie.generator.spin.SpinTestsGenerator
import fixie.generator.volume.VolumeClassGenerator
Expand Down Expand Up @@ -105,6 +105,7 @@ fun generateModule(module: FixieModule, directory: File, clearExistingFiles: Boo
generateQuantityFiles(module.volumes, ::VolumeClassGenerator, ::VolumeTestsGenerator)
generateQuantityFiles(module.masses, ::MassClassGenerator, ::MassTestsGenerator)
generateQuantityFiles(module.speed, ::SpeedClassGenerator, ::SpeedTestsGenerator)
generateQuantityFiles(module.squareSpeed, ::SquareSpeedClassGenerator, ::SquareSpeedTestsGenerator)
generateQuantityFiles(module.accelerations, ::AccelerationClassGenerator, ::AccelerationTestsGenerator)
generateQuantityFiles(module.angles, ::AngleClassGenerator, ::AngleTestsGenerator)
generateQuantityFiles(module.spins, ::SpinClassGenerator, ::SpinTestsGenerator)
Expand Down
11 changes: 11 additions & 0 deletions src/main/kotlin/fixie/generator/parser/ModuleParser.kt
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import fixie.generator.number.IntType
import fixie.generator.number.NumberClass
import fixie.generator.speed.SpeedClass
import fixie.generator.speed.SpeedUnit
import fixie.generator.speed.SquareSpeedClass
import fixie.generator.spin.SpinClass
import fixie.generator.spin.SpinUnit
import fixie.generator.uLongToBigInteger
Expand Down Expand Up @@ -268,13 +269,21 @@ private class ModuleParser(
floatType = optionalFloatType(properties, "floatType", path),
oneUnit = requiredUnit(properties, "oneUnit", path, SpeedUnit.entries),
displayUnit = requiredUnit(properties, "displayUnit", path, SpeedUnit.entries),
squareClassName = optionalString(properties, "square", path),
displacementClassName = optionalString(properties, "displacement", path),
accelerationClassName = optionalString(properties, "acceleration", path),
massClassName = optionalString(properties, "mass", path),
momentumClassName = optionalString(properties, "momentum", path),
createNumberExtensions = requiredBoolean(properties, "createNumberExtensions", path)
)

private fun loadSquareSpeed(properties: GddlMap, path: String) = SquareSpeedClass(
className = requiredString(properties, "className", path),
floatType = requiredFloatType(properties, "floatType", path),
speedClassName = optionalString(properties, "speed", path),
createNumberExtensions = requiredBoolean(properties, "createNumberExtensions", path)
)

private fun loadSpin(properties: GddlMap, path: String) = SpinClass(
className = requiredString(properties, "className", path),
floatType = requiredFloatType(properties, "floatType", path),
Expand Down Expand Up @@ -357,6 +366,7 @@ private class ModuleParser(
val areas = mapList(root, "areas", "(root)", ::loadArea)
val displacements = mapList(root, "displacements", "(root)", ::loadDisplacement)
val speed = mapList(root, "speed", "(root)", ::loadSpeed)
val squareSpeed = mapList(root, "squareSpeed", "(root)", ::loadSquareSpeed)
val spins = mapList(root, "spins", "(root)", ::loadSpin)
val densities = mapList(root, "densities", "(root)", ::loadDensity)
val masses = mapList(root, "masses", "(root)", ::loadMass)
Expand All @@ -374,6 +384,7 @@ private class ModuleParser(
areas = areas,
displacements = displacements,
speed = speed,
squareSpeed = squareSpeed,
spins = spins,
densities = densities,
masses = masses,
Expand Down
Loading

0 comments on commit f81075e

Please sign in to comment.