[wpiunits] Change units to track their base unit, instead of their base class (#6342)

Unit objects now have a reference to the base unit from which they're derived. Constructing a unit object without specifying a base unit implicitly signifies that it's its own base unit, eg new Angle(null, 1, "Radian", "rad") would be the base angle unit of radians, while new Angle(Radians, 2 * PI, "Rotation", "R") would be a new angle unit based on radians.

This fixes much of the hacky code surrounding the derived unit types Velocity, Per, and Mult, but is a breaking change for any user code that defines custom unit classes or uses the anonymous unit type.
This commit is contained in:
Sam Carlberg
2024-05-12 09:15:56 -04:00
committed by GitHub
parent dc00a13d83
commit 6c9dcc157e
23 changed files with 312 additions and 162 deletions

View File

@@ -15,7 +15,11 @@ package edu.wpi.first.units;
*/
public class Temperature extends Unit<Temperature> {
Temperature(
UnaryFunction toBaseConverter, UnaryFunction fromBaseConverter, String name, String symbol) {
super(Temperature.class, toBaseConverter, fromBaseConverter, name, symbol);
Temperature baseUnit,
UnaryFunction toBaseConverter,
UnaryFunction fromBaseConverter,
String name,
String symbol) {
super(baseUnit, toBaseConverter, fromBaseConverter, name, symbol);
}
}