mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-20 00:51:42 +00:00
[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:
@@ -9,11 +9,16 @@ class ExampleUnit extends Unit<ExampleUnit> {
|
||||
this(baseUnitEquivalent, "Example", "ex");
|
||||
}
|
||||
|
||||
ExampleUnit(UnaryFunction toBase, UnaryFunction fromBase, String name, String symbol) {
|
||||
super(ExampleUnit.class, toBase, fromBase, name, symbol);
|
||||
ExampleUnit(
|
||||
ExampleUnit baseUnit,
|
||||
UnaryFunction toBase,
|
||||
UnaryFunction fromBase,
|
||||
String name,
|
||||
String symbol) {
|
||||
super(baseUnit, toBase, fromBase, name, symbol);
|
||||
}
|
||||
|
||||
ExampleUnit(double baseUnitEquivalent, String name, String symbol) {
|
||||
super(ExampleUnit.class, baseUnitEquivalent, name, symbol);
|
||||
super(null, baseUnitEquivalent, name, symbol);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user