[wpiunits] Restore and deprecate measure negate (#7345)

Delegate to unaryMinus.

This ensures there's a deprecation message to help users with migration, vs just a compile error.
This commit is contained in:
sciencewhiz
2024-11-06 15:07:31 -08:00
committed by GitHub
parent 83fa422338
commit 71c050389a
27 changed files with 197 additions and 0 deletions

View File

@@ -43,6 +43,13 @@ public interface {{ helpers['type_decl'](name) }} extends Measure<{{ helpers['mt
return ({{ helpers['type_usage'](name) }}) unit().ofBaseUnits(0 - baseUnitMagnitude());
}
@Override
@Deprecated(since = "2025", forRemoval = true)
@SuppressWarnings({"deprecation", "removal"})
default {{ helpers['type_usage'](name) }} negate() {
return ({{ helpers['type_usage'](name) }}) unaryMinus();
}
@Override
default {{ helpers['type_usage'](name) }} plus(Measure<? extends {{ helpers['mtou'](name) }}> other) {
return ({{ helpers['type_usage'](name) }}) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude());

View File

@@ -43,6 +43,13 @@ public interface Acceleration<D extends Unit> extends Measure<AccelerationUnit<D
return (Acceleration<D>) unit().ofBaseUnits(0 - baseUnitMagnitude());
}
@Override
@Deprecated(since = "2025", forRemoval = true)
@SuppressWarnings({"deprecation", "removal"})
default Acceleration<D> negate() {
return (Acceleration<D>) unaryMinus();
}
@Override
default Acceleration<D> plus(Measure<? extends AccelerationUnit<D>> other) {
return (Acceleration<D>) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude());

View File

@@ -43,6 +43,13 @@ public interface Angle extends Measure<AngleUnit> {
return (Angle) unit().ofBaseUnits(0 - baseUnitMagnitude());
}
@Override
@Deprecated(since = "2025", forRemoval = true)
@SuppressWarnings({"deprecation", "removal"})
default Angle negate() {
return (Angle) unaryMinus();
}
@Override
default Angle plus(Measure<? extends AngleUnit> other) {
return (Angle) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude());

View File

@@ -43,6 +43,13 @@ public interface AngularAcceleration extends Measure<AngularAccelerationUnit> {
return (AngularAcceleration) unit().ofBaseUnits(0 - baseUnitMagnitude());
}
@Override
@Deprecated(since = "2025", forRemoval = true)
@SuppressWarnings({"deprecation", "removal"})
default AngularAcceleration negate() {
return (AngularAcceleration) unaryMinus();
}
@Override
default AngularAcceleration plus(Measure<? extends AngularAccelerationUnit> other) {
return (AngularAcceleration) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude());

View File

@@ -43,6 +43,13 @@ public interface AngularMomentum extends Measure<AngularMomentumUnit> {
return (AngularMomentum) unit().ofBaseUnits(0 - baseUnitMagnitude());
}
@Override
@Deprecated(since = "2025", forRemoval = true)
@SuppressWarnings({"deprecation", "removal"})
default AngularMomentum negate() {
return (AngularMomentum) unaryMinus();
}
@Override
default AngularMomentum plus(Measure<? extends AngularMomentumUnit> other) {
return (AngularMomentum) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude());

View File

@@ -43,6 +43,13 @@ public interface AngularVelocity extends Measure<AngularVelocityUnit> {
return (AngularVelocity) unit().ofBaseUnits(0 - baseUnitMagnitude());
}
@Override
@Deprecated(since = "2025", forRemoval = true)
@SuppressWarnings({"deprecation", "removal"})
default AngularVelocity negate() {
return (AngularVelocity) unaryMinus();
}
@Override
default AngularVelocity plus(Measure<? extends AngularVelocityUnit> other) {
return (AngularVelocity) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude());

View File

@@ -43,6 +43,13 @@ public interface Current extends Measure<CurrentUnit> {
return (Current) unit().ofBaseUnits(0 - baseUnitMagnitude());
}
@Override
@Deprecated(since = "2025", forRemoval = true)
@SuppressWarnings({"deprecation", "removal"})
default Current negate() {
return (Current) unaryMinus();
}
@Override
default Current plus(Measure<? extends CurrentUnit> other) {
return (Current) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude());

View File

@@ -43,6 +43,13 @@ public interface Dimensionless extends Measure<DimensionlessUnit> {
return (Dimensionless) unit().ofBaseUnits(0 - baseUnitMagnitude());
}
@Override
@Deprecated(since = "2025", forRemoval = true)
@SuppressWarnings({"deprecation", "removal"})
default Dimensionless negate() {
return (Dimensionless) unaryMinus();
}
@Override
default Dimensionless plus(Measure<? extends DimensionlessUnit> other) {
return (Dimensionless) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude());

View File

@@ -43,6 +43,13 @@ public interface Distance extends Measure<DistanceUnit> {
return (Distance) unit().ofBaseUnits(0 - baseUnitMagnitude());
}
@Override
@Deprecated(since = "2025", forRemoval = true)
@SuppressWarnings({"deprecation", "removal"})
default Distance negate() {
return (Distance) unaryMinus();
}
@Override
default Distance plus(Measure<? extends DistanceUnit> other) {
return (Distance) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude());

View File

@@ -43,6 +43,13 @@ public interface Energy extends Measure<EnergyUnit> {
return (Energy) unit().ofBaseUnits(0 - baseUnitMagnitude());
}
@Override
@Deprecated(since = "2025", forRemoval = true)
@SuppressWarnings({"deprecation", "removal"})
default Energy negate() {
return (Energy) unaryMinus();
}
@Override
default Energy plus(Measure<? extends EnergyUnit> other) {
return (Energy) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude());

View File

@@ -43,6 +43,13 @@ public interface Force extends Measure<ForceUnit> {
return (Force) unit().ofBaseUnits(0 - baseUnitMagnitude());
}
@Override
@Deprecated(since = "2025", forRemoval = true)
@SuppressWarnings({"deprecation", "removal"})
default Force negate() {
return (Force) unaryMinus();
}
@Override
default Force plus(Measure<? extends ForceUnit> other) {
return (Force) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude());

View File

@@ -43,6 +43,13 @@ public interface Frequency extends Measure<FrequencyUnit> {
return (Frequency) unit().ofBaseUnits(0 - baseUnitMagnitude());
}
@Override
@Deprecated(since = "2025", forRemoval = true)
@SuppressWarnings({"deprecation", "removal"})
default Frequency negate() {
return (Frequency) unaryMinus();
}
@Override
default Frequency plus(Measure<? extends FrequencyUnit> other) {
return (Frequency) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude());

View File

@@ -43,6 +43,13 @@ public interface LinearAcceleration extends Measure<LinearAccelerationUnit> {
return (LinearAcceleration) unit().ofBaseUnits(0 - baseUnitMagnitude());
}
@Override
@Deprecated(since = "2025", forRemoval = true)
@SuppressWarnings({"deprecation", "removal"})
default LinearAcceleration negate() {
return (LinearAcceleration) unaryMinus();
}
@Override
default LinearAcceleration plus(Measure<? extends LinearAccelerationUnit> other) {
return (LinearAcceleration) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude());

View File

@@ -43,6 +43,13 @@ public interface LinearMomentum extends Measure<LinearMomentumUnit> {
return (LinearMomentum) unit().ofBaseUnits(0 - baseUnitMagnitude());
}
@Override
@Deprecated(since = "2025", forRemoval = true)
@SuppressWarnings({"deprecation", "removal"})
default LinearMomentum negate() {
return (LinearMomentum) unaryMinus();
}
@Override
default LinearMomentum plus(Measure<? extends LinearMomentumUnit> other) {
return (LinearMomentum) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude());

View File

@@ -43,6 +43,13 @@ public interface LinearVelocity extends Measure<LinearVelocityUnit> {
return (LinearVelocity) unit().ofBaseUnits(0 - baseUnitMagnitude());
}
@Override
@Deprecated(since = "2025", forRemoval = true)
@SuppressWarnings({"deprecation", "removal"})
default LinearVelocity negate() {
return (LinearVelocity) unaryMinus();
}
@Override
default LinearVelocity plus(Measure<? extends LinearVelocityUnit> other) {
return (LinearVelocity) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude());

View File

@@ -43,6 +43,13 @@ public interface Mass extends Measure<MassUnit> {
return (Mass) unit().ofBaseUnits(0 - baseUnitMagnitude());
}
@Override
@Deprecated(since = "2025", forRemoval = true)
@SuppressWarnings({"deprecation", "removal"})
default Mass negate() {
return (Mass) unaryMinus();
}
@Override
default Mass plus(Measure<? extends MassUnit> other) {
return (Mass) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude());

View File

@@ -43,6 +43,13 @@ public interface MomentOfInertia extends Measure<MomentOfInertiaUnit> {
return (MomentOfInertia) unit().ofBaseUnits(0 - baseUnitMagnitude());
}
@Override
@Deprecated(since = "2025", forRemoval = true)
@SuppressWarnings({"deprecation", "removal"})
default MomentOfInertia negate() {
return (MomentOfInertia) unaryMinus();
}
@Override
default MomentOfInertia plus(Measure<? extends MomentOfInertiaUnit> other) {
return (MomentOfInertia) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude());

View File

@@ -43,6 +43,13 @@ public interface Mult<A extends Unit, B extends Unit> extends Measure<MultUnit<A
return (Mult<A, B>) unit().ofBaseUnits(0 - baseUnitMagnitude());
}
@Override
@Deprecated(since = "2025", forRemoval = true)
@SuppressWarnings({"deprecation", "removal"})
default Mult<A, B> negate() {
return (Mult<A, B>) unaryMinus();
}
@Override
default Mult<A, B> plus(Measure<? extends MultUnit<A, B>> other) {
return (Mult<A, B>) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude());

View File

@@ -43,6 +43,13 @@ public interface Per<Dividend extends Unit, Divisor extends Unit> extends Measur
return (Per<Dividend, Divisor>) unit().ofBaseUnits(0 - baseUnitMagnitude());
}
@Override
@Deprecated(since = "2025", forRemoval = true)
@SuppressWarnings({"deprecation", "removal"})
default Per<Dividend, Divisor> negate() {
return (Per<Dividend, Divisor>) unaryMinus();
}
@Override
default Per<Dividend, Divisor> plus(Measure<? extends PerUnit<Dividend, Divisor>> other) {
return (Per<Dividend, Divisor>) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude());

View File

@@ -43,6 +43,13 @@ public interface Power extends Measure<PowerUnit> {
return (Power) unit().ofBaseUnits(0 - baseUnitMagnitude());
}
@Override
@Deprecated(since = "2025", forRemoval = true)
@SuppressWarnings({"deprecation", "removal"})
default Power negate() {
return (Power) unaryMinus();
}
@Override
default Power plus(Measure<? extends PowerUnit> other) {
return (Power) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude());

View File

@@ -43,6 +43,13 @@ public interface Resistance extends Measure<ResistanceUnit> {
return (Resistance) unit().ofBaseUnits(0 - baseUnitMagnitude());
}
@Override
@Deprecated(since = "2025", forRemoval = true)
@SuppressWarnings({"deprecation", "removal"})
default Resistance negate() {
return (Resistance) unaryMinus();
}
@Override
default Resistance plus(Measure<? extends ResistanceUnit> other) {
return (Resistance) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude());

View File

@@ -43,6 +43,13 @@ public interface Temperature extends Measure<TemperatureUnit> {
return (Temperature) unit().ofBaseUnits(0 - baseUnitMagnitude());
}
@Override
@Deprecated(since = "2025", forRemoval = true)
@SuppressWarnings({"deprecation", "removal"})
default Temperature negate() {
return (Temperature) unaryMinus();
}
@Override
default Temperature plus(Measure<? extends TemperatureUnit> other) {
return (Temperature) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude());

View File

@@ -43,6 +43,13 @@ public interface Time extends Measure<TimeUnit> {
return (Time) unit().ofBaseUnits(0 - baseUnitMagnitude());
}
@Override
@Deprecated(since = "2025", forRemoval = true)
@SuppressWarnings({"deprecation", "removal"})
default Time negate() {
return (Time) unaryMinus();
}
@Override
default Time plus(Measure<? extends TimeUnit> other) {
return (Time) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude());

View File

@@ -43,6 +43,13 @@ public interface Torque extends Measure<TorqueUnit> {
return (Torque) unit().ofBaseUnits(0 - baseUnitMagnitude());
}
@Override
@Deprecated(since = "2025", forRemoval = true)
@SuppressWarnings({"deprecation", "removal"})
default Torque negate() {
return (Torque) unaryMinus();
}
@Override
default Torque plus(Measure<? extends TorqueUnit> other) {
return (Torque) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude());

View File

@@ -43,6 +43,13 @@ public interface Velocity<D extends Unit> extends Measure<VelocityUnit<D>> {
return (Velocity<D>) unit().ofBaseUnits(0 - baseUnitMagnitude());
}
@Override
@Deprecated(since = "2025", forRemoval = true)
@SuppressWarnings({"deprecation", "removal"})
default Velocity<D> negate() {
return (Velocity<D>) unaryMinus();
}
@Override
default Velocity<D> plus(Measure<? extends VelocityUnit<D>> other) {
return (Velocity<D>) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude());

View File

@@ -43,6 +43,13 @@ public interface Voltage extends Measure<VoltageUnit> {
return (Voltage) unit().ofBaseUnits(0 - baseUnitMagnitude());
}
@Override
@Deprecated(since = "2025", forRemoval = true)
@SuppressWarnings({"deprecation", "removal"})
default Voltage negate() {
return (Voltage) unaryMinus();
}
@Override
default Voltage plus(Measure<? extends VoltageUnit> other) {
return (Voltage) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude());

View File

@@ -124,6 +124,21 @@ public interface Measure<U extends Unit> extends Comparable<Measure<U>> {
*/
Measure<U> unaryMinus();
/**
* Returns a measure equivalent to this one equal to zero minus its current value. For non-linear
* unit types like temperature, the zero point is treated as the zero value of the base unit (eg
* Kelvin). In effect, this means code like {@code Celsius.of(10).negate()} returns a value
* equivalent to -10 Kelvin, and <i>not</i> -10° Celsius.
*
* @return a measure equal to zero minus this measure
* @deprecated use unaryMinus() instead. This was renamed for consistancy with other WPILib
* classes like Rotation2d
*/
@Deprecated(since = "2025", forRemoval = true)
default Measure<U> negate() {
return unaryMinus();
}
/**
* Adds another measure of the same unit type to this one.
*