diff --git a/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/sysid/SysIdRoutine.java b/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/sysid/SysIdRoutine.java index 48c3a37190..1935c84fdc 100644 --- a/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/sysid/SysIdRoutine.java +++ b/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/sysid/SysIdRoutine.java @@ -10,7 +10,6 @@ import static edu.wpi.first.units.Units.Volts; import static java.util.Map.entry; import edu.wpi.first.units.VoltageUnit; -import edu.wpi.first.units.measure.MutVoltage; import edu.wpi.first.units.measure.Time; import edu.wpi.first.units.measure.Velocity; import edu.wpi.first.units.measure.Voltage; @@ -42,7 +41,6 @@ import java.util.function.Consumer; public class SysIdRoutine extends SysIdRoutineLog { private final Config m_config; private final Mechanism m_mechanism; - private final MutVoltage m_outputVolts = Volts.mutable(0); private final Consumer m_recordState; /** @@ -225,9 +223,7 @@ public class SysIdRoutine extends SysIdRoutineLog { m_mechanism.m_subsystem.run( () -> { m_mechanism.m_drive.accept( - m_outputVolts.mut_replace( - outputSign * timer.get() * m_config.m_rampRate.in(Volts.per(Second)), - Volts)); + (Voltage) m_config.m_rampRate.times(Seconds.of(timer.get() * outputSign))); m_mechanism.m_log.accept(this); m_recordState.accept(state); })) @@ -258,15 +254,15 @@ public class SysIdRoutine extends SysIdRoutineLog { entry(Direction.kForward, State.kDynamicForward), entry(Direction.kReverse, State.kDynamicReverse)) .get(direction); + Voltage[] output = {Volts.zero()}; return m_mechanism .m_subsystem - .runOnce( - () -> m_outputVolts.mut_replace(m_config.m_stepVoltage.in(Volts) * outputSign, Volts)) + .runOnce(() -> output[0] = m_config.m_stepVoltage.times(outputSign)) .andThen( m_mechanism.m_subsystem.run( () -> { - m_mechanism.m_drive.accept(m_outputVolts); + m_mechanism.m_drive.accept(output[0]); m_mechanism.m_log.accept(this); m_recordState.accept(state); })) diff --git a/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/sysidroutine/subsystems/Drive.java b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/sysidroutine/subsystems/Drive.java index 490b38acab..735b8bba0b 100644 --- a/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/sysidroutine/subsystems/Drive.java +++ b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/sysidroutine/subsystems/Drive.java @@ -8,9 +8,6 @@ import static edu.wpi.first.units.Units.Meters; import static edu.wpi.first.units.Units.MetersPerSecond; import static edu.wpi.first.units.Units.Volts; -import edu.wpi.first.units.measure.MutDistance; -import edu.wpi.first.units.measure.MutLinearVelocity; -import edu.wpi.first.units.measure.MutVoltage; import edu.wpi.first.wpilibj.Encoder; import edu.wpi.first.wpilibj.RobotController; import edu.wpi.first.wpilibj.drive.DifferentialDrive; @@ -46,13 +43,6 @@ public class Drive extends SubsystemBase { DriveConstants.kRightEncoderPorts[1], DriveConstants.kRightEncoderReversed); - // Mutable holder for unit-safe voltage values, persisted to avoid reallocation. - private final MutVoltage m_appliedVoltage = Volts.mutable(0); - // Mutable holder for unit-safe linear distance values, persisted to avoid reallocation. - private final MutDistance m_distance = Meters.mutable(0); - // Mutable holder for unit-safe linear velocity values, persisted to avoid reallocation. - private final MutLinearVelocity m_velocity = MetersPerSecond.mutable(0); - // Create a new SysId routine for characterizing the drive. private final SysIdRoutine m_sysIdRoutine = new SysIdRoutine( @@ -70,21 +60,15 @@ public class Drive extends SubsystemBase { // Record a frame for the left motors. Since these share an encoder, we consider // the entire group to be one motor. log.motor("drive-left") - .voltage( - m_appliedVoltage.mut_replace( - m_leftMotor.get() * RobotController.getBatteryVoltage(), Volts)) - .linearPosition(m_distance.mut_replace(m_leftEncoder.getDistance(), Meters)) - .linearVelocity( - m_velocity.mut_replace(m_leftEncoder.getRate(), MetersPerSecond)); + .voltage(Volts.of(m_leftMotor.get() * RobotController.getBatteryVoltage())) + .linearPosition(Meters.of(m_leftEncoder.getDistance())) + .linearVelocity(MetersPerSecond.of(m_leftEncoder.getRate())); // Record a frame for the right motors. Since these share an encoder, we consider // the entire group to be one motor. log.motor("drive-right") - .voltage( - m_appliedVoltage.mut_replace( - m_rightMotor.get() * RobotController.getBatteryVoltage(), Volts)) - .linearPosition(m_distance.mut_replace(m_rightEncoder.getDistance(), Meters)) - .linearVelocity( - m_velocity.mut_replace(m_rightEncoder.getRate(), MetersPerSecond)); + .voltage(Volts.of(m_rightMotor.get() * RobotController.getBatteryVoltage())) + .linearPosition(Meters.of(m_rightEncoder.getDistance())) + .linearVelocity(MetersPerSecond.of(m_rightEncoder.getRate())); }, // Tell SysId to make generated commands require this subsystem, suffix test state in // WPILog with this subsystem's name ("drive") diff --git a/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/sysidroutine/subsystems/Shooter.java b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/sysidroutine/subsystems/Shooter.java index a8dd04e7f0..e7815f9b19 100644 --- a/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/sysidroutine/subsystems/Shooter.java +++ b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/sysidroutine/subsystems/Shooter.java @@ -4,17 +4,12 @@ package edu.wpi.first.wpilibj.examples.sysidroutine.subsystems; -import static edu.wpi.first.units.Units.Radians; -import static edu.wpi.first.units.Units.RadiansPerSecond; import static edu.wpi.first.units.Units.Rotations; import static edu.wpi.first.units.Units.RotationsPerSecond; import static edu.wpi.first.units.Units.Volts; import edu.wpi.first.math.controller.PIDController; import edu.wpi.first.math.controller.SimpleMotorFeedforward; -import edu.wpi.first.units.measure.MutAngle; -import edu.wpi.first.units.measure.MutAngularVelocity; -import edu.wpi.first.units.measure.MutVoltage; import edu.wpi.first.wpilibj.Encoder; import edu.wpi.first.wpilibj.RobotController; import edu.wpi.first.wpilibj.examples.sysidroutine.Constants.ShooterConstants; @@ -38,13 +33,6 @@ public class Shooter extends SubsystemBase { ShooterConstants.kEncoderPorts[1], ShooterConstants.kEncoderReversed); - // Mutable holder for unit-safe voltage values, persisted to avoid reallocation. - private final MutVoltage m_appliedVoltage = Volts.mutable(0); - // Mutable holder for unit-safe linear distance values, persisted to avoid reallocation. - private final MutAngle m_angle = Radians.mutable(0); - // Mutable holder for unit-safe linear velocity values, persisted to avoid reallocation. - private final MutAngularVelocity m_velocity = RadiansPerSecond.mutable(0); - // Create a new SysId routine for characterizing the shooter. private final SysIdRoutine m_sysIdRoutine = new SysIdRoutine( @@ -58,12 +46,9 @@ public class Shooter extends SubsystemBase { log -> { // Record a frame for the shooter motor. log.motor("shooter-wheel") - .voltage( - m_appliedVoltage.mut_replace( - m_shooterMotor.get() * RobotController.getBatteryVoltage(), Volts)) - .angularPosition(m_angle.mut_replace(m_shooterEncoder.getDistance(), Rotations)) - .angularVelocity( - m_velocity.mut_replace(m_shooterEncoder.getRate(), RotationsPerSecond)); + .voltage(Volts.of(m_shooterMotor.get() * RobotController.getBatteryVoltage())) + .angularPosition(Rotations.of(m_shooterEncoder.getDistance())) + .angularVelocity(RotationsPerSecond.of(m_shooterEncoder.getRate())); }, // Tell SysId to make generated commands require this subsystem, suffix test state in // WPILog with this subsystem's name ("shooter") diff --git a/wpiunits/generate_units.py b/wpiunits/generate_units.py index 3f35152b61..05bd7c06db 100755 --- a/wpiunits/generate_units.py +++ b/wpiunits/generate_units.py @@ -81,7 +81,7 @@ UNIT_CONFIGURATIONS = { "divide": {"Time": "AngularAcceleration"}, "extra": inspect.cleandoc( """ - default Frequency asFrequency() { return Hertz.of(baseUnitMagnitude()); } + public Frequency asFrequency() { return Hertz.of(baseUnitMagnitude()); } """ ), }, @@ -164,7 +164,7 @@ UNIT_CONFIGURATIONS = { "extra": inspect.cleandoc( """ /** Converts this frequency to the time period between cycles. */ - default Time asPeriod() { return Seconds.of(1 / baseUnitMagnitude()); } + public Time asPeriod() { return Seconds.of(1 / baseUnitMagnitude()); } """ ), }, @@ -206,11 +206,11 @@ UNIT_CONFIGURATIONS = { "divide": {}, "extra": inspect.cleandoc( """ - default Measure timesDivisor(Measure multiplier) { + public Measure timesDivisor(Measure multiplier) { return (Measure) baseUnit().numerator().ofBaseUnits(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } - default Measure> reciprocal() { + public Measure> reciprocal() { // May return a velocity if Divisor == TimeUnit, so we can't guarantee a "Per" instance return baseUnit().reciprocal().ofBaseUnits(1 / baseUnitMagnitude()); } @@ -252,7 +252,7 @@ UNIT_CONFIGURATIONS = { }, "extra": inspect.cleandoc( """ - default Frequency asFrequency() { return Hertz.of(1 / baseUnitMagnitude()); } + public Frequency asFrequency() { return Hertz.of(1 / baseUnitMagnitude()); } """ ), }, @@ -269,7 +269,7 @@ UNIT_CONFIGURATIONS = { "implementation": inspect.cleandoc( """ @Override - default Measure times(Time multiplier) { + public Measure times(Time multiplier) { return (Measure) unit().numerator().ofBaseUnits(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } """ @@ -352,9 +352,7 @@ def generate_units(output_directory: Path, template_directory: Path): keep_trailing_newline=True, ) - interfaceTemplate = env.get_template("Measure-interface.java.jinja") - immutableTemplate = env.get_template("Measure-immutable.java.jinja") - mutableTemplate = env.get_template("Measure-mutable.java.jinja") + interfaceTemplate = env.get_template("Measure-implementation.java.jinja") rootPath = output_directory / "main/java/edu/wpi/first/units" helpers = { @@ -373,22 +371,8 @@ def generate_units(output_directory: Path, template_directory: Path): config=UNIT_CONFIGURATIONS, helpers=helpers, ) - immutableContents = immutableTemplate.render( - name=unit_name, - units=MATH_OPERATION_UNITS, - config=UNIT_CONFIGURATIONS, - helpers=helpers, - ) - mutableContents = mutableTemplate.render( - name=unit_name, - units=MATH_OPERATION_UNITS, - config=UNIT_CONFIGURATIONS, - helpers=helpers, - ) output(rootPath / "measure", f"{unit_name}.java", interfaceContents) - output(rootPath / "measure", f"Immutable{unit_name}.java", immutableContents) - output(rootPath / "measure", f"Mut{unit_name}.java", mutableContents) def main(): diff --git a/wpiunits/src/generate/main/java/Measure-immutable.java.jinja b/wpiunits/src/generate/main/java/Measure-immutable.java.jinja deleted file mode 100644 index 526c950977..0000000000 --- a/wpiunits/src/generate/main/java/Measure-immutable.java.jinja +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public record Immutable{{ helpers['type_decl'](name) }}(double magnitude, double baseUnitMagnitude, {{ helpers['mtou'](name) }} unit) implements {{ helpers['type_usage'](name) }} { - @Override - public {{ helpers['type_usage'](name) }} copy() { - return this; - } - - @Override - public String toString() { - return toShortString(); - } - - @Override - public boolean equals(Object o) { - return o instanceof Measure m && isEquivalent(m); - } -} diff --git a/wpiunits/src/generate/main/java/Measure-interface.java.jinja b/wpiunits/src/generate/main/java/Measure-implementation.java.jinja similarity index 59% rename from wpiunits/src/generate/main/java/Measure-interface.java.jinja rename to wpiunits/src/generate/main/java/Measure-implementation.java.jinja index 608900f2b5..d61c9c6b27 100644 --- a/wpiunits/src/generate/main/java/Measure-interface.java.jinja +++ b/wpiunits/src/generate/main/java/Measure-implementation.java.jinja @@ -10,36 +10,45 @@ import static edu.wpi.first.units.Units.*; import edu.wpi.first.units.*; @SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public interface {{ helpers['type_decl'](name) }} extends Measure<{{ helpers['mtou'](name) }}> { - static {{ helpers['generics_list'](name) }} {{ helpers['type_usage'](name) }} ofRelativeUnits(double magnitude, {{ helpers['mtou'](name) }} unit) { - return new Immutable{{ helpers['type_usage'](name) }}(magnitude, unit.toBaseUnits(magnitude), unit); +public record {{ helpers['type_decl'](name) }}(double magnitude, double baseUnitMagnitude, {{ helpers['mtou'](name) }} unit) implements Measure<{{ helpers['mtou'](name) }}> { + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link {{ name }}Unit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static {{ helpers['generics_list'](name) }} {{ helpers['type_usage'](name) }} ofRelativeUnits(double magnitude, {{ helpers['mtou'](name) }} unit) { + return new {{ helpers['type_usage'](name) }}(magnitude, unit.toBaseUnits(magnitude), unit); } - static {{ helpers['generics_list'](name) }} {{ helpers['type_usage'](name) }} ofBaseUnits(double baseUnitMagnitude, {{ helpers['mtou'](name) }} unit) { - return new Immutable{{ helpers['type_usage'](name) }}(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link {{ name }}Unit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit's base unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static {{ helpers['generics_list'](name) }} {{ helpers['type_usage'](name) }} ofBaseUnits(double baseUnitMagnitude, {{ helpers['mtou'](name) }} unit) { + return new {{ helpers['type_usage'](name) }}(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); } @Override - {{ helpers['type_usage'](name) }} copy(); + public {{ helpers['mtou'](name) }} baseUnit() { return ({{ helpers['mtou'](name) }}) unit().getBaseUnit(); } @Override - default Mut{{ helpers['type_usage'](name) }} mutableCopy() { - return new Mut{{ helpers['type_usage'](name) }}(magnitude(), baseUnitMagnitude(), unit()); - } - - @Override - {{ helpers['mtou'](name) }} unit(); - - @Override - default {{ helpers['mtou'](name) }} baseUnit() { return ({{ helpers['mtou'](name) }}) unit().getBaseUnit(); } - - @Override - default double in({{ helpers['mtou'](name) }} unit) { + public double in({{ helpers['mtou'](name) }} unit) { return unit.fromBaseUnits(baseUnitMagnitude()); } @Override - default {{ helpers['type_usage'](name) }} unaryMinus() { + @SuppressWarnings("rawtypes") + public boolean equals(Object object) { + return object instanceof {{ name }} m && isEquivalent(m); + } + + @Override + public {{ helpers['type_usage'](name) }} unaryMinus() { return ({{ helpers['type_usage'](name) }}) unit().ofBaseUnits(0 - baseUnitMagnitude()); } @@ -51,27 +60,27 @@ public interface {{ helpers['type_decl'](name) }} extends Measure<{{ helpers['mt @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default {{ helpers['type_usage'](name) }} negate() { + public {{ helpers['type_usage'](name) }} negate() { return ({{ helpers['type_usage'](name) }}) unaryMinus(); } @Override - default {{ helpers['type_usage'](name) }} plus(Measure other) { + public {{ helpers['type_usage'](name) }} plus(Measure other) { return ({{ helpers['type_usage'](name) }}) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude()); } @Override - default {{ helpers['type_usage'](name) }} minus(Measure other) { + public {{ helpers['type_usage'](name) }} minus(Measure other) { return ({{ helpers['type_usage'](name) }}) unit().ofBaseUnits(baseUnitMagnitude() - other.baseUnitMagnitude()); } @Override - default {{ helpers['type_usage'](name) }} times(double multiplier) { + public {{ helpers['type_usage'](name) }} times(double multiplier) { return ({{ helpers['type_usage'](name) }}) unit().ofBaseUnits(baseUnitMagnitude() * multiplier); } @Override - default {{ helpers['type_usage'](name) }} div(double divisor) { + public {{ helpers['type_usage'](name) }} div(double divisor) { return ({{ helpers['type_usage'](name) }}) unit().ofBaseUnits(baseUnitMagnitude() / divisor); } @@ -83,13 +92,13 @@ public interface {{ helpers['type_decl'](name) }} extends Measure<{{ helpers['mt @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default {{ helpers['type_usage'](name) }} divide(double divisor) { + public {{ helpers['type_usage'](name) }} divide(double divisor) { return ({{ helpers['type_usage'](name) }}) div(divisor); } {% for unit in math_units -%} {% if unit == "Dimensionless" %} @Override - default {{ helpers['type_usage'](name) }} div({{ unit }} divisor) { + public {{ helpers['type_usage'](name) }} div({{ unit }} divisor) { return ({{ helpers['type_usage'](name) }}) {{ config[name]['base_unit'] }}.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -101,12 +110,12 @@ public interface {{ helpers['type_decl'](name) }} extends Measure<{{ helpers['mt @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default {{ helpers['type_usage'](name) }} divide({{ unit }} divisor) { + public {{ helpers['type_usage'](name) }} divide({{ unit }} divisor) { return ({{ helpers['type_usage'](name) }}) div(divisor); } @Override - default {{ helpers['type_usage'](name) }} times({{ unit }} multiplier) { + public {{ helpers['type_usage'](name) }} times({{ unit }} multiplier) { return ({{ helpers['type_usage'](name) }}) {{ config[name]['base_unit'] }}.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } {% else %} @@ -115,19 +124,19 @@ public interface {{ helpers['type_decl'](name) }} extends Measure<{{ helpers['mt {{ helpers['indent'](config[name]['multiply'][unit]['implementation'], 2) }} {%- else %} @Override - default {{ config[name]['multiply'][unit] }} times({{ unit }} multiplier) { + public {{ config[name]['multiply'][unit] }} times({{ unit }} multiplier) { return {{ config[config[name]['multiply'][unit]]['base_unit'] }}.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } {%- endif %} {% else %} @Override - default Mult<{{ helpers['mtou'](name) }}, {{ helpers['mtou'](unit) }}> times({{ unit }} multiplier) { + public Mult<{{ helpers['mtou'](name) }}, {{ helpers['mtou'](unit) }}> times({{ unit }} multiplier) { return (Mult<{{ helpers['mtou'](name) }}, {{ helpers['mtou'](unit) }}>) Measure.super.times(multiplier); } {% endif -%} {% if unit in config[name]['divide'] %} @Override - default {{ config[name]['divide'][unit] }} div({{ unit }} divisor) { + public {{ config[name]['divide'][unit] }} div({{ unit }} divisor) { return {{ config[config[name]['divide'][unit]]['base_unit'] }}.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -139,12 +148,12 @@ public interface {{ helpers['type_decl'](name) }} extends Measure<{{ helpers['mt @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default {{ config[name]['divide'][unit] }} divide({{ unit }} divisor) { + public {{ config[name]['divide'][unit] }} divide({{ unit }} divisor) { return div(divisor); } @Override - default {{ config[name]['divide'][unit] }} per({{ helpers['mtou'](unit) }} divisorUnit) { + public {{ config[name]['divide'][unit] }} per({{ helpers['mtou'](unit) }} divisorUnit) { {%- if unit == "Mult" or unit == "Per" %} return div(divisorUnit.ofNative(1)); {%- else %} @@ -153,7 +162,7 @@ public interface {{ helpers['type_decl'](name) }} extends Measure<{{ helpers['mt } {% elif unit == "Time" %} @Override - default Velocity<{{ helpers['mtou'](name) }}> div({{ unit }} divisor) { + public Velocity<{{ helpers['mtou'](name) }}> div({{ unit }} divisor) { return VelocityUnit.combine(unit(), divisor.unit()).ofBaseUnits(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -165,12 +174,12 @@ public interface {{ helpers['type_decl'](name) }} extends Measure<{{ helpers['mt @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Velocity<{{ helpers['mtou'](name) }}> divide({{ unit }} divisor) { + public Velocity<{{ helpers['mtou'](name) }}> divide({{ unit }} divisor) { return div(divisor); } @Override - default Velocity<{{ helpers['mtou'](name) }}> per({{ helpers['mtou'](unit) }} divisorUnit) { + public Velocity<{{ helpers['mtou'](name) }}> per({{ helpers['mtou'](unit) }} divisorUnit) { {%- if unit == "Mult" or unit == "Per" %} return div(divisorUnit.ofNative(1)); {%- else %} @@ -179,7 +188,7 @@ public interface {{ helpers['type_decl'](name) }} extends Measure<{{ helpers['mt } {% elif unit == name %} @Override - default Dimensionless div({{ unit }} divisor) { + public Dimensionless div({{ unit }} divisor) { return Value.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -191,17 +200,17 @@ public interface {{ helpers['type_decl'](name) }} extends Measure<{{ helpers['mt @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Dimensionless divide({{ unit }} divisor) { + public Dimensionless divide({{ unit }} divisor) { return div(divisor); } @Override - default Dimensionless per({{ helpers['mtou'](unit) }} divisorUnit) { + public Dimensionless per({{ helpers['mtou'](unit) }} divisorUnit) { return div(divisorUnit.one()); } {% else %} @Override - default Per<{{ helpers['mtou'](name) }}, {{ helpers['mtou'](unit) }}> div({{ unit }} divisor) { + public Per<{{ helpers['mtou'](name) }}, {{ helpers['mtou'](unit) }}> div({{ unit }} divisor) { return (Per<{{ helpers['mtou'](name) }}, {{ helpers['mtou'](unit) }}>) Measure.super.div(divisor); } @@ -213,12 +222,12 @@ public interface {{ helpers['type_decl'](name) }} extends Measure<{{ helpers['mt @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per<{{ helpers['mtou'](name) }}, {{ helpers['mtou'](unit) }}> divide({{ unit }} divisor) { + public Per<{{ helpers['mtou'](name) }}, {{ helpers['mtou'](unit) }}> divide({{ unit }} divisor) { return div(divisor); } @Override - default Per<{{ helpers['mtou'](name) }}, {{ helpers['mtou'](unit) }}> per({{ helpers['mtou'](unit) }} divisorUnit) { + public Per<{{ helpers['mtou'](name) }}, {{ helpers['mtou'](unit) }}> per({{ helpers['mtou'](unit) }} divisorUnit) { {%- if unit == "Mult" or unit == "Per" %} return div(divisorUnit.ofNative(1)); {%- else %} diff --git a/wpiunits/src/generate/main/java/Measure-mutable.java.jinja b/wpiunits/src/generate/main/java/Measure-mutable.java.jinja deleted file mode 100644 index 8adf22f74d..0000000000 --- a/wpiunits/src/generate/main/java/Measure-mutable.java.jinja +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; -import edu.wpi.first.units.mutable.MutableMeasureBase; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public final class Mut{{ helpers['type_decl'](name) }} - extends MutableMeasureBase<{{ helpers['mtou'](name) }}, {{ helpers['type_usage'](name) }}, Mut{{ helpers['type_usage'](name) }}> - implements {{ helpers['type_usage'](name) }} { - public Mut{{ name }}(double magnitude, double baseUnitMagnitude, {{ helpers['mtou'](name) }} unit) { - super(magnitude, baseUnitMagnitude, unit); - } - - @Override - public {{ helpers['type_usage'](name) }} copy() { - return new Immutable{{ helpers['type_usage'](name) }}(magnitude(), baseUnitMagnitude(), unit()); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Acceleration.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Acceleration.java index 9a007dae74..c1382b1dd0 100644 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Acceleration.java +++ b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Acceleration.java @@ -10,36 +10,45 @@ import static edu.wpi.first.units.Units.*; import edu.wpi.first.units.*; @SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public interface Acceleration extends Measure> { - static Acceleration ofRelativeUnits(double magnitude, AccelerationUnit unit) { - return new ImmutableAcceleration(magnitude, unit.toBaseUnits(magnitude), unit); +public record Acceleration(double magnitude, double baseUnitMagnitude, AccelerationUnit unit) implements Measure> { + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link AccelerationUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static Acceleration ofRelativeUnits(double magnitude, AccelerationUnit unit) { + return new Acceleration(magnitude, unit.toBaseUnits(magnitude), unit); } - static Acceleration ofBaseUnits(double baseUnitMagnitude, AccelerationUnit unit) { - return new ImmutableAcceleration(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link AccelerationUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit's base unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static Acceleration ofBaseUnits(double baseUnitMagnitude, AccelerationUnit unit) { + return new Acceleration(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); } @Override - Acceleration copy(); + public AccelerationUnit baseUnit() { return (AccelerationUnit) unit().getBaseUnit(); } @Override - default MutAcceleration mutableCopy() { - return new MutAcceleration(magnitude(), baseUnitMagnitude(), unit()); - } - - @Override - AccelerationUnit unit(); - - @Override - default AccelerationUnit baseUnit() { return (AccelerationUnit) unit().getBaseUnit(); } - - @Override - default double in(AccelerationUnit unit) { + public double in(AccelerationUnit unit) { return unit.fromBaseUnits(baseUnitMagnitude()); } @Override - default Acceleration unaryMinus() { + @SuppressWarnings("rawtypes") + public boolean equals(Object object) { + return object instanceof Acceleration m && isEquivalent(m); + } + + @Override + public Acceleration unaryMinus() { return (Acceleration) unit().ofBaseUnits(0 - baseUnitMagnitude()); } @@ -51,27 +60,27 @@ public interface Acceleration extends Measure negate() { + public Acceleration negate() { return (Acceleration) unaryMinus(); } @Override - default Acceleration plus(Measure> other) { + public Acceleration plus(Measure> other) { return (Acceleration) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude()); } @Override - default Acceleration minus(Measure> other) { + public Acceleration minus(Measure> other) { return (Acceleration) unit().ofBaseUnits(baseUnitMagnitude() - other.baseUnitMagnitude()); } @Override - default Acceleration times(double multiplier) { + public Acceleration times(double multiplier) { return (Acceleration) unit().ofBaseUnits(baseUnitMagnitude() * multiplier); } @Override - default Acceleration div(double divisor) { + public Acceleration div(double divisor) { return (Acceleration) unit().ofBaseUnits(baseUnitMagnitude() / divisor); } @@ -83,18 +92,18 @@ public interface Acceleration extends Measure divide(double divisor) { + public Acceleration divide(double divisor) { return (Acceleration) div(divisor); } @Override - default Mult, AccelerationUnit> times(Acceleration multiplier) { + public Mult, AccelerationUnit> times(Acceleration multiplier) { return (Mult, AccelerationUnit>) Measure.super.times(multiplier); } @Override - default Per, AccelerationUnit> div(Acceleration divisor) { + public Per, AccelerationUnit> div(Acceleration divisor) { return (Per, AccelerationUnit>) Measure.super.div(divisor); } @@ -106,23 +115,23 @@ public interface Acceleration extends Measure, AccelerationUnit> divide(Acceleration divisor) { + public Per, AccelerationUnit> divide(Acceleration divisor) { return div(divisor); } @Override - default Per, AccelerationUnit> per(AccelerationUnit divisorUnit) { + public Per, AccelerationUnit> per(AccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, AngleUnit> times(Angle multiplier) { + public Mult, AngleUnit> times(Angle multiplier) { return (Mult, AngleUnit>) Measure.super.times(multiplier); } @Override - default Per, AngleUnit> div(Angle divisor) { + public Per, AngleUnit> div(Angle divisor) { return (Per, AngleUnit>) Measure.super.div(divisor); } @@ -134,23 +143,23 @@ public interface Acceleration extends Measure, AngleUnit> divide(Angle divisor) { + public Per, AngleUnit> divide(Angle divisor) { return div(divisor); } @Override - default Per, AngleUnit> per(AngleUnit divisorUnit) { + public Per, AngleUnit> per(AngleUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, AngularAccelerationUnit> times(AngularAcceleration multiplier) { + public Mult, AngularAccelerationUnit> times(AngularAcceleration multiplier) { return (Mult, AngularAccelerationUnit>) Measure.super.times(multiplier); } @Override - default Per, AngularAccelerationUnit> div(AngularAcceleration divisor) { + public Per, AngularAccelerationUnit> div(AngularAcceleration divisor) { return (Per, AngularAccelerationUnit>) Measure.super.div(divisor); } @@ -162,23 +171,23 @@ public interface Acceleration extends Measure, AngularAccelerationUnit> divide(AngularAcceleration divisor) { + public Per, AngularAccelerationUnit> divide(AngularAcceleration divisor) { return div(divisor); } @Override - default Per, AngularAccelerationUnit> per(AngularAccelerationUnit divisorUnit) { + public Per, AngularAccelerationUnit> per(AngularAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, AngularMomentumUnit> times(AngularMomentum multiplier) { + public Mult, AngularMomentumUnit> times(AngularMomentum multiplier) { return (Mult, AngularMomentumUnit>) Measure.super.times(multiplier); } @Override - default Per, AngularMomentumUnit> div(AngularMomentum divisor) { + public Per, AngularMomentumUnit> div(AngularMomentum divisor) { return (Per, AngularMomentumUnit>) Measure.super.div(divisor); } @@ -190,23 +199,23 @@ public interface Acceleration extends Measure, AngularMomentumUnit> divide(AngularMomentum divisor) { + public Per, AngularMomentumUnit> divide(AngularMomentum divisor) { return div(divisor); } @Override - default Per, AngularMomentumUnit> per(AngularMomentumUnit divisorUnit) { + public Per, AngularMomentumUnit> per(AngularMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, AngularVelocityUnit> times(AngularVelocity multiplier) { + public Mult, AngularVelocityUnit> times(AngularVelocity multiplier) { return (Mult, AngularVelocityUnit>) Measure.super.times(multiplier); } @Override - default Per, AngularVelocityUnit> div(AngularVelocity divisor) { + public Per, AngularVelocityUnit> div(AngularVelocity divisor) { return (Per, AngularVelocityUnit>) Measure.super.div(divisor); } @@ -218,23 +227,23 @@ public interface Acceleration extends Measure, AngularVelocityUnit> divide(AngularVelocity divisor) { + public Per, AngularVelocityUnit> divide(AngularVelocity divisor) { return div(divisor); } @Override - default Per, AngularVelocityUnit> per(AngularVelocityUnit divisorUnit) { + public Per, AngularVelocityUnit> per(AngularVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, CurrentUnit> times(Current multiplier) { + public Mult, CurrentUnit> times(Current multiplier) { return (Mult, CurrentUnit>) Measure.super.times(multiplier); } @Override - default Per, CurrentUnit> div(Current divisor) { + public Per, CurrentUnit> div(Current divisor) { return (Per, CurrentUnit>) Measure.super.div(divisor); } @@ -246,17 +255,17 @@ public interface Acceleration extends Measure, CurrentUnit> divide(Current divisor) { + public Per, CurrentUnit> divide(Current divisor) { return div(divisor); } @Override - default Per, CurrentUnit> per(CurrentUnit divisorUnit) { + public Per, CurrentUnit> per(CurrentUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Acceleration div(Dimensionless divisor) { + public Acceleration div(Dimensionless divisor) { return (Acceleration) unit().of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -268,23 +277,23 @@ public interface Acceleration extends Measure divide(Dimensionless divisor) { + public Acceleration divide(Dimensionless divisor) { return (Acceleration) div(divisor); } @Override - default Acceleration times(Dimensionless multiplier) { + public Acceleration times(Dimensionless multiplier) { return (Acceleration) unit().of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Mult, DistanceUnit> times(Distance multiplier) { + public Mult, DistanceUnit> times(Distance multiplier) { return (Mult, DistanceUnit>) Measure.super.times(multiplier); } @Override - default Per, DistanceUnit> div(Distance divisor) { + public Per, DistanceUnit> div(Distance divisor) { return (Per, DistanceUnit>) Measure.super.div(divisor); } @@ -296,23 +305,23 @@ public interface Acceleration extends Measure, DistanceUnit> divide(Distance divisor) { + public Per, DistanceUnit> divide(Distance divisor) { return div(divisor); } @Override - default Per, DistanceUnit> per(DistanceUnit divisorUnit) { + public Per, DistanceUnit> per(DistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, EnergyUnit> times(Energy multiplier) { + public Mult, EnergyUnit> times(Energy multiplier) { return (Mult, EnergyUnit>) Measure.super.times(multiplier); } @Override - default Per, EnergyUnit> div(Energy divisor) { + public Per, EnergyUnit> div(Energy divisor) { return (Per, EnergyUnit>) Measure.super.div(divisor); } @@ -324,23 +333,23 @@ public interface Acceleration extends Measure, EnergyUnit> divide(Energy divisor) { + public Per, EnergyUnit> divide(Energy divisor) { return div(divisor); } @Override - default Per, EnergyUnit> per(EnergyUnit divisorUnit) { + public Per, EnergyUnit> per(EnergyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, ForceUnit> times(Force multiplier) { + public Mult, ForceUnit> times(Force multiplier) { return (Mult, ForceUnit>) Measure.super.times(multiplier); } @Override - default Per, ForceUnit> div(Force divisor) { + public Per, ForceUnit> div(Force divisor) { return (Per, ForceUnit>) Measure.super.div(divisor); } @@ -352,23 +361,23 @@ public interface Acceleration extends Measure, ForceUnit> divide(Force divisor) { + public Per, ForceUnit> divide(Force divisor) { return div(divisor); } @Override - default Per, ForceUnit> per(ForceUnit divisorUnit) { + public Per, ForceUnit> per(ForceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, FrequencyUnit> times(Frequency multiplier) { + public Mult, FrequencyUnit> times(Frequency multiplier) { return (Mult, FrequencyUnit>) Measure.super.times(multiplier); } @Override - default Per, FrequencyUnit> div(Frequency divisor) { + public Per, FrequencyUnit> div(Frequency divisor) { return (Per, FrequencyUnit>) Measure.super.div(divisor); } @@ -380,23 +389,23 @@ public interface Acceleration extends Measure, FrequencyUnit> divide(Frequency divisor) { + public Per, FrequencyUnit> divide(Frequency divisor) { return div(divisor); } @Override - default Per, FrequencyUnit> per(FrequencyUnit divisorUnit) { + public Per, FrequencyUnit> per(FrequencyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, LinearAccelerationUnit> times(LinearAcceleration multiplier) { + public Mult, LinearAccelerationUnit> times(LinearAcceleration multiplier) { return (Mult, LinearAccelerationUnit>) Measure.super.times(multiplier); } @Override - default Per, LinearAccelerationUnit> div(LinearAcceleration divisor) { + public Per, LinearAccelerationUnit> div(LinearAcceleration divisor) { return (Per, LinearAccelerationUnit>) Measure.super.div(divisor); } @@ -408,23 +417,23 @@ public interface Acceleration extends Measure, LinearAccelerationUnit> divide(LinearAcceleration divisor) { + public Per, LinearAccelerationUnit> divide(LinearAcceleration divisor) { return div(divisor); } @Override - default Per, LinearAccelerationUnit> per(LinearAccelerationUnit divisorUnit) { + public Per, LinearAccelerationUnit> per(LinearAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, LinearMomentumUnit> times(LinearMomentum multiplier) { + public Mult, LinearMomentumUnit> times(LinearMomentum multiplier) { return (Mult, LinearMomentumUnit>) Measure.super.times(multiplier); } @Override - default Per, LinearMomentumUnit> div(LinearMomentum divisor) { + public Per, LinearMomentumUnit> div(LinearMomentum divisor) { return (Per, LinearMomentumUnit>) Measure.super.div(divisor); } @@ -436,23 +445,23 @@ public interface Acceleration extends Measure, LinearMomentumUnit> divide(LinearMomentum divisor) { + public Per, LinearMomentumUnit> divide(LinearMomentum divisor) { return div(divisor); } @Override - default Per, LinearMomentumUnit> per(LinearMomentumUnit divisorUnit) { + public Per, LinearMomentumUnit> per(LinearMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, LinearVelocityUnit> times(LinearVelocity multiplier) { + public Mult, LinearVelocityUnit> times(LinearVelocity multiplier) { return (Mult, LinearVelocityUnit>) Measure.super.times(multiplier); } @Override - default Per, LinearVelocityUnit> div(LinearVelocity divisor) { + public Per, LinearVelocityUnit> div(LinearVelocity divisor) { return (Per, LinearVelocityUnit>) Measure.super.div(divisor); } @@ -464,23 +473,23 @@ public interface Acceleration extends Measure, LinearVelocityUnit> divide(LinearVelocity divisor) { + public Per, LinearVelocityUnit> divide(LinearVelocity divisor) { return div(divisor); } @Override - default Per, LinearVelocityUnit> per(LinearVelocityUnit divisorUnit) { + public Per, LinearVelocityUnit> per(LinearVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, MassUnit> times(Mass multiplier) { + public Mult, MassUnit> times(Mass multiplier) { return (Mult, MassUnit>) Measure.super.times(multiplier); } @Override - default Per, MassUnit> div(Mass divisor) { + public Per, MassUnit> div(Mass divisor) { return (Per, MassUnit>) Measure.super.div(divisor); } @@ -492,23 +501,23 @@ public interface Acceleration extends Measure, MassUnit> divide(Mass divisor) { + public Per, MassUnit> divide(Mass divisor) { return div(divisor); } @Override - default Per, MassUnit> per(MassUnit divisorUnit) { + public Per, MassUnit> per(MassUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, MomentOfInertiaUnit> times(MomentOfInertia multiplier) { + public Mult, MomentOfInertiaUnit> times(MomentOfInertia multiplier) { return (Mult, MomentOfInertiaUnit>) Measure.super.times(multiplier); } @Override - default Per, MomentOfInertiaUnit> div(MomentOfInertia divisor) { + public Per, MomentOfInertiaUnit> div(MomentOfInertia divisor) { return (Per, MomentOfInertiaUnit>) Measure.super.div(divisor); } @@ -520,23 +529,23 @@ public interface Acceleration extends Measure, MomentOfInertiaUnit> divide(MomentOfInertia divisor) { + public Per, MomentOfInertiaUnit> divide(MomentOfInertia divisor) { return div(divisor); } @Override - default Per, MomentOfInertiaUnit> per(MomentOfInertiaUnit divisorUnit) { + public Per, MomentOfInertiaUnit> per(MomentOfInertiaUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, MultUnit> times(Mult multiplier) { + public Mult, MultUnit> times(Mult multiplier) { return (Mult, MultUnit>) Measure.super.times(multiplier); } @Override - default Per, MultUnit> div(Mult divisor) { + public Per, MultUnit> div(Mult divisor) { return (Per, MultUnit>) Measure.super.div(divisor); } @@ -548,23 +557,23 @@ public interface Acceleration extends Measure, MultUnit> divide(Mult divisor) { + public Per, MultUnit> divide(Mult divisor) { return div(divisor); } @Override - default Per, MultUnit> per(MultUnit divisorUnit) { + public Per, MultUnit> per(MultUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult, PerUnit> times(Per multiplier) { + public Mult, PerUnit> times(Per multiplier) { return (Mult, PerUnit>) Measure.super.times(multiplier); } @Override - default Per, PerUnit> div(Per divisor) { + public Per, PerUnit> div(Per divisor) { return (Per, PerUnit>) Measure.super.div(divisor); } @@ -576,23 +585,23 @@ public interface Acceleration extends Measure, PerUnit> divide(Per divisor) { + public Per, PerUnit> divide(Per divisor) { return div(divisor); } @Override - default Per, PerUnit> per(PerUnit divisorUnit) { + public Per, PerUnit> per(PerUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult, PowerUnit> times(Power multiplier) { + public Mult, PowerUnit> times(Power multiplier) { return (Mult, PowerUnit>) Measure.super.times(multiplier); } @Override - default Per, PowerUnit> div(Power divisor) { + public Per, PowerUnit> div(Power divisor) { return (Per, PowerUnit>) Measure.super.div(divisor); } @@ -604,23 +613,23 @@ public interface Acceleration extends Measure, PowerUnit> divide(Power divisor) { + public Per, PowerUnit> divide(Power divisor) { return div(divisor); } @Override - default Per, PowerUnit> per(PowerUnit divisorUnit) { + public Per, PowerUnit> per(PowerUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, ResistanceUnit> times(Resistance multiplier) { + public Mult, ResistanceUnit> times(Resistance multiplier) { return (Mult, ResistanceUnit>) Measure.super.times(multiplier); } @Override - default Per, ResistanceUnit> div(Resistance divisor) { + public Per, ResistanceUnit> div(Resistance divisor) { return (Per, ResistanceUnit>) Measure.super.div(divisor); } @@ -632,23 +641,23 @@ public interface Acceleration extends Measure, ResistanceUnit> divide(Resistance divisor) { + public Per, ResistanceUnit> divide(Resistance divisor) { return div(divisor); } @Override - default Per, ResistanceUnit> per(ResistanceUnit divisorUnit) { + public Per, ResistanceUnit> per(ResistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, TemperatureUnit> times(Temperature multiplier) { + public Mult, TemperatureUnit> times(Temperature multiplier) { return (Mult, TemperatureUnit>) Measure.super.times(multiplier); } @Override - default Per, TemperatureUnit> div(Temperature divisor) { + public Per, TemperatureUnit> div(Temperature divisor) { return (Per, TemperatureUnit>) Measure.super.div(divisor); } @@ -660,23 +669,23 @@ public interface Acceleration extends Measure, TemperatureUnit> divide(Temperature divisor) { + public Per, TemperatureUnit> divide(Temperature divisor) { return div(divisor); } @Override - default Per, TemperatureUnit> per(TemperatureUnit divisorUnit) { + public Per, TemperatureUnit> per(TemperatureUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, TimeUnit> times(Time multiplier) { + public Mult, TimeUnit> times(Time multiplier) { return (Mult, TimeUnit>) Measure.super.times(multiplier); } @Override - default Velocity> div(Time divisor) { + public Velocity> div(Time divisor) { return VelocityUnit.combine(unit(), divisor.unit()).ofBaseUnits(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -688,23 +697,23 @@ public interface Acceleration extends Measure> divide(Time divisor) { + public Velocity> divide(Time divisor) { return div(divisor); } @Override - default Velocity> per(TimeUnit divisorUnit) { + public Velocity> per(TimeUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, TorqueUnit> times(Torque multiplier) { + public Mult, TorqueUnit> times(Torque multiplier) { return (Mult, TorqueUnit>) Measure.super.times(multiplier); } @Override - default Per, TorqueUnit> div(Torque divisor) { + public Per, TorqueUnit> div(Torque divisor) { return (Per, TorqueUnit>) Measure.super.div(divisor); } @@ -716,23 +725,23 @@ public interface Acceleration extends Measure, TorqueUnit> divide(Torque divisor) { + public Per, TorqueUnit> divide(Torque divisor) { return div(divisor); } @Override - default Per, TorqueUnit> per(TorqueUnit divisorUnit) { + public Per, TorqueUnit> per(TorqueUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, VelocityUnit> times(Velocity multiplier) { + public Mult, VelocityUnit> times(Velocity multiplier) { return (Mult, VelocityUnit>) Measure.super.times(multiplier); } @Override - default Per, VelocityUnit> div(Velocity divisor) { + public Per, VelocityUnit> div(Velocity divisor) { return (Per, VelocityUnit>) Measure.super.div(divisor); } @@ -744,23 +753,23 @@ public interface Acceleration extends Measure, VelocityUnit> divide(Velocity divisor) { + public Per, VelocityUnit> divide(Velocity divisor) { return div(divisor); } @Override - default Per, VelocityUnit> per(VelocityUnit divisorUnit) { + public Per, VelocityUnit> per(VelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, VoltageUnit> times(Voltage multiplier) { + public Mult, VoltageUnit> times(Voltage multiplier) { return (Mult, VoltageUnit>) Measure.super.times(multiplier); } @Override - default Per, VoltageUnit> div(Voltage divisor) { + public Per, VoltageUnit> div(Voltage divisor) { return (Per, VoltageUnit>) Measure.super.div(divisor); } @@ -772,12 +781,12 @@ public interface Acceleration extends Measure, VoltageUnit> divide(Voltage divisor) { + public Per, VoltageUnit> divide(Voltage divisor) { return div(divisor); } @Override - default Per, VoltageUnit> per(VoltageUnit divisorUnit) { + public Per, VoltageUnit> per(VoltageUnit divisorUnit) { return div(divisorUnit.one()); } diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Angle.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Angle.java index 812b239a7b..1ecadb1a0b 100644 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Angle.java +++ b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Angle.java @@ -10,36 +10,45 @@ import static edu.wpi.first.units.Units.*; import edu.wpi.first.units.*; @SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public interface Angle extends Measure { - static Angle ofRelativeUnits(double magnitude, AngleUnit unit) { - return new ImmutableAngle(magnitude, unit.toBaseUnits(magnitude), unit); +public record Angle(double magnitude, double baseUnitMagnitude, AngleUnit unit) implements Measure { + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link AngleUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static Angle ofRelativeUnits(double magnitude, AngleUnit unit) { + return new Angle(magnitude, unit.toBaseUnits(magnitude), unit); } - static Angle ofBaseUnits(double baseUnitMagnitude, AngleUnit unit) { - return new ImmutableAngle(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link AngleUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit's base unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static Angle ofBaseUnits(double baseUnitMagnitude, AngleUnit unit) { + return new Angle(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); } @Override - Angle copy(); + public AngleUnit baseUnit() { return (AngleUnit) unit().getBaseUnit(); } @Override - default MutAngle mutableCopy() { - return new MutAngle(magnitude(), baseUnitMagnitude(), unit()); - } - - @Override - AngleUnit unit(); - - @Override - default AngleUnit baseUnit() { return (AngleUnit) unit().getBaseUnit(); } - - @Override - default double in(AngleUnit unit) { + public double in(AngleUnit unit) { return unit.fromBaseUnits(baseUnitMagnitude()); } @Override - default Angle unaryMinus() { + @SuppressWarnings("rawtypes") + public boolean equals(Object object) { + return object instanceof Angle m && isEquivalent(m); + } + + @Override + public Angle unaryMinus() { return (Angle) unit().ofBaseUnits(0 - baseUnitMagnitude()); } @@ -51,27 +60,27 @@ public interface Angle extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Angle negate() { + public Angle negate() { return (Angle) unaryMinus(); } @Override - default Angle plus(Measure other) { + public Angle plus(Measure other) { return (Angle) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude()); } @Override - default Angle minus(Measure other) { + public Angle minus(Measure other) { return (Angle) unit().ofBaseUnits(baseUnitMagnitude() - other.baseUnitMagnitude()); } @Override - default Angle times(double multiplier) { + public Angle times(double multiplier) { return (Angle) unit().ofBaseUnits(baseUnitMagnitude() * multiplier); } @Override - default Angle div(double divisor) { + public Angle div(double divisor) { return (Angle) unit().ofBaseUnits(baseUnitMagnitude() / divisor); } @@ -83,18 +92,18 @@ public interface Angle extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Angle divide(double divisor) { + public Angle divide(double divisor) { return (Angle) div(divisor); } @Override - default Mult> times(Acceleration multiplier) { + public Mult> times(Acceleration multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Acceleration divisor) { + public Per> div(Acceleration divisor) { return (Per>) Measure.super.div(divisor); } @@ -106,23 +115,23 @@ public interface Angle extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Acceleration divisor) { + public Per> divide(Acceleration divisor) { return div(divisor); } @Override - default Per> per(AccelerationUnit divisorUnit) { + public Per> per(AccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Angle multiplier) { + public Mult times(Angle multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Dimensionless div(Angle divisor) { + public Dimensionless div(Angle divisor) { return Value.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -134,23 +143,23 @@ public interface Angle extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Dimensionless divide(Angle divisor) { + public Dimensionless divide(Angle divisor) { return div(divisor); } @Override - default Dimensionless per(AngleUnit divisorUnit) { + public Dimensionless per(AngleUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularAcceleration multiplier) { + public Mult times(AngularAcceleration multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularAcceleration divisor) { + public Per div(AngularAcceleration divisor) { return (Per) Measure.super.div(divisor); } @@ -162,23 +171,23 @@ public interface Angle extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularAcceleration divisor) { + public Per divide(AngularAcceleration divisor) { return div(divisor); } @Override - default Per per(AngularAccelerationUnit divisorUnit) { + public Per per(AngularAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularMomentum multiplier) { + public Mult times(AngularMomentum multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularMomentum divisor) { + public Per div(AngularMomentum divisor) { return (Per) Measure.super.div(divisor); } @@ -190,23 +199,23 @@ public interface Angle extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularMomentum divisor) { + public Per divide(AngularMomentum divisor) { return div(divisor); } @Override - default Per per(AngularMomentumUnit divisorUnit) { + public Per per(AngularMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularVelocity multiplier) { + public Mult times(AngularVelocity multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularVelocity divisor) { + public Per div(AngularVelocity divisor) { return (Per) Measure.super.div(divisor); } @@ -218,23 +227,23 @@ public interface Angle extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularVelocity divisor) { + public Per divide(AngularVelocity divisor) { return div(divisor); } @Override - default Per per(AngularVelocityUnit divisorUnit) { + public Per per(AngularVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Current multiplier) { + public Mult times(Current multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Current divisor) { + public Per div(Current divisor) { return (Per) Measure.super.div(divisor); } @@ -246,17 +255,17 @@ public interface Angle extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Current divisor) { + public Per divide(Current divisor) { return div(divisor); } @Override - default Per per(CurrentUnit divisorUnit) { + public Per per(CurrentUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Angle div(Dimensionless divisor) { + public Angle div(Dimensionless divisor) { return (Angle) Radians.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -268,23 +277,23 @@ public interface Angle extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Angle divide(Dimensionless divisor) { + public Angle divide(Dimensionless divisor) { return (Angle) div(divisor); } @Override - default Angle times(Dimensionless multiplier) { + public Angle times(Dimensionless multiplier) { return (Angle) Radians.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Mult times(Distance multiplier) { + public Mult times(Distance multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Distance divisor) { + public Per div(Distance divisor) { return (Per) Measure.super.div(divisor); } @@ -296,23 +305,23 @@ public interface Angle extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Distance divisor) { + public Per divide(Distance divisor) { return div(divisor); } @Override - default Per per(DistanceUnit divisorUnit) { + public Per per(DistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Energy multiplier) { + public Mult times(Energy multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Energy divisor) { + public Per div(Energy divisor) { return (Per) Measure.super.div(divisor); } @@ -324,23 +333,23 @@ public interface Angle extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Energy divisor) { + public Per divide(Energy divisor) { return div(divisor); } @Override - default Per per(EnergyUnit divisorUnit) { + public Per per(EnergyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Force multiplier) { + public Mult times(Force multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Force divisor) { + public Per div(Force divisor) { return (Per) Measure.super.div(divisor); } @@ -352,23 +361,23 @@ public interface Angle extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Force divisor) { + public Per divide(Force divisor) { return div(divisor); } @Override - default Per per(ForceUnit divisorUnit) { + public Per per(ForceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default AngularVelocity times(Frequency multiplier) { + public AngularVelocity times(Frequency multiplier) { return RadiansPerSecond.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Per div(Frequency divisor) { + public Per div(Frequency divisor) { return (Per) Measure.super.div(divisor); } @@ -380,23 +389,23 @@ public interface Angle extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Frequency divisor) { + public Per divide(Frequency divisor) { return div(divisor); } @Override - default Per per(FrequencyUnit divisorUnit) { + public Per per(FrequencyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearAcceleration multiplier) { + public Mult times(LinearAcceleration multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearAcceleration divisor) { + public Per div(LinearAcceleration divisor) { return (Per) Measure.super.div(divisor); } @@ -408,23 +417,23 @@ public interface Angle extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearAcceleration divisor) { + public Per divide(LinearAcceleration divisor) { return div(divisor); } @Override - default Per per(LinearAccelerationUnit divisorUnit) { + public Per per(LinearAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearMomentum multiplier) { + public Mult times(LinearMomentum multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearMomentum divisor) { + public Per div(LinearMomentum divisor) { return (Per) Measure.super.div(divisor); } @@ -436,23 +445,23 @@ public interface Angle extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearMomentum divisor) { + public Per divide(LinearMomentum divisor) { return div(divisor); } @Override - default Per per(LinearMomentumUnit divisorUnit) { + public Per per(LinearMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearVelocity multiplier) { + public Mult times(LinearVelocity multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearVelocity divisor) { + public Per div(LinearVelocity divisor) { return (Per) Measure.super.div(divisor); } @@ -464,23 +473,23 @@ public interface Angle extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearVelocity divisor) { + public Per divide(LinearVelocity divisor) { return div(divisor); } @Override - default Per per(LinearVelocityUnit divisorUnit) { + public Per per(LinearVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Mass multiplier) { + public Mult times(Mass multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Mass divisor) { + public Per div(Mass divisor) { return (Per) Measure.super.div(divisor); } @@ -492,23 +501,23 @@ public interface Angle extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Mass divisor) { + public Per divide(Mass divisor) { return div(divisor); } @Override - default Per per(MassUnit divisorUnit) { + public Per per(MassUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(MomentOfInertia multiplier) { + public Mult times(MomentOfInertia multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(MomentOfInertia divisor) { + public Per div(MomentOfInertia divisor) { return (Per) Measure.super.div(divisor); } @@ -520,23 +529,23 @@ public interface Angle extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(MomentOfInertia divisor) { + public Per divide(MomentOfInertia divisor) { return div(divisor); } @Override - default Per per(MomentOfInertiaUnit divisorUnit) { + public Per per(MomentOfInertiaUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult> times(Mult multiplier) { + public Mult> times(Mult multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Mult divisor) { + public Per> div(Mult divisor) { return (Per>) Measure.super.div(divisor); } @@ -548,23 +557,23 @@ public interface Angle extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Mult divisor) { + public Per> divide(Mult divisor) { return div(divisor); } @Override - default Per> per(MultUnit divisorUnit) { + public Per> per(MultUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult> times(Per multiplier) { + public Mult> times(Per multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Per divisor) { + public Per> div(Per divisor) { return (Per>) Measure.super.div(divisor); } @@ -576,23 +585,23 @@ public interface Angle extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Per divisor) { + public Per> divide(Per divisor) { return div(divisor); } @Override - default Per> per(PerUnit divisorUnit) { + public Per> per(PerUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult times(Power multiplier) { + public Mult times(Power multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Power divisor) { + public Per div(Power divisor) { return (Per) Measure.super.div(divisor); } @@ -604,23 +613,23 @@ public interface Angle extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Power divisor) { + public Per divide(Power divisor) { return div(divisor); } @Override - default Per per(PowerUnit divisorUnit) { + public Per per(PowerUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Resistance multiplier) { + public Mult times(Resistance multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Resistance divisor) { + public Per div(Resistance divisor) { return (Per) Measure.super.div(divisor); } @@ -632,23 +641,23 @@ public interface Angle extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Resistance divisor) { + public Per divide(Resistance divisor) { return div(divisor); } @Override - default Per per(ResistanceUnit divisorUnit) { + public Per per(ResistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Temperature multiplier) { + public Mult times(Temperature multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Temperature divisor) { + public Per div(Temperature divisor) { return (Per) Measure.super.div(divisor); } @@ -660,23 +669,23 @@ public interface Angle extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Temperature divisor) { + public Per divide(Temperature divisor) { return div(divisor); } @Override - default Per per(TemperatureUnit divisorUnit) { + public Per per(TemperatureUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Time multiplier) { + public Mult times(Time multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default AngularVelocity div(Time divisor) { + public AngularVelocity div(Time divisor) { return RadiansPerSecond.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -688,23 +697,23 @@ public interface Angle extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default AngularVelocity divide(Time divisor) { + public AngularVelocity divide(Time divisor) { return div(divisor); } @Override - default AngularVelocity per(TimeUnit divisorUnit) { + public AngularVelocity per(TimeUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Torque multiplier) { + public Mult times(Torque multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Torque divisor) { + public Per div(Torque divisor) { return (Per) Measure.super.div(divisor); } @@ -716,23 +725,23 @@ public interface Angle extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Torque divisor) { + public Per divide(Torque divisor) { return div(divisor); } @Override - default Per per(TorqueUnit divisorUnit) { + public Per per(TorqueUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult> times(Velocity multiplier) { + public Mult> times(Velocity multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Velocity divisor) { + public Per> div(Velocity divisor) { return (Per>) Measure.super.div(divisor); } @@ -744,23 +753,23 @@ public interface Angle extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Velocity divisor) { + public Per> divide(Velocity divisor) { return div(divisor); } @Override - default Per> per(VelocityUnit divisorUnit) { + public Per> per(VelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Voltage multiplier) { + public Mult times(Voltage multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Voltage divisor) { + public Per div(Voltage divisor) { return (Per) Measure.super.div(divisor); } @@ -772,12 +781,12 @@ public interface Angle extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Voltage divisor) { + public Per divide(Voltage divisor) { return div(divisor); } @Override - default Per per(VoltageUnit divisorUnit) { + public Per per(VoltageUnit divisorUnit) { return div(divisorUnit.one()); } diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/AngularAcceleration.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/AngularAcceleration.java index d90cbe2056..663ba6e6ab 100644 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/AngularAcceleration.java +++ b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/AngularAcceleration.java @@ -10,36 +10,45 @@ import static edu.wpi.first.units.Units.*; import edu.wpi.first.units.*; @SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public interface AngularAcceleration extends Measure { - static AngularAcceleration ofRelativeUnits(double magnitude, AngularAccelerationUnit unit) { - return new ImmutableAngularAcceleration(magnitude, unit.toBaseUnits(magnitude), unit); +public record AngularAcceleration(double magnitude, double baseUnitMagnitude, AngularAccelerationUnit unit) implements Measure { + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link AngularAccelerationUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static AngularAcceleration ofRelativeUnits(double magnitude, AngularAccelerationUnit unit) { + return new AngularAcceleration(magnitude, unit.toBaseUnits(magnitude), unit); } - static AngularAcceleration ofBaseUnits(double baseUnitMagnitude, AngularAccelerationUnit unit) { - return new ImmutableAngularAcceleration(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link AngularAccelerationUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit's base unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static AngularAcceleration ofBaseUnits(double baseUnitMagnitude, AngularAccelerationUnit unit) { + return new AngularAcceleration(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); } @Override - AngularAcceleration copy(); + public AngularAccelerationUnit baseUnit() { return (AngularAccelerationUnit) unit().getBaseUnit(); } @Override - default MutAngularAcceleration mutableCopy() { - return new MutAngularAcceleration(magnitude(), baseUnitMagnitude(), unit()); - } - - @Override - AngularAccelerationUnit unit(); - - @Override - default AngularAccelerationUnit baseUnit() { return (AngularAccelerationUnit) unit().getBaseUnit(); } - - @Override - default double in(AngularAccelerationUnit unit) { + public double in(AngularAccelerationUnit unit) { return unit.fromBaseUnits(baseUnitMagnitude()); } @Override - default AngularAcceleration unaryMinus() { + @SuppressWarnings("rawtypes") + public boolean equals(Object object) { + return object instanceof AngularAcceleration m && isEquivalent(m); + } + + @Override + public AngularAcceleration unaryMinus() { return (AngularAcceleration) unit().ofBaseUnits(0 - baseUnitMagnitude()); } @@ -51,27 +60,27 @@ public interface AngularAcceleration extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default AngularAcceleration negate() { + public AngularAcceleration negate() { return (AngularAcceleration) unaryMinus(); } @Override - default AngularAcceleration plus(Measure other) { + public AngularAcceleration plus(Measure other) { return (AngularAcceleration) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude()); } @Override - default AngularAcceleration minus(Measure other) { + public AngularAcceleration minus(Measure other) { return (AngularAcceleration) unit().ofBaseUnits(baseUnitMagnitude() - other.baseUnitMagnitude()); } @Override - default AngularAcceleration times(double multiplier) { + public AngularAcceleration times(double multiplier) { return (AngularAcceleration) unit().ofBaseUnits(baseUnitMagnitude() * multiplier); } @Override - default AngularAcceleration div(double divisor) { + public AngularAcceleration div(double divisor) { return (AngularAcceleration) unit().ofBaseUnits(baseUnitMagnitude() / divisor); } @@ -83,18 +92,18 @@ public interface AngularAcceleration extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default AngularAcceleration divide(double divisor) { + public AngularAcceleration divide(double divisor) { return (AngularAcceleration) div(divisor); } @Override - default Mult> times(Acceleration multiplier) { + public Mult> times(Acceleration multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Acceleration divisor) { + public Per> div(Acceleration divisor) { return (Per>) Measure.super.div(divisor); } @@ -106,23 +115,23 @@ public interface AngularAcceleration extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Acceleration divisor) { + public Per> divide(Acceleration divisor) { return div(divisor); } @Override - default Per> per(AccelerationUnit divisorUnit) { + public Per> per(AccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Angle multiplier) { + public Mult times(Angle multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Angle divisor) { + public Per div(Angle divisor) { return (Per) Measure.super.div(divisor); } @@ -134,23 +143,23 @@ public interface AngularAcceleration extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Angle divisor) { + public Per divide(Angle divisor) { return div(divisor); } @Override - default Per per(AngleUnit divisorUnit) { + public Per per(AngleUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularAcceleration multiplier) { + public Mult times(AngularAcceleration multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Dimensionless div(AngularAcceleration divisor) { + public Dimensionless div(AngularAcceleration divisor) { return Value.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -162,23 +171,23 @@ public interface AngularAcceleration extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Dimensionless divide(AngularAcceleration divisor) { + public Dimensionless divide(AngularAcceleration divisor) { return div(divisor); } @Override - default Dimensionless per(AngularAccelerationUnit divisorUnit) { + public Dimensionless per(AngularAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularMomentum multiplier) { + public Mult times(AngularMomentum multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularMomentum divisor) { + public Per div(AngularMomentum divisor) { return (Per) Measure.super.div(divisor); } @@ -190,23 +199,23 @@ public interface AngularAcceleration extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularMomentum divisor) { + public Per divide(AngularMomentum divisor) { return div(divisor); } @Override - default Per per(AngularMomentumUnit divisorUnit) { + public Per per(AngularMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularVelocity multiplier) { + public Mult times(AngularVelocity multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularVelocity divisor) { + public Per div(AngularVelocity divisor) { return (Per) Measure.super.div(divisor); } @@ -218,23 +227,23 @@ public interface AngularAcceleration extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularVelocity divisor) { + public Per divide(AngularVelocity divisor) { return div(divisor); } @Override - default Per per(AngularVelocityUnit divisorUnit) { + public Per per(AngularVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Current multiplier) { + public Mult times(Current multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Current divisor) { + public Per div(Current divisor) { return (Per) Measure.super.div(divisor); } @@ -246,17 +255,17 @@ public interface AngularAcceleration extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Current divisor) { + public Per divide(Current divisor) { return div(divisor); } @Override - default Per per(CurrentUnit divisorUnit) { + public Per per(CurrentUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default AngularAcceleration div(Dimensionless divisor) { + public AngularAcceleration div(Dimensionless divisor) { return (AngularAcceleration) RadiansPerSecondPerSecond.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -268,23 +277,23 @@ public interface AngularAcceleration extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default AngularAcceleration divide(Dimensionless divisor) { + public AngularAcceleration divide(Dimensionless divisor) { return (AngularAcceleration) div(divisor); } @Override - default AngularAcceleration times(Dimensionless multiplier) { + public AngularAcceleration times(Dimensionless multiplier) { return (AngularAcceleration) RadiansPerSecondPerSecond.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Mult times(Distance multiplier) { + public Mult times(Distance multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Distance divisor) { + public Per div(Distance divisor) { return (Per) Measure.super.div(divisor); } @@ -296,23 +305,23 @@ public interface AngularAcceleration extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Distance divisor) { + public Per divide(Distance divisor) { return div(divisor); } @Override - default Per per(DistanceUnit divisorUnit) { + public Per per(DistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Energy multiplier) { + public Mult times(Energy multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Energy divisor) { + public Per div(Energy divisor) { return (Per) Measure.super.div(divisor); } @@ -324,23 +333,23 @@ public interface AngularAcceleration extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Energy divisor) { + public Per divide(Energy divisor) { return div(divisor); } @Override - default Per per(EnergyUnit divisorUnit) { + public Per per(EnergyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Force multiplier) { + public Mult times(Force multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Force divisor) { + public Per div(Force divisor) { return (Per) Measure.super.div(divisor); } @@ -352,23 +361,23 @@ public interface AngularAcceleration extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Force divisor) { + public Per divide(Force divisor) { return div(divisor); } @Override - default Per per(ForceUnit divisorUnit) { + public Per per(ForceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Frequency multiplier) { + public Mult times(Frequency multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default AngularVelocity div(Frequency divisor) { + public AngularVelocity div(Frequency divisor) { return RadiansPerSecond.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -380,23 +389,23 @@ public interface AngularAcceleration extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default AngularVelocity divide(Frequency divisor) { + public AngularVelocity divide(Frequency divisor) { return div(divisor); } @Override - default AngularVelocity per(FrequencyUnit divisorUnit) { + public AngularVelocity per(FrequencyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearAcceleration multiplier) { + public Mult times(LinearAcceleration multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearAcceleration divisor) { + public Per div(LinearAcceleration divisor) { return (Per) Measure.super.div(divisor); } @@ -408,23 +417,23 @@ public interface AngularAcceleration extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearAcceleration divisor) { + public Per divide(LinearAcceleration divisor) { return div(divisor); } @Override - default Per per(LinearAccelerationUnit divisorUnit) { + public Per per(LinearAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearMomentum multiplier) { + public Mult times(LinearMomentum multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearMomentum divisor) { + public Per div(LinearMomentum divisor) { return (Per) Measure.super.div(divisor); } @@ -436,23 +445,23 @@ public interface AngularAcceleration extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearMomentum divisor) { + public Per divide(LinearMomentum divisor) { return div(divisor); } @Override - default Per per(LinearMomentumUnit divisorUnit) { + public Per per(LinearMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearVelocity multiplier) { + public Mult times(LinearVelocity multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearVelocity divisor) { + public Per div(LinearVelocity divisor) { return (Per) Measure.super.div(divisor); } @@ -464,23 +473,23 @@ public interface AngularAcceleration extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearVelocity divisor) { + public Per divide(LinearVelocity divisor) { return div(divisor); } @Override - default Per per(LinearVelocityUnit divisorUnit) { + public Per per(LinearVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Mass multiplier) { + public Mult times(Mass multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Mass divisor) { + public Per div(Mass divisor) { return (Per) Measure.super.div(divisor); } @@ -492,23 +501,23 @@ public interface AngularAcceleration extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Mass divisor) { + public Per divide(Mass divisor) { return div(divisor); } @Override - default Per per(MassUnit divisorUnit) { + public Per per(MassUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(MomentOfInertia multiplier) { + public Mult times(MomentOfInertia multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(MomentOfInertia divisor) { + public Per div(MomentOfInertia divisor) { return (Per) Measure.super.div(divisor); } @@ -520,23 +529,23 @@ public interface AngularAcceleration extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(MomentOfInertia divisor) { + public Per divide(MomentOfInertia divisor) { return div(divisor); } @Override - default Per per(MomentOfInertiaUnit divisorUnit) { + public Per per(MomentOfInertiaUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult> times(Mult multiplier) { + public Mult> times(Mult multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Mult divisor) { + public Per> div(Mult divisor) { return (Per>) Measure.super.div(divisor); } @@ -548,23 +557,23 @@ public interface AngularAcceleration extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Mult divisor) { + public Per> divide(Mult divisor) { return div(divisor); } @Override - default Per> per(MultUnit divisorUnit) { + public Per> per(MultUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult> times(Per multiplier) { + public Mult> times(Per multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Per divisor) { + public Per> div(Per divisor) { return (Per>) Measure.super.div(divisor); } @@ -576,23 +585,23 @@ public interface AngularAcceleration extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Per divisor) { + public Per> divide(Per divisor) { return div(divisor); } @Override - default Per> per(PerUnit divisorUnit) { + public Per> per(PerUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult times(Power multiplier) { + public Mult times(Power multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Power divisor) { + public Per div(Power divisor) { return (Per) Measure.super.div(divisor); } @@ -604,23 +613,23 @@ public interface AngularAcceleration extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Power divisor) { + public Per divide(Power divisor) { return div(divisor); } @Override - default Per per(PowerUnit divisorUnit) { + public Per per(PowerUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Resistance multiplier) { + public Mult times(Resistance multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Resistance divisor) { + public Per div(Resistance divisor) { return (Per) Measure.super.div(divisor); } @@ -632,23 +641,23 @@ public interface AngularAcceleration extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Resistance divisor) { + public Per divide(Resistance divisor) { return div(divisor); } @Override - default Per per(ResistanceUnit divisorUnit) { + public Per per(ResistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Temperature multiplier) { + public Mult times(Temperature multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Temperature divisor) { + public Per div(Temperature divisor) { return (Per) Measure.super.div(divisor); } @@ -660,23 +669,23 @@ public interface AngularAcceleration extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Temperature divisor) { + public Per divide(Temperature divisor) { return div(divisor); } @Override - default Per per(TemperatureUnit divisorUnit) { + public Per per(TemperatureUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default AngularVelocity times(Time multiplier) { + public AngularVelocity times(Time multiplier) { return RadiansPerSecond.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Velocity div(Time divisor) { + public Velocity div(Time divisor) { return VelocityUnit.combine(unit(), divisor.unit()).ofBaseUnits(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -688,23 +697,23 @@ public interface AngularAcceleration extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Velocity divide(Time divisor) { + public Velocity divide(Time divisor) { return div(divisor); } @Override - default Velocity per(TimeUnit divisorUnit) { + public Velocity per(TimeUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Torque multiplier) { + public Mult times(Torque multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Torque divisor) { + public Per div(Torque divisor) { return (Per) Measure.super.div(divisor); } @@ -716,23 +725,23 @@ public interface AngularAcceleration extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Torque divisor) { + public Per divide(Torque divisor) { return div(divisor); } @Override - default Per per(TorqueUnit divisorUnit) { + public Per per(TorqueUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult> times(Velocity multiplier) { + public Mult> times(Velocity multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Velocity divisor) { + public Per> div(Velocity divisor) { return (Per>) Measure.super.div(divisor); } @@ -744,23 +753,23 @@ public interface AngularAcceleration extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Velocity divisor) { + public Per> divide(Velocity divisor) { return div(divisor); } @Override - default Per> per(VelocityUnit divisorUnit) { + public Per> per(VelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Voltage multiplier) { + public Mult times(Voltage multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Voltage divisor) { + public Per div(Voltage divisor) { return (Per) Measure.super.div(divisor); } @@ -772,12 +781,12 @@ public interface AngularAcceleration extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Voltage divisor) { + public Per divide(Voltage divisor) { return div(divisor); } @Override - default Per per(VoltageUnit divisorUnit) { + public Per per(VoltageUnit divisorUnit) { return div(divisorUnit.one()); } diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/AngularMomentum.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/AngularMomentum.java index ab1b0f15fd..407087f980 100644 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/AngularMomentum.java +++ b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/AngularMomentum.java @@ -10,36 +10,45 @@ import static edu.wpi.first.units.Units.*; import edu.wpi.first.units.*; @SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public interface AngularMomentum extends Measure { - static AngularMomentum ofRelativeUnits(double magnitude, AngularMomentumUnit unit) { - return new ImmutableAngularMomentum(magnitude, unit.toBaseUnits(magnitude), unit); +public record AngularMomentum(double magnitude, double baseUnitMagnitude, AngularMomentumUnit unit) implements Measure { + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link AngularMomentumUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static AngularMomentum ofRelativeUnits(double magnitude, AngularMomentumUnit unit) { + return new AngularMomentum(magnitude, unit.toBaseUnits(magnitude), unit); } - static AngularMomentum ofBaseUnits(double baseUnitMagnitude, AngularMomentumUnit unit) { - return new ImmutableAngularMomentum(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link AngularMomentumUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit's base unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static AngularMomentum ofBaseUnits(double baseUnitMagnitude, AngularMomentumUnit unit) { + return new AngularMomentum(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); } @Override - AngularMomentum copy(); + public AngularMomentumUnit baseUnit() { return (AngularMomentumUnit) unit().getBaseUnit(); } @Override - default MutAngularMomentum mutableCopy() { - return new MutAngularMomentum(magnitude(), baseUnitMagnitude(), unit()); - } - - @Override - AngularMomentumUnit unit(); - - @Override - default AngularMomentumUnit baseUnit() { return (AngularMomentumUnit) unit().getBaseUnit(); } - - @Override - default double in(AngularMomentumUnit unit) { + public double in(AngularMomentumUnit unit) { return unit.fromBaseUnits(baseUnitMagnitude()); } @Override - default AngularMomentum unaryMinus() { + @SuppressWarnings("rawtypes") + public boolean equals(Object object) { + return object instanceof AngularMomentum m && isEquivalent(m); + } + + @Override + public AngularMomentum unaryMinus() { return (AngularMomentum) unit().ofBaseUnits(0 - baseUnitMagnitude()); } @@ -51,27 +60,27 @@ public interface AngularMomentum extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default AngularMomentum negate() { + public AngularMomentum negate() { return (AngularMomentum) unaryMinus(); } @Override - default AngularMomentum plus(Measure other) { + public AngularMomentum plus(Measure other) { return (AngularMomentum) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude()); } @Override - default AngularMomentum minus(Measure other) { + public AngularMomentum minus(Measure other) { return (AngularMomentum) unit().ofBaseUnits(baseUnitMagnitude() - other.baseUnitMagnitude()); } @Override - default AngularMomentum times(double multiplier) { + public AngularMomentum times(double multiplier) { return (AngularMomentum) unit().ofBaseUnits(baseUnitMagnitude() * multiplier); } @Override - default AngularMomentum div(double divisor) { + public AngularMomentum div(double divisor) { return (AngularMomentum) unit().ofBaseUnits(baseUnitMagnitude() / divisor); } @@ -83,18 +92,18 @@ public interface AngularMomentum extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default AngularMomentum divide(double divisor) { + public AngularMomentum divide(double divisor) { return (AngularMomentum) div(divisor); } @Override - default Mult> times(Acceleration multiplier) { + public Mult> times(Acceleration multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Acceleration divisor) { + public Per> div(Acceleration divisor) { return (Per>) Measure.super.div(divisor); } @@ -106,23 +115,23 @@ public interface AngularMomentum extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Acceleration divisor) { + public Per> divide(Acceleration divisor) { return div(divisor); } @Override - default Per> per(AccelerationUnit divisorUnit) { + public Per> per(AccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Angle multiplier) { + public Mult times(Angle multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Angle divisor) { + public Per div(Angle divisor) { return (Per) Measure.super.div(divisor); } @@ -134,23 +143,23 @@ public interface AngularMomentum extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Angle divisor) { + public Per divide(Angle divisor) { return div(divisor); } @Override - default Per per(AngleUnit divisorUnit) { + public Per per(AngleUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularAcceleration multiplier) { + public Mult times(AngularAcceleration multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularAcceleration divisor) { + public Per div(AngularAcceleration divisor) { return (Per) Measure.super.div(divisor); } @@ -162,23 +171,23 @@ public interface AngularMomentum extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularAcceleration divisor) { + public Per divide(AngularAcceleration divisor) { return div(divisor); } @Override - default Per per(AngularAccelerationUnit divisorUnit) { + public Per per(AngularAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularMomentum multiplier) { + public Mult times(AngularMomentum multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Dimensionless div(AngularMomentum divisor) { + public Dimensionless div(AngularMomentum divisor) { return Value.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -190,23 +199,23 @@ public interface AngularMomentum extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Dimensionless divide(AngularMomentum divisor) { + public Dimensionless divide(AngularMomentum divisor) { return div(divisor); } @Override - default Dimensionless per(AngularMomentumUnit divisorUnit) { + public Dimensionless per(AngularMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularVelocity multiplier) { + public Mult times(AngularVelocity multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default MomentOfInertia div(AngularVelocity divisor) { + public MomentOfInertia div(AngularVelocity divisor) { return KilogramSquareMeters.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -218,23 +227,23 @@ public interface AngularMomentum extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default MomentOfInertia divide(AngularVelocity divisor) { + public MomentOfInertia divide(AngularVelocity divisor) { return div(divisor); } @Override - default MomentOfInertia per(AngularVelocityUnit divisorUnit) { + public MomentOfInertia per(AngularVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Current multiplier) { + public Mult times(Current multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Current divisor) { + public Per div(Current divisor) { return (Per) Measure.super.div(divisor); } @@ -246,17 +255,17 @@ public interface AngularMomentum extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Current divisor) { + public Per divide(Current divisor) { return div(divisor); } @Override - default Per per(CurrentUnit divisorUnit) { + public Per per(CurrentUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default AngularMomentum div(Dimensionless divisor) { + public AngularMomentum div(Dimensionless divisor) { return (AngularMomentum) KilogramMetersSquaredPerSecond.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -268,23 +277,23 @@ public interface AngularMomentum extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default AngularMomentum divide(Dimensionless divisor) { + public AngularMomentum divide(Dimensionless divisor) { return (AngularMomentum) div(divisor); } @Override - default AngularMomentum times(Dimensionless multiplier) { + public AngularMomentum times(Dimensionless multiplier) { return (AngularMomentum) KilogramMetersSquaredPerSecond.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Mult times(Distance multiplier) { + public Mult times(Distance multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Distance divisor) { + public Per div(Distance divisor) { return (Per) Measure.super.div(divisor); } @@ -296,23 +305,23 @@ public interface AngularMomentum extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Distance divisor) { + public Per divide(Distance divisor) { return div(divisor); } @Override - default Per per(DistanceUnit divisorUnit) { + public Per per(DistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Energy multiplier) { + public Mult times(Energy multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Energy divisor) { + public Per div(Energy divisor) { return (Per) Measure.super.div(divisor); } @@ -324,23 +333,23 @@ public interface AngularMomentum extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Energy divisor) { + public Per divide(Energy divisor) { return div(divisor); } @Override - default Per per(EnergyUnit divisorUnit) { + public Per per(EnergyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Force multiplier) { + public Mult times(Force multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Force divisor) { + public Per div(Force divisor) { return (Per) Measure.super.div(divisor); } @@ -352,23 +361,23 @@ public interface AngularMomentum extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Force divisor) { + public Per divide(Force divisor) { return div(divisor); } @Override - default Per per(ForceUnit divisorUnit) { + public Per per(ForceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Frequency multiplier) { + public Mult times(Frequency multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Frequency divisor) { + public Per div(Frequency divisor) { return (Per) Measure.super.div(divisor); } @@ -380,23 +389,23 @@ public interface AngularMomentum extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Frequency divisor) { + public Per divide(Frequency divisor) { return div(divisor); } @Override - default Per per(FrequencyUnit divisorUnit) { + public Per per(FrequencyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearAcceleration multiplier) { + public Mult times(LinearAcceleration multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearAcceleration divisor) { + public Per div(LinearAcceleration divisor) { return (Per) Measure.super.div(divisor); } @@ -408,23 +417,23 @@ public interface AngularMomentum extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearAcceleration divisor) { + public Per divide(LinearAcceleration divisor) { return div(divisor); } @Override - default Per per(LinearAccelerationUnit divisorUnit) { + public Per per(LinearAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearMomentum multiplier) { + public Mult times(LinearMomentum multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearMomentum divisor) { + public Per div(LinearMomentum divisor) { return (Per) Measure.super.div(divisor); } @@ -436,23 +445,23 @@ public interface AngularMomentum extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearMomentum divisor) { + public Per divide(LinearMomentum divisor) { return div(divisor); } @Override - default Per per(LinearMomentumUnit divisorUnit) { + public Per per(LinearMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearVelocity multiplier) { + public Mult times(LinearVelocity multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearVelocity divisor) { + public Per div(LinearVelocity divisor) { return (Per) Measure.super.div(divisor); } @@ -464,23 +473,23 @@ public interface AngularMomentum extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearVelocity divisor) { + public Per divide(LinearVelocity divisor) { return div(divisor); } @Override - default Per per(LinearVelocityUnit divisorUnit) { + public Per per(LinearVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Mass multiplier) { + public Mult times(Mass multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Mass divisor) { + public Per div(Mass divisor) { return (Per) Measure.super.div(divisor); } @@ -492,23 +501,23 @@ public interface AngularMomentum extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Mass divisor) { + public Per divide(Mass divisor) { return div(divisor); } @Override - default Per per(MassUnit divisorUnit) { + public Per per(MassUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(MomentOfInertia multiplier) { + public Mult times(MomentOfInertia multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(MomentOfInertia divisor) { + public Per div(MomentOfInertia divisor) { return (Per) Measure.super.div(divisor); } @@ -520,23 +529,23 @@ public interface AngularMomentum extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(MomentOfInertia divisor) { + public Per divide(MomentOfInertia divisor) { return div(divisor); } @Override - default Per per(MomentOfInertiaUnit divisorUnit) { + public Per per(MomentOfInertiaUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult> times(Mult multiplier) { + public Mult> times(Mult multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Mult divisor) { + public Per> div(Mult divisor) { return (Per>) Measure.super.div(divisor); } @@ -548,23 +557,23 @@ public interface AngularMomentum extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Mult divisor) { + public Per> divide(Mult divisor) { return div(divisor); } @Override - default Per> per(MultUnit divisorUnit) { + public Per> per(MultUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult> times(Per multiplier) { + public Mult> times(Per multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Per divisor) { + public Per> div(Per divisor) { return (Per>) Measure.super.div(divisor); } @@ -576,23 +585,23 @@ public interface AngularMomentum extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Per divisor) { + public Per> divide(Per divisor) { return div(divisor); } @Override - default Per> per(PerUnit divisorUnit) { + public Per> per(PerUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult times(Power multiplier) { + public Mult times(Power multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Power divisor) { + public Per div(Power divisor) { return (Per) Measure.super.div(divisor); } @@ -604,23 +613,23 @@ public interface AngularMomentum extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Power divisor) { + public Per divide(Power divisor) { return div(divisor); } @Override - default Per per(PowerUnit divisorUnit) { + public Per per(PowerUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Resistance multiplier) { + public Mult times(Resistance multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Resistance divisor) { + public Per div(Resistance divisor) { return (Per) Measure.super.div(divisor); } @@ -632,23 +641,23 @@ public interface AngularMomentum extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Resistance divisor) { + public Per divide(Resistance divisor) { return div(divisor); } @Override - default Per per(ResistanceUnit divisorUnit) { + public Per per(ResistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Temperature multiplier) { + public Mult times(Temperature multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Temperature divisor) { + public Per div(Temperature divisor) { return (Per) Measure.super.div(divisor); } @@ -660,23 +669,23 @@ public interface AngularMomentum extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Temperature divisor) { + public Per divide(Temperature divisor) { return div(divisor); } @Override - default Per per(TemperatureUnit divisorUnit) { + public Per per(TemperatureUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Time multiplier) { + public Mult times(Time multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Velocity div(Time divisor) { + public Velocity div(Time divisor) { return VelocityUnit.combine(unit(), divisor.unit()).ofBaseUnits(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -688,23 +697,23 @@ public interface AngularMomentum extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Velocity divide(Time divisor) { + public Velocity divide(Time divisor) { return div(divisor); } @Override - default Velocity per(TimeUnit divisorUnit) { + public Velocity per(TimeUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Torque multiplier) { + public Mult times(Torque multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Torque divisor) { + public Per div(Torque divisor) { return (Per) Measure.super.div(divisor); } @@ -716,23 +725,23 @@ public interface AngularMomentum extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Torque divisor) { + public Per divide(Torque divisor) { return div(divisor); } @Override - default Per per(TorqueUnit divisorUnit) { + public Per per(TorqueUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult> times(Velocity multiplier) { + public Mult> times(Velocity multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Velocity divisor) { + public Per> div(Velocity divisor) { return (Per>) Measure.super.div(divisor); } @@ -744,23 +753,23 @@ public interface AngularMomentum extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Velocity divisor) { + public Per> divide(Velocity divisor) { return div(divisor); } @Override - default Per> per(VelocityUnit divisorUnit) { + public Per> per(VelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Voltage multiplier) { + public Mult times(Voltage multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Voltage divisor) { + public Per div(Voltage divisor) { return (Per) Measure.super.div(divisor); } @@ -772,12 +781,12 @@ public interface AngularMomentum extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Voltage divisor) { + public Per divide(Voltage divisor) { return div(divisor); } @Override - default Per per(VoltageUnit divisorUnit) { + public Per per(VoltageUnit divisorUnit) { return div(divisorUnit.one()); } diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/AngularVelocity.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/AngularVelocity.java index 37b4a28d57..050a28edde 100644 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/AngularVelocity.java +++ b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/AngularVelocity.java @@ -10,36 +10,45 @@ import static edu.wpi.first.units.Units.*; import edu.wpi.first.units.*; @SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public interface AngularVelocity extends Measure { - static AngularVelocity ofRelativeUnits(double magnitude, AngularVelocityUnit unit) { - return new ImmutableAngularVelocity(magnitude, unit.toBaseUnits(magnitude), unit); +public record AngularVelocity(double magnitude, double baseUnitMagnitude, AngularVelocityUnit unit) implements Measure { + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link AngularVelocityUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static AngularVelocity ofRelativeUnits(double magnitude, AngularVelocityUnit unit) { + return new AngularVelocity(magnitude, unit.toBaseUnits(magnitude), unit); } - static AngularVelocity ofBaseUnits(double baseUnitMagnitude, AngularVelocityUnit unit) { - return new ImmutableAngularVelocity(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link AngularVelocityUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit's base unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static AngularVelocity ofBaseUnits(double baseUnitMagnitude, AngularVelocityUnit unit) { + return new AngularVelocity(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); } @Override - AngularVelocity copy(); + public AngularVelocityUnit baseUnit() { return (AngularVelocityUnit) unit().getBaseUnit(); } @Override - default MutAngularVelocity mutableCopy() { - return new MutAngularVelocity(magnitude(), baseUnitMagnitude(), unit()); - } - - @Override - AngularVelocityUnit unit(); - - @Override - default AngularVelocityUnit baseUnit() { return (AngularVelocityUnit) unit().getBaseUnit(); } - - @Override - default double in(AngularVelocityUnit unit) { + public double in(AngularVelocityUnit unit) { return unit.fromBaseUnits(baseUnitMagnitude()); } @Override - default AngularVelocity unaryMinus() { + @SuppressWarnings("rawtypes") + public boolean equals(Object object) { + return object instanceof AngularVelocity m && isEquivalent(m); + } + + @Override + public AngularVelocity unaryMinus() { return (AngularVelocity) unit().ofBaseUnits(0 - baseUnitMagnitude()); } @@ -51,27 +60,27 @@ public interface AngularVelocity extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default AngularVelocity negate() { + public AngularVelocity negate() { return (AngularVelocity) unaryMinus(); } @Override - default AngularVelocity plus(Measure other) { + public AngularVelocity plus(Measure other) { return (AngularVelocity) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude()); } @Override - default AngularVelocity minus(Measure other) { + public AngularVelocity minus(Measure other) { return (AngularVelocity) unit().ofBaseUnits(baseUnitMagnitude() - other.baseUnitMagnitude()); } @Override - default AngularVelocity times(double multiplier) { + public AngularVelocity times(double multiplier) { return (AngularVelocity) unit().ofBaseUnits(baseUnitMagnitude() * multiplier); } @Override - default AngularVelocity div(double divisor) { + public AngularVelocity div(double divisor) { return (AngularVelocity) unit().ofBaseUnits(baseUnitMagnitude() / divisor); } @@ -83,18 +92,18 @@ public interface AngularVelocity extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default AngularVelocity divide(double divisor) { + public AngularVelocity divide(double divisor) { return (AngularVelocity) div(divisor); } @Override - default Mult> times(Acceleration multiplier) { + public Mult> times(Acceleration multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Acceleration divisor) { + public Per> div(Acceleration divisor) { return (Per>) Measure.super.div(divisor); } @@ -106,23 +115,23 @@ public interface AngularVelocity extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Acceleration divisor) { + public Per> divide(Acceleration divisor) { return div(divisor); } @Override - default Per> per(AccelerationUnit divisorUnit) { + public Per> per(AccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Angle multiplier) { + public Mult times(Angle multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Angle divisor) { + public Per div(Angle divisor) { return (Per) Measure.super.div(divisor); } @@ -134,23 +143,23 @@ public interface AngularVelocity extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Angle divisor) { + public Per divide(Angle divisor) { return div(divisor); } @Override - default Per per(AngleUnit divisorUnit) { + public Per per(AngleUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularAcceleration multiplier) { + public Mult times(AngularAcceleration multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularAcceleration divisor) { + public Per div(AngularAcceleration divisor) { return (Per) Measure.super.div(divisor); } @@ -162,23 +171,23 @@ public interface AngularVelocity extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularAcceleration divisor) { + public Per divide(AngularAcceleration divisor) { return div(divisor); } @Override - default Per per(AngularAccelerationUnit divisorUnit) { + public Per per(AngularAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularMomentum multiplier) { + public Mult times(AngularMomentum multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularMomentum divisor) { + public Per div(AngularMomentum divisor) { return (Per) Measure.super.div(divisor); } @@ -190,23 +199,23 @@ public interface AngularVelocity extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularMomentum divisor) { + public Per divide(AngularMomentum divisor) { return div(divisor); } @Override - default Per per(AngularMomentumUnit divisorUnit) { + public Per per(AngularMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularVelocity multiplier) { + public Mult times(AngularVelocity multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Dimensionless div(AngularVelocity divisor) { + public Dimensionless div(AngularVelocity divisor) { return Value.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -218,23 +227,23 @@ public interface AngularVelocity extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Dimensionless divide(AngularVelocity divisor) { + public Dimensionless divide(AngularVelocity divisor) { return div(divisor); } @Override - default Dimensionless per(AngularVelocityUnit divisorUnit) { + public Dimensionless per(AngularVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Current multiplier) { + public Mult times(Current multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Current divisor) { + public Per div(Current divisor) { return (Per) Measure.super.div(divisor); } @@ -246,17 +255,17 @@ public interface AngularVelocity extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Current divisor) { + public Per divide(Current divisor) { return div(divisor); } @Override - default Per per(CurrentUnit divisorUnit) { + public Per per(CurrentUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default AngularVelocity div(Dimensionless divisor) { + public AngularVelocity div(Dimensionless divisor) { return (AngularVelocity) RadiansPerSecond.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -268,23 +277,23 @@ public interface AngularVelocity extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default AngularVelocity divide(Dimensionless divisor) { + public AngularVelocity divide(Dimensionless divisor) { return (AngularVelocity) div(divisor); } @Override - default AngularVelocity times(Dimensionless multiplier) { + public AngularVelocity times(Dimensionless multiplier) { return (AngularVelocity) RadiansPerSecond.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Mult times(Distance multiplier) { + public Mult times(Distance multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Distance divisor) { + public Per div(Distance divisor) { return (Per) Measure.super.div(divisor); } @@ -296,23 +305,23 @@ public interface AngularVelocity extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Distance divisor) { + public Per divide(Distance divisor) { return div(divisor); } @Override - default Per per(DistanceUnit divisorUnit) { + public Per per(DistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Energy multiplier) { + public Mult times(Energy multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Energy divisor) { + public Per div(Energy divisor) { return (Per) Measure.super.div(divisor); } @@ -324,23 +333,23 @@ public interface AngularVelocity extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Energy divisor) { + public Per divide(Energy divisor) { return div(divisor); } @Override - default Per per(EnergyUnit divisorUnit) { + public Per per(EnergyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Force multiplier) { + public Mult times(Force multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Force divisor) { + public Per div(Force divisor) { return (Per) Measure.super.div(divisor); } @@ -352,23 +361,23 @@ public interface AngularVelocity extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Force divisor) { + public Per divide(Force divisor) { return div(divisor); } @Override - default Per per(ForceUnit divisorUnit) { + public Per per(ForceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default AngularAcceleration times(Frequency multiplier) { + public AngularAcceleration times(Frequency multiplier) { return RadiansPerSecondPerSecond.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Per div(Frequency divisor) { + public Per div(Frequency divisor) { return (Per) Measure.super.div(divisor); } @@ -380,23 +389,23 @@ public interface AngularVelocity extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Frequency divisor) { + public Per divide(Frequency divisor) { return div(divisor); } @Override - default Per per(FrequencyUnit divisorUnit) { + public Per per(FrequencyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearAcceleration multiplier) { + public Mult times(LinearAcceleration multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearAcceleration divisor) { + public Per div(LinearAcceleration divisor) { return (Per) Measure.super.div(divisor); } @@ -408,23 +417,23 @@ public interface AngularVelocity extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearAcceleration divisor) { + public Per divide(LinearAcceleration divisor) { return div(divisor); } @Override - default Per per(LinearAccelerationUnit divisorUnit) { + public Per per(LinearAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearMomentum multiplier) { + public Mult times(LinearMomentum multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearMomentum divisor) { + public Per div(LinearMomentum divisor) { return (Per) Measure.super.div(divisor); } @@ -436,23 +445,23 @@ public interface AngularVelocity extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearMomentum divisor) { + public Per divide(LinearMomentum divisor) { return div(divisor); } @Override - default Per per(LinearMomentumUnit divisorUnit) { + public Per per(LinearMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearVelocity multiplier) { + public Mult times(LinearVelocity multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearVelocity divisor) { + public Per div(LinearVelocity divisor) { return (Per) Measure.super.div(divisor); } @@ -464,23 +473,23 @@ public interface AngularVelocity extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearVelocity divisor) { + public Per divide(LinearVelocity divisor) { return div(divisor); } @Override - default Per per(LinearVelocityUnit divisorUnit) { + public Per per(LinearVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Mass multiplier) { + public Mult times(Mass multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Mass divisor) { + public Per div(Mass divisor) { return (Per) Measure.super.div(divisor); } @@ -492,23 +501,23 @@ public interface AngularVelocity extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Mass divisor) { + public Per divide(Mass divisor) { return div(divisor); } @Override - default Per per(MassUnit divisorUnit) { + public Per per(MassUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(MomentOfInertia multiplier) { + public Mult times(MomentOfInertia multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(MomentOfInertia divisor) { + public Per div(MomentOfInertia divisor) { return (Per) Measure.super.div(divisor); } @@ -520,23 +529,23 @@ public interface AngularVelocity extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(MomentOfInertia divisor) { + public Per divide(MomentOfInertia divisor) { return div(divisor); } @Override - default Per per(MomentOfInertiaUnit divisorUnit) { + public Per per(MomentOfInertiaUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult> times(Mult multiplier) { + public Mult> times(Mult multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Mult divisor) { + public Per> div(Mult divisor) { return (Per>) Measure.super.div(divisor); } @@ -548,23 +557,23 @@ public interface AngularVelocity extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Mult divisor) { + public Per> divide(Mult divisor) { return div(divisor); } @Override - default Per> per(MultUnit divisorUnit) { + public Per> per(MultUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult> times(Per multiplier) { + public Mult> times(Per multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Per divisor) { + public Per> div(Per divisor) { return (Per>) Measure.super.div(divisor); } @@ -576,23 +585,23 @@ public interface AngularVelocity extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Per divisor) { + public Per> divide(Per divisor) { return div(divisor); } @Override - default Per> per(PerUnit divisorUnit) { + public Per> per(PerUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult times(Power multiplier) { + public Mult times(Power multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Power divisor) { + public Per div(Power divisor) { return (Per) Measure.super.div(divisor); } @@ -604,23 +613,23 @@ public interface AngularVelocity extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Power divisor) { + public Per divide(Power divisor) { return div(divisor); } @Override - default Per per(PowerUnit divisorUnit) { + public Per per(PowerUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Resistance multiplier) { + public Mult times(Resistance multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Resistance divisor) { + public Per div(Resistance divisor) { return (Per) Measure.super.div(divisor); } @@ -632,23 +641,23 @@ public interface AngularVelocity extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Resistance divisor) { + public Per divide(Resistance divisor) { return div(divisor); } @Override - default Per per(ResistanceUnit divisorUnit) { + public Per per(ResistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Temperature multiplier) { + public Mult times(Temperature multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Temperature divisor) { + public Per div(Temperature divisor) { return (Per) Measure.super.div(divisor); } @@ -660,23 +669,23 @@ public interface AngularVelocity extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Temperature divisor) { + public Per divide(Temperature divisor) { return div(divisor); } @Override - default Per per(TemperatureUnit divisorUnit) { + public Per per(TemperatureUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Angle times(Time multiplier) { + public Angle times(Time multiplier) { return Radians.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default AngularAcceleration div(Time divisor) { + public AngularAcceleration div(Time divisor) { return RadiansPerSecondPerSecond.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -688,23 +697,23 @@ public interface AngularVelocity extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default AngularAcceleration divide(Time divisor) { + public AngularAcceleration divide(Time divisor) { return div(divisor); } @Override - default AngularAcceleration per(TimeUnit divisorUnit) { + public AngularAcceleration per(TimeUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Torque multiplier) { + public Mult times(Torque multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Torque divisor) { + public Per div(Torque divisor) { return (Per) Measure.super.div(divisor); } @@ -716,23 +725,23 @@ public interface AngularVelocity extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Torque divisor) { + public Per divide(Torque divisor) { return div(divisor); } @Override - default Per per(TorqueUnit divisorUnit) { + public Per per(TorqueUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult> times(Velocity multiplier) { + public Mult> times(Velocity multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Velocity divisor) { + public Per> div(Velocity divisor) { return (Per>) Measure.super.div(divisor); } @@ -744,23 +753,23 @@ public interface AngularVelocity extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Velocity divisor) { + public Per> divide(Velocity divisor) { return div(divisor); } @Override - default Per> per(VelocityUnit divisorUnit) { + public Per> per(VelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Voltage multiplier) { + public Mult times(Voltage multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Voltage divisor) { + public Per div(Voltage divisor) { return (Per) Measure.super.div(divisor); } @@ -772,13 +781,13 @@ public interface AngularVelocity extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Voltage divisor) { + public Per divide(Voltage divisor) { return div(divisor); } @Override - default Per per(VoltageUnit divisorUnit) { + public Per per(VoltageUnit divisorUnit) { return div(divisorUnit.one()); } -default Frequency asFrequency() { return Hertz.of(baseUnitMagnitude()); } +public Frequency asFrequency() { return Hertz.of(baseUnitMagnitude()); } } diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Current.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Current.java index 734272a138..8b64da7aef 100644 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Current.java +++ b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Current.java @@ -10,36 +10,45 @@ import static edu.wpi.first.units.Units.*; import edu.wpi.first.units.*; @SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public interface Current extends Measure { - static Current ofRelativeUnits(double magnitude, CurrentUnit unit) { - return new ImmutableCurrent(magnitude, unit.toBaseUnits(magnitude), unit); +public record Current(double magnitude, double baseUnitMagnitude, CurrentUnit unit) implements Measure { + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link CurrentUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static Current ofRelativeUnits(double magnitude, CurrentUnit unit) { + return new Current(magnitude, unit.toBaseUnits(magnitude), unit); } - static Current ofBaseUnits(double baseUnitMagnitude, CurrentUnit unit) { - return new ImmutableCurrent(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link CurrentUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit's base unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static Current ofBaseUnits(double baseUnitMagnitude, CurrentUnit unit) { + return new Current(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); } @Override - Current copy(); + public CurrentUnit baseUnit() { return (CurrentUnit) unit().getBaseUnit(); } @Override - default MutCurrent mutableCopy() { - return new MutCurrent(magnitude(), baseUnitMagnitude(), unit()); - } - - @Override - CurrentUnit unit(); - - @Override - default CurrentUnit baseUnit() { return (CurrentUnit) unit().getBaseUnit(); } - - @Override - default double in(CurrentUnit unit) { + public double in(CurrentUnit unit) { return unit.fromBaseUnits(baseUnitMagnitude()); } @Override - default Current unaryMinus() { + @SuppressWarnings("rawtypes") + public boolean equals(Object object) { + return object instanceof Current m && isEquivalent(m); + } + + @Override + public Current unaryMinus() { return (Current) unit().ofBaseUnits(0 - baseUnitMagnitude()); } @@ -51,27 +60,27 @@ public interface Current extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Current negate() { + public Current negate() { return (Current) unaryMinus(); } @Override - default Current plus(Measure other) { + public Current plus(Measure other) { return (Current) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude()); } @Override - default Current minus(Measure other) { + public Current minus(Measure other) { return (Current) unit().ofBaseUnits(baseUnitMagnitude() - other.baseUnitMagnitude()); } @Override - default Current times(double multiplier) { + public Current times(double multiplier) { return (Current) unit().ofBaseUnits(baseUnitMagnitude() * multiplier); } @Override - default Current div(double divisor) { + public Current div(double divisor) { return (Current) unit().ofBaseUnits(baseUnitMagnitude() / divisor); } @@ -83,18 +92,18 @@ public interface Current extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Current divide(double divisor) { + public Current divide(double divisor) { return (Current) div(divisor); } @Override - default Mult> times(Acceleration multiplier) { + public Mult> times(Acceleration multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Acceleration divisor) { + public Per> div(Acceleration divisor) { return (Per>) Measure.super.div(divisor); } @@ -106,23 +115,23 @@ public interface Current extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Acceleration divisor) { + public Per> divide(Acceleration divisor) { return div(divisor); } @Override - default Per> per(AccelerationUnit divisorUnit) { + public Per> per(AccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Angle multiplier) { + public Mult times(Angle multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Angle divisor) { + public Per div(Angle divisor) { return (Per) Measure.super.div(divisor); } @@ -134,23 +143,23 @@ public interface Current extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Angle divisor) { + public Per divide(Angle divisor) { return div(divisor); } @Override - default Per per(AngleUnit divisorUnit) { + public Per per(AngleUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularAcceleration multiplier) { + public Mult times(AngularAcceleration multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularAcceleration divisor) { + public Per div(AngularAcceleration divisor) { return (Per) Measure.super.div(divisor); } @@ -162,23 +171,23 @@ public interface Current extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularAcceleration divisor) { + public Per divide(AngularAcceleration divisor) { return div(divisor); } @Override - default Per per(AngularAccelerationUnit divisorUnit) { + public Per per(AngularAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularMomentum multiplier) { + public Mult times(AngularMomentum multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularMomentum divisor) { + public Per div(AngularMomentum divisor) { return (Per) Measure.super.div(divisor); } @@ -190,23 +199,23 @@ public interface Current extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularMomentum divisor) { + public Per divide(AngularMomentum divisor) { return div(divisor); } @Override - default Per per(AngularMomentumUnit divisorUnit) { + public Per per(AngularMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularVelocity multiplier) { + public Mult times(AngularVelocity multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularVelocity divisor) { + public Per div(AngularVelocity divisor) { return (Per) Measure.super.div(divisor); } @@ -218,23 +227,23 @@ public interface Current extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularVelocity divisor) { + public Per divide(AngularVelocity divisor) { return div(divisor); } @Override - default Per per(AngularVelocityUnit divisorUnit) { + public Per per(AngularVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Current multiplier) { + public Mult times(Current multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Dimensionless div(Current divisor) { + public Dimensionless div(Current divisor) { return Value.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -246,17 +255,17 @@ public interface Current extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Dimensionless divide(Current divisor) { + public Dimensionless divide(Current divisor) { return div(divisor); } @Override - default Dimensionless per(CurrentUnit divisorUnit) { + public Dimensionless per(CurrentUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Current div(Dimensionless divisor) { + public Current div(Dimensionless divisor) { return (Current) Amps.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -268,23 +277,23 @@ public interface Current extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Current divide(Dimensionless divisor) { + public Current divide(Dimensionless divisor) { return (Current) div(divisor); } @Override - default Current times(Dimensionless multiplier) { + public Current times(Dimensionless multiplier) { return (Current) Amps.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Mult times(Distance multiplier) { + public Mult times(Distance multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Distance divisor) { + public Per div(Distance divisor) { return (Per) Measure.super.div(divisor); } @@ -296,23 +305,23 @@ public interface Current extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Distance divisor) { + public Per divide(Distance divisor) { return div(divisor); } @Override - default Per per(DistanceUnit divisorUnit) { + public Per per(DistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Energy multiplier) { + public Mult times(Energy multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Energy divisor) { + public Per div(Energy divisor) { return (Per) Measure.super.div(divisor); } @@ -324,23 +333,23 @@ public interface Current extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Energy divisor) { + public Per divide(Energy divisor) { return div(divisor); } @Override - default Per per(EnergyUnit divisorUnit) { + public Per per(EnergyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Force multiplier) { + public Mult times(Force multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Force divisor) { + public Per div(Force divisor) { return (Per) Measure.super.div(divisor); } @@ -352,23 +361,23 @@ public interface Current extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Force divisor) { + public Per divide(Force divisor) { return div(divisor); } @Override - default Per per(ForceUnit divisorUnit) { + public Per per(ForceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Frequency multiplier) { + public Mult times(Frequency multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Frequency divisor) { + public Per div(Frequency divisor) { return (Per) Measure.super.div(divisor); } @@ -380,23 +389,23 @@ public interface Current extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Frequency divisor) { + public Per divide(Frequency divisor) { return div(divisor); } @Override - default Per per(FrequencyUnit divisorUnit) { + public Per per(FrequencyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearAcceleration multiplier) { + public Mult times(LinearAcceleration multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearAcceleration divisor) { + public Per div(LinearAcceleration divisor) { return (Per) Measure.super.div(divisor); } @@ -408,23 +417,23 @@ public interface Current extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearAcceleration divisor) { + public Per divide(LinearAcceleration divisor) { return div(divisor); } @Override - default Per per(LinearAccelerationUnit divisorUnit) { + public Per per(LinearAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearMomentum multiplier) { + public Mult times(LinearMomentum multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearMomentum divisor) { + public Per div(LinearMomentum divisor) { return (Per) Measure.super.div(divisor); } @@ -436,23 +445,23 @@ public interface Current extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearMomentum divisor) { + public Per divide(LinearMomentum divisor) { return div(divisor); } @Override - default Per per(LinearMomentumUnit divisorUnit) { + public Per per(LinearMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearVelocity multiplier) { + public Mult times(LinearVelocity multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearVelocity divisor) { + public Per div(LinearVelocity divisor) { return (Per) Measure.super.div(divisor); } @@ -464,23 +473,23 @@ public interface Current extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearVelocity divisor) { + public Per divide(LinearVelocity divisor) { return div(divisor); } @Override - default Per per(LinearVelocityUnit divisorUnit) { + public Per per(LinearVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Mass multiplier) { + public Mult times(Mass multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Mass divisor) { + public Per div(Mass divisor) { return (Per) Measure.super.div(divisor); } @@ -492,23 +501,23 @@ public interface Current extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Mass divisor) { + public Per divide(Mass divisor) { return div(divisor); } @Override - default Per per(MassUnit divisorUnit) { + public Per per(MassUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(MomentOfInertia multiplier) { + public Mult times(MomentOfInertia multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(MomentOfInertia divisor) { + public Per div(MomentOfInertia divisor) { return (Per) Measure.super.div(divisor); } @@ -520,23 +529,23 @@ public interface Current extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(MomentOfInertia divisor) { + public Per divide(MomentOfInertia divisor) { return div(divisor); } @Override - default Per per(MomentOfInertiaUnit divisorUnit) { + public Per per(MomentOfInertiaUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult> times(Mult multiplier) { + public Mult> times(Mult multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Mult divisor) { + public Per> div(Mult divisor) { return (Per>) Measure.super.div(divisor); } @@ -548,23 +557,23 @@ public interface Current extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Mult divisor) { + public Per> divide(Mult divisor) { return div(divisor); } @Override - default Per> per(MultUnit divisorUnit) { + public Per> per(MultUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult> times(Per multiplier) { + public Mult> times(Per multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Per divisor) { + public Per> div(Per divisor) { return (Per>) Measure.super.div(divisor); } @@ -576,23 +585,23 @@ public interface Current extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Per divisor) { + public Per> divide(Per divisor) { return div(divisor); } @Override - default Per> per(PerUnit divisorUnit) { + public Per> per(PerUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult times(Power multiplier) { + public Mult times(Power multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Power divisor) { + public Per div(Power divisor) { return (Per) Measure.super.div(divisor); } @@ -604,23 +613,23 @@ public interface Current extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Power divisor) { + public Per divide(Power divisor) { return div(divisor); } @Override - default Per per(PowerUnit divisorUnit) { + public Per per(PowerUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Voltage times(Resistance multiplier) { + public Voltage times(Resistance multiplier) { return Volts.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Per div(Resistance divisor) { + public Per div(Resistance divisor) { return (Per) Measure.super.div(divisor); } @@ -632,23 +641,23 @@ public interface Current extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Resistance divisor) { + public Per divide(Resistance divisor) { return div(divisor); } @Override - default Per per(ResistanceUnit divisorUnit) { + public Per per(ResistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Temperature multiplier) { + public Mult times(Temperature multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Temperature divisor) { + public Per div(Temperature divisor) { return (Per) Measure.super.div(divisor); } @@ -660,23 +669,23 @@ public interface Current extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Temperature divisor) { + public Per divide(Temperature divisor) { return div(divisor); } @Override - default Per per(TemperatureUnit divisorUnit) { + public Per per(TemperatureUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Time multiplier) { + public Mult times(Time multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Velocity div(Time divisor) { + public Velocity div(Time divisor) { return VelocityUnit.combine(unit(), divisor.unit()).ofBaseUnits(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -688,23 +697,23 @@ public interface Current extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Velocity divide(Time divisor) { + public Velocity divide(Time divisor) { return div(divisor); } @Override - default Velocity per(TimeUnit divisorUnit) { + public Velocity per(TimeUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Torque multiplier) { + public Mult times(Torque multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Torque divisor) { + public Per div(Torque divisor) { return (Per) Measure.super.div(divisor); } @@ -716,23 +725,23 @@ public interface Current extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Torque divisor) { + public Per divide(Torque divisor) { return div(divisor); } @Override - default Per per(TorqueUnit divisorUnit) { + public Per per(TorqueUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult> times(Velocity multiplier) { + public Mult> times(Velocity multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Velocity divisor) { + public Per> div(Velocity divisor) { return (Per>) Measure.super.div(divisor); } @@ -744,23 +753,23 @@ public interface Current extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Velocity divisor) { + public Per> divide(Velocity divisor) { return div(divisor); } @Override - default Per> per(VelocityUnit divisorUnit) { + public Per> per(VelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Power times(Voltage multiplier) { + public Power times(Voltage multiplier) { return Watts.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Per div(Voltage divisor) { + public Per div(Voltage divisor) { return (Per) Measure.super.div(divisor); } @@ -772,12 +781,12 @@ public interface Current extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Voltage divisor) { + public Per divide(Voltage divisor) { return div(divisor); } @Override - default Per per(VoltageUnit divisorUnit) { + public Per per(VoltageUnit divisorUnit) { return div(divisorUnit.one()); } diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Dimensionless.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Dimensionless.java index 4447c270ee..7cfe940dd5 100644 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Dimensionless.java +++ b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Dimensionless.java @@ -10,36 +10,45 @@ import static edu.wpi.first.units.Units.*; import edu.wpi.first.units.*; @SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public interface Dimensionless extends Measure { - static Dimensionless ofRelativeUnits(double magnitude, DimensionlessUnit unit) { - return new ImmutableDimensionless(magnitude, unit.toBaseUnits(magnitude), unit); +public record Dimensionless(double magnitude, double baseUnitMagnitude, DimensionlessUnit unit) implements Measure { + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link DimensionlessUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static Dimensionless ofRelativeUnits(double magnitude, DimensionlessUnit unit) { + return new Dimensionless(magnitude, unit.toBaseUnits(magnitude), unit); } - static Dimensionless ofBaseUnits(double baseUnitMagnitude, DimensionlessUnit unit) { - return new ImmutableDimensionless(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link DimensionlessUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit's base unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static Dimensionless ofBaseUnits(double baseUnitMagnitude, DimensionlessUnit unit) { + return new Dimensionless(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); } @Override - Dimensionless copy(); + public DimensionlessUnit baseUnit() { return (DimensionlessUnit) unit().getBaseUnit(); } @Override - default MutDimensionless mutableCopy() { - return new MutDimensionless(magnitude(), baseUnitMagnitude(), unit()); - } - - @Override - DimensionlessUnit unit(); - - @Override - default DimensionlessUnit baseUnit() { return (DimensionlessUnit) unit().getBaseUnit(); } - - @Override - default double in(DimensionlessUnit unit) { + public double in(DimensionlessUnit unit) { return unit.fromBaseUnits(baseUnitMagnitude()); } @Override - default Dimensionless unaryMinus() { + @SuppressWarnings("rawtypes") + public boolean equals(Object object) { + return object instanceof Dimensionless m && isEquivalent(m); + } + + @Override + public Dimensionless unaryMinus() { return (Dimensionless) unit().ofBaseUnits(0 - baseUnitMagnitude()); } @@ -51,27 +60,27 @@ public interface Dimensionless extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Dimensionless negate() { + public Dimensionless negate() { return (Dimensionless) unaryMinus(); } @Override - default Dimensionless plus(Measure other) { + public Dimensionless plus(Measure other) { return (Dimensionless) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude()); } @Override - default Dimensionless minus(Measure other) { + public Dimensionless minus(Measure other) { return (Dimensionless) unit().ofBaseUnits(baseUnitMagnitude() - other.baseUnitMagnitude()); } @Override - default Dimensionless times(double multiplier) { + public Dimensionless times(double multiplier) { return (Dimensionless) unit().ofBaseUnits(baseUnitMagnitude() * multiplier); } @Override - default Dimensionless div(double divisor) { + public Dimensionless div(double divisor) { return (Dimensionless) unit().ofBaseUnits(baseUnitMagnitude() / divisor); } @@ -83,18 +92,18 @@ public interface Dimensionless extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Dimensionless divide(double divisor) { + public Dimensionless divide(double divisor) { return (Dimensionless) div(divisor); } @Override - default Mult> times(Acceleration multiplier) { + public Mult> times(Acceleration multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Acceleration divisor) { + public Per> div(Acceleration divisor) { return (Per>) Measure.super.div(divisor); } @@ -106,23 +115,23 @@ public interface Dimensionless extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Acceleration divisor) { + public Per> divide(Acceleration divisor) { return div(divisor); } @Override - default Per> per(AccelerationUnit divisorUnit) { + public Per> per(AccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Angle times(Angle multiplier) { + public Angle times(Angle multiplier) { return Radians.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Per div(Angle divisor) { + public Per div(Angle divisor) { return (Per) Measure.super.div(divisor); } @@ -134,23 +143,23 @@ public interface Dimensionless extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Angle divisor) { + public Per divide(Angle divisor) { return div(divisor); } @Override - default Per per(AngleUnit divisorUnit) { + public Per per(AngleUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default AngularAcceleration times(AngularAcceleration multiplier) { + public AngularAcceleration times(AngularAcceleration multiplier) { return RadiansPerSecondPerSecond.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Per div(AngularAcceleration divisor) { + public Per div(AngularAcceleration divisor) { return (Per) Measure.super.div(divisor); } @@ -162,23 +171,23 @@ public interface Dimensionless extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularAcceleration divisor) { + public Per divide(AngularAcceleration divisor) { return div(divisor); } @Override - default Per per(AngularAccelerationUnit divisorUnit) { + public Per per(AngularAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default AngularMomentum times(AngularMomentum multiplier) { + public AngularMomentum times(AngularMomentum multiplier) { return KilogramMetersSquaredPerSecond.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Per div(AngularMomentum divisor) { + public Per div(AngularMomentum divisor) { return (Per) Measure.super.div(divisor); } @@ -190,23 +199,23 @@ public interface Dimensionless extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularMomentum divisor) { + public Per divide(AngularMomentum divisor) { return div(divisor); } @Override - default Per per(AngularMomentumUnit divisorUnit) { + public Per per(AngularMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default AngularVelocity times(AngularVelocity multiplier) { + public AngularVelocity times(AngularVelocity multiplier) { return RadiansPerSecond.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Per div(AngularVelocity divisor) { + public Per div(AngularVelocity divisor) { return (Per) Measure.super.div(divisor); } @@ -218,23 +227,23 @@ public interface Dimensionless extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularVelocity divisor) { + public Per divide(AngularVelocity divisor) { return div(divisor); } @Override - default Per per(AngularVelocityUnit divisorUnit) { + public Per per(AngularVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Current times(Current multiplier) { + public Current times(Current multiplier) { return Amps.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Per div(Current divisor) { + public Per div(Current divisor) { return (Per) Measure.super.div(divisor); } @@ -246,17 +255,17 @@ public interface Dimensionless extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Current divisor) { + public Per divide(Current divisor) { return div(divisor); } @Override - default Per per(CurrentUnit divisorUnit) { + public Per per(CurrentUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Dimensionless div(Dimensionless divisor) { + public Dimensionless div(Dimensionless divisor) { return (Dimensionless) Value.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -268,23 +277,23 @@ public interface Dimensionless extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Dimensionless divide(Dimensionless divisor) { + public Dimensionless divide(Dimensionless divisor) { return (Dimensionless) div(divisor); } @Override - default Dimensionless times(Dimensionless multiplier) { + public Dimensionless times(Dimensionless multiplier) { return (Dimensionless) Value.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Distance times(Distance multiplier) { + public Distance times(Distance multiplier) { return Meters.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Per div(Distance divisor) { + public Per div(Distance divisor) { return (Per) Measure.super.div(divisor); } @@ -296,23 +305,23 @@ public interface Dimensionless extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Distance divisor) { + public Per divide(Distance divisor) { return div(divisor); } @Override - default Per per(DistanceUnit divisorUnit) { + public Per per(DistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Energy times(Energy multiplier) { + public Energy times(Energy multiplier) { return Joules.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Per div(Energy divisor) { + public Per div(Energy divisor) { return (Per) Measure.super.div(divisor); } @@ -324,23 +333,23 @@ public interface Dimensionless extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Energy divisor) { + public Per divide(Energy divisor) { return div(divisor); } @Override - default Per per(EnergyUnit divisorUnit) { + public Per per(EnergyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Force times(Force multiplier) { + public Force times(Force multiplier) { return Newtons.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Per div(Force divisor) { + public Per div(Force divisor) { return (Per) Measure.super.div(divisor); } @@ -352,23 +361,23 @@ public interface Dimensionless extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Force divisor) { + public Per divide(Force divisor) { return div(divisor); } @Override - default Per per(ForceUnit divisorUnit) { + public Per per(ForceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Frequency times(Frequency multiplier) { + public Frequency times(Frequency multiplier) { return Hertz.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Per div(Frequency divisor) { + public Per div(Frequency divisor) { return (Per) Measure.super.div(divisor); } @@ -380,23 +389,23 @@ public interface Dimensionless extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Frequency divisor) { + public Per divide(Frequency divisor) { return div(divisor); } @Override - default Per per(FrequencyUnit divisorUnit) { + public Per per(FrequencyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default LinearAcceleration times(LinearAcceleration multiplier) { + public LinearAcceleration times(LinearAcceleration multiplier) { return MetersPerSecondPerSecond.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Per div(LinearAcceleration divisor) { + public Per div(LinearAcceleration divisor) { return (Per) Measure.super.div(divisor); } @@ -408,23 +417,23 @@ public interface Dimensionless extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearAcceleration divisor) { + public Per divide(LinearAcceleration divisor) { return div(divisor); } @Override - default Per per(LinearAccelerationUnit divisorUnit) { + public Per per(LinearAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default LinearMomentum times(LinearMomentum multiplier) { + public LinearMomentum times(LinearMomentum multiplier) { return KilogramMetersPerSecond.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Per div(LinearMomentum divisor) { + public Per div(LinearMomentum divisor) { return (Per) Measure.super.div(divisor); } @@ -436,23 +445,23 @@ public interface Dimensionless extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearMomentum divisor) { + public Per divide(LinearMomentum divisor) { return div(divisor); } @Override - default Per per(LinearMomentumUnit divisorUnit) { + public Per per(LinearMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default LinearVelocity times(LinearVelocity multiplier) { + public LinearVelocity times(LinearVelocity multiplier) { return MetersPerSecond.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Per div(LinearVelocity divisor) { + public Per div(LinearVelocity divisor) { return (Per) Measure.super.div(divisor); } @@ -464,23 +473,23 @@ public interface Dimensionless extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearVelocity divisor) { + public Per divide(LinearVelocity divisor) { return div(divisor); } @Override - default Per per(LinearVelocityUnit divisorUnit) { + public Per per(LinearVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mass times(Mass multiplier) { + public Mass times(Mass multiplier) { return Kilograms.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Per div(Mass divisor) { + public Per div(Mass divisor) { return (Per) Measure.super.div(divisor); } @@ -492,23 +501,23 @@ public interface Dimensionless extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Mass divisor) { + public Per divide(Mass divisor) { return div(divisor); } @Override - default Per per(MassUnit divisorUnit) { + public Per per(MassUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default MomentOfInertia times(MomentOfInertia multiplier) { + public MomentOfInertia times(MomentOfInertia multiplier) { return KilogramSquareMeters.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Per div(MomentOfInertia divisor) { + public Per div(MomentOfInertia divisor) { return (Per) Measure.super.div(divisor); } @@ -520,23 +529,23 @@ public interface Dimensionless extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(MomentOfInertia divisor) { + public Per divide(MomentOfInertia divisor) { return div(divisor); } @Override - default Per per(MomentOfInertiaUnit divisorUnit) { + public Per per(MomentOfInertiaUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult> times(Mult multiplier) { + public Mult> times(Mult multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Mult divisor) { + public Per> div(Mult divisor) { return (Per>) Measure.super.div(divisor); } @@ -548,23 +557,23 @@ public interface Dimensionless extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Mult divisor) { + public Per> divide(Mult divisor) { return div(divisor); } @Override - default Per> per(MultUnit divisorUnit) { + public Per> per(MultUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult> times(Per multiplier) { + public Mult> times(Per multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Per divisor) { + public Per> div(Per divisor) { return (Per>) Measure.super.div(divisor); } @@ -576,23 +585,23 @@ public interface Dimensionless extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Per divisor) { + public Per> divide(Per divisor) { return div(divisor); } @Override - default Per> per(PerUnit divisorUnit) { + public Per> per(PerUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Power times(Power multiplier) { + public Power times(Power multiplier) { return Watts.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Per div(Power divisor) { + public Per div(Power divisor) { return (Per) Measure.super.div(divisor); } @@ -604,23 +613,23 @@ public interface Dimensionless extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Power divisor) { + public Per divide(Power divisor) { return div(divisor); } @Override - default Per per(PowerUnit divisorUnit) { + public Per per(PowerUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Resistance times(Resistance multiplier) { + public Resistance times(Resistance multiplier) { return Ohms.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Per div(Resistance divisor) { + public Per div(Resistance divisor) { return (Per) Measure.super.div(divisor); } @@ -632,23 +641,23 @@ public interface Dimensionless extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Resistance divisor) { + public Per divide(Resistance divisor) { return div(divisor); } @Override - default Per per(ResistanceUnit divisorUnit) { + public Per per(ResistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Temperature times(Temperature multiplier) { + public Temperature times(Temperature multiplier) { return Kelvin.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Per div(Temperature divisor) { + public Per div(Temperature divisor) { return (Per) Measure.super.div(divisor); } @@ -660,23 +669,23 @@ public interface Dimensionless extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Temperature divisor) { + public Per divide(Temperature divisor) { return div(divisor); } @Override - default Per per(TemperatureUnit divisorUnit) { + public Per per(TemperatureUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Time times(Time multiplier) { + public Time times(Time multiplier) { return Seconds.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Frequency div(Time divisor) { + public Frequency div(Time divisor) { return Hertz.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -688,23 +697,23 @@ public interface Dimensionless extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Frequency divide(Time divisor) { + public Frequency divide(Time divisor) { return div(divisor); } @Override - default Frequency per(TimeUnit divisorUnit) { + public Frequency per(TimeUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Torque times(Torque multiplier) { + public Torque times(Torque multiplier) { return NewtonMeters.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Per div(Torque divisor) { + public Per div(Torque divisor) { return (Per) Measure.super.div(divisor); } @@ -716,23 +725,23 @@ public interface Dimensionless extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Torque divisor) { + public Per divide(Torque divisor) { return div(divisor); } @Override - default Per per(TorqueUnit divisorUnit) { + public Per per(TorqueUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult> times(Velocity multiplier) { + public Mult> times(Velocity multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Velocity divisor) { + public Per> div(Velocity divisor) { return (Per>) Measure.super.div(divisor); } @@ -744,23 +753,23 @@ public interface Dimensionless extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Velocity divisor) { + public Per> divide(Velocity divisor) { return div(divisor); } @Override - default Per> per(VelocityUnit divisorUnit) { + public Per> per(VelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Voltage times(Voltage multiplier) { + public Voltage times(Voltage multiplier) { return Volts.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Per div(Voltage divisor) { + public Per div(Voltage divisor) { return (Per) Measure.super.div(divisor); } @@ -772,12 +781,12 @@ public interface Dimensionless extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Voltage divisor) { + public Per divide(Voltage divisor) { return div(divisor); } @Override - default Per per(VoltageUnit divisorUnit) { + public Per per(VoltageUnit divisorUnit) { return div(divisorUnit.one()); } diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Distance.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Distance.java index e0f53a620e..3b044a463d 100644 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Distance.java +++ b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Distance.java @@ -10,36 +10,45 @@ import static edu.wpi.first.units.Units.*; import edu.wpi.first.units.*; @SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public interface Distance extends Measure { - static Distance ofRelativeUnits(double magnitude, DistanceUnit unit) { - return new ImmutableDistance(magnitude, unit.toBaseUnits(magnitude), unit); +public record Distance(double magnitude, double baseUnitMagnitude, DistanceUnit unit) implements Measure { + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link DistanceUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static Distance ofRelativeUnits(double magnitude, DistanceUnit unit) { + return new Distance(magnitude, unit.toBaseUnits(magnitude), unit); } - static Distance ofBaseUnits(double baseUnitMagnitude, DistanceUnit unit) { - return new ImmutableDistance(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link DistanceUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit's base unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static Distance ofBaseUnits(double baseUnitMagnitude, DistanceUnit unit) { + return new Distance(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); } @Override - Distance copy(); + public DistanceUnit baseUnit() { return (DistanceUnit) unit().getBaseUnit(); } @Override - default MutDistance mutableCopy() { - return new MutDistance(magnitude(), baseUnitMagnitude(), unit()); - } - - @Override - DistanceUnit unit(); - - @Override - default DistanceUnit baseUnit() { return (DistanceUnit) unit().getBaseUnit(); } - - @Override - default double in(DistanceUnit unit) { + public double in(DistanceUnit unit) { return unit.fromBaseUnits(baseUnitMagnitude()); } @Override - default Distance unaryMinus() { + @SuppressWarnings("rawtypes") + public boolean equals(Object object) { + return object instanceof Distance m && isEquivalent(m); + } + + @Override + public Distance unaryMinus() { return (Distance) unit().ofBaseUnits(0 - baseUnitMagnitude()); } @@ -51,27 +60,27 @@ public interface Distance extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Distance negate() { + public Distance negate() { return (Distance) unaryMinus(); } @Override - default Distance plus(Measure other) { + public Distance plus(Measure other) { return (Distance) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude()); } @Override - default Distance minus(Measure other) { + public Distance minus(Measure other) { return (Distance) unit().ofBaseUnits(baseUnitMagnitude() - other.baseUnitMagnitude()); } @Override - default Distance times(double multiplier) { + public Distance times(double multiplier) { return (Distance) unit().ofBaseUnits(baseUnitMagnitude() * multiplier); } @Override - default Distance div(double divisor) { + public Distance div(double divisor) { return (Distance) unit().ofBaseUnits(baseUnitMagnitude() / divisor); } @@ -83,18 +92,18 @@ public interface Distance extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Distance divide(double divisor) { + public Distance divide(double divisor) { return (Distance) div(divisor); } @Override - default Mult> times(Acceleration multiplier) { + public Mult> times(Acceleration multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Acceleration divisor) { + public Per> div(Acceleration divisor) { return (Per>) Measure.super.div(divisor); } @@ -106,23 +115,23 @@ public interface Distance extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Acceleration divisor) { + public Per> divide(Acceleration divisor) { return div(divisor); } @Override - default Per> per(AccelerationUnit divisorUnit) { + public Per> per(AccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Angle multiplier) { + public Mult times(Angle multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Angle divisor) { + public Per div(Angle divisor) { return (Per) Measure.super.div(divisor); } @@ -134,23 +143,23 @@ public interface Distance extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Angle divisor) { + public Per divide(Angle divisor) { return div(divisor); } @Override - default Per per(AngleUnit divisorUnit) { + public Per per(AngleUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularAcceleration multiplier) { + public Mult times(AngularAcceleration multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularAcceleration divisor) { + public Per div(AngularAcceleration divisor) { return (Per) Measure.super.div(divisor); } @@ -162,23 +171,23 @@ public interface Distance extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularAcceleration divisor) { + public Per divide(AngularAcceleration divisor) { return div(divisor); } @Override - default Per per(AngularAccelerationUnit divisorUnit) { + public Per per(AngularAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularMomentum multiplier) { + public Mult times(AngularMomentum multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularMomentum divisor) { + public Per div(AngularMomentum divisor) { return (Per) Measure.super.div(divisor); } @@ -190,23 +199,23 @@ public interface Distance extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularMomentum divisor) { + public Per divide(AngularMomentum divisor) { return div(divisor); } @Override - default Per per(AngularMomentumUnit divisorUnit) { + public Per per(AngularMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularVelocity multiplier) { + public Mult times(AngularVelocity multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularVelocity divisor) { + public Per div(AngularVelocity divisor) { return (Per) Measure.super.div(divisor); } @@ -218,23 +227,23 @@ public interface Distance extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularVelocity divisor) { + public Per divide(AngularVelocity divisor) { return div(divisor); } @Override - default Per per(AngularVelocityUnit divisorUnit) { + public Per per(AngularVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Current multiplier) { + public Mult times(Current multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Current divisor) { + public Per div(Current divisor) { return (Per) Measure.super.div(divisor); } @@ -246,17 +255,17 @@ public interface Distance extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Current divisor) { + public Per divide(Current divisor) { return div(divisor); } @Override - default Per per(CurrentUnit divisorUnit) { + public Per per(CurrentUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Distance div(Dimensionless divisor) { + public Distance div(Dimensionless divisor) { return (Distance) Meters.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -268,23 +277,23 @@ public interface Distance extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Distance divide(Dimensionless divisor) { + public Distance divide(Dimensionless divisor) { return (Distance) div(divisor); } @Override - default Distance times(Dimensionless multiplier) { + public Distance times(Dimensionless multiplier) { return (Distance) Meters.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Mult times(Distance multiplier) { + public Mult times(Distance multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Dimensionless div(Distance divisor) { + public Dimensionless div(Distance divisor) { return Value.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -296,23 +305,23 @@ public interface Distance extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Dimensionless divide(Distance divisor) { + public Dimensionless divide(Distance divisor) { return div(divisor); } @Override - default Dimensionless per(DistanceUnit divisorUnit) { + public Dimensionless per(DistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Energy multiplier) { + public Mult times(Energy multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Energy divisor) { + public Per div(Energy divisor) { return (Per) Measure.super.div(divisor); } @@ -324,23 +333,23 @@ public interface Distance extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Energy divisor) { + public Per divide(Energy divisor) { return div(divisor); } @Override - default Per per(EnergyUnit divisorUnit) { + public Per per(EnergyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Torque times(Force multiplier) { + public Torque times(Force multiplier) { return NewtonMeters.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Per div(Force divisor) { + public Per div(Force divisor) { return (Per) Measure.super.div(divisor); } @@ -352,23 +361,23 @@ public interface Distance extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Force divisor) { + public Per divide(Force divisor) { return div(divisor); } @Override - default Per per(ForceUnit divisorUnit) { + public Per per(ForceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default LinearVelocity times(Frequency multiplier) { + public LinearVelocity times(Frequency multiplier) { return MetersPerSecond.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Per div(Frequency divisor) { + public Per div(Frequency divisor) { return (Per) Measure.super.div(divisor); } @@ -380,23 +389,23 @@ public interface Distance extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Frequency divisor) { + public Per divide(Frequency divisor) { return div(divisor); } @Override - default Per per(FrequencyUnit divisorUnit) { + public Per per(FrequencyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearAcceleration multiplier) { + public Mult times(LinearAcceleration multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearAcceleration divisor) { + public Per div(LinearAcceleration divisor) { return (Per) Measure.super.div(divisor); } @@ -408,23 +417,23 @@ public interface Distance extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearAcceleration divisor) { + public Per divide(LinearAcceleration divisor) { return div(divisor); } @Override - default Per per(LinearAccelerationUnit divisorUnit) { + public Per per(LinearAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearMomentum multiplier) { + public Mult times(LinearMomentum multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearMomentum divisor) { + public Per div(LinearMomentum divisor) { return (Per) Measure.super.div(divisor); } @@ -436,23 +445,23 @@ public interface Distance extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearMomentum divisor) { + public Per divide(LinearMomentum divisor) { return div(divisor); } @Override - default Per per(LinearMomentumUnit divisorUnit) { + public Per per(LinearMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearVelocity multiplier) { + public Mult times(LinearVelocity multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Time div(LinearVelocity divisor) { + public Time div(LinearVelocity divisor) { return Seconds.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -464,23 +473,23 @@ public interface Distance extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Time divide(LinearVelocity divisor) { + public Time divide(LinearVelocity divisor) { return div(divisor); } @Override - default Time per(LinearVelocityUnit divisorUnit) { + public Time per(LinearVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Mass multiplier) { + public Mult times(Mass multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Mass divisor) { + public Per div(Mass divisor) { return (Per) Measure.super.div(divisor); } @@ -492,23 +501,23 @@ public interface Distance extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Mass divisor) { + public Per divide(Mass divisor) { return div(divisor); } @Override - default Per per(MassUnit divisorUnit) { + public Per per(MassUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(MomentOfInertia multiplier) { + public Mult times(MomentOfInertia multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(MomentOfInertia divisor) { + public Per div(MomentOfInertia divisor) { return (Per) Measure.super.div(divisor); } @@ -520,23 +529,23 @@ public interface Distance extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(MomentOfInertia divisor) { + public Per divide(MomentOfInertia divisor) { return div(divisor); } @Override - default Per per(MomentOfInertiaUnit divisorUnit) { + public Per per(MomentOfInertiaUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult> times(Mult multiplier) { + public Mult> times(Mult multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Mult divisor) { + public Per> div(Mult divisor) { return (Per>) Measure.super.div(divisor); } @@ -548,23 +557,23 @@ public interface Distance extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Mult divisor) { + public Per> divide(Mult divisor) { return div(divisor); } @Override - default Per> per(MultUnit divisorUnit) { + public Per> per(MultUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult> times(Per multiplier) { + public Mult> times(Per multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Per divisor) { + public Per> div(Per divisor) { return (Per>) Measure.super.div(divisor); } @@ -576,23 +585,23 @@ public interface Distance extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Per divisor) { + public Per> divide(Per divisor) { return div(divisor); } @Override - default Per> per(PerUnit divisorUnit) { + public Per> per(PerUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult times(Power multiplier) { + public Mult times(Power multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Power divisor) { + public Per div(Power divisor) { return (Per) Measure.super.div(divisor); } @@ -604,23 +613,23 @@ public interface Distance extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Power divisor) { + public Per divide(Power divisor) { return div(divisor); } @Override - default Per per(PowerUnit divisorUnit) { + public Per per(PowerUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Resistance multiplier) { + public Mult times(Resistance multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Resistance divisor) { + public Per div(Resistance divisor) { return (Per) Measure.super.div(divisor); } @@ -632,23 +641,23 @@ public interface Distance extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Resistance divisor) { + public Per divide(Resistance divisor) { return div(divisor); } @Override - default Per per(ResistanceUnit divisorUnit) { + public Per per(ResistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Temperature multiplier) { + public Mult times(Temperature multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Temperature divisor) { + public Per div(Temperature divisor) { return (Per) Measure.super.div(divisor); } @@ -660,23 +669,23 @@ public interface Distance extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Temperature divisor) { + public Per divide(Temperature divisor) { return div(divisor); } @Override - default Per per(TemperatureUnit divisorUnit) { + public Per per(TemperatureUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Time multiplier) { + public Mult times(Time multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default LinearVelocity div(Time divisor) { + public LinearVelocity div(Time divisor) { return MetersPerSecond.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -688,23 +697,23 @@ public interface Distance extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default LinearVelocity divide(Time divisor) { + public LinearVelocity divide(Time divisor) { return div(divisor); } @Override - default LinearVelocity per(TimeUnit divisorUnit) { + public LinearVelocity per(TimeUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Torque multiplier) { + public Mult times(Torque multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Torque divisor) { + public Per div(Torque divisor) { return (Per) Measure.super.div(divisor); } @@ -716,23 +725,23 @@ public interface Distance extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Torque divisor) { + public Per divide(Torque divisor) { return div(divisor); } @Override - default Per per(TorqueUnit divisorUnit) { + public Per per(TorqueUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult> times(Velocity multiplier) { + public Mult> times(Velocity multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Velocity divisor) { + public Per> div(Velocity divisor) { return (Per>) Measure.super.div(divisor); } @@ -744,23 +753,23 @@ public interface Distance extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Velocity divisor) { + public Per> divide(Velocity divisor) { return div(divisor); } @Override - default Per> per(VelocityUnit divisorUnit) { + public Per> per(VelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Voltage multiplier) { + public Mult times(Voltage multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Voltage divisor) { + public Per div(Voltage divisor) { return (Per) Measure.super.div(divisor); } @@ -772,12 +781,12 @@ public interface Distance extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Voltage divisor) { + public Per divide(Voltage divisor) { return div(divisor); } @Override - default Per per(VoltageUnit divisorUnit) { + public Per per(VoltageUnit divisorUnit) { return div(divisorUnit.one()); } diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Energy.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Energy.java index a98f55d5a8..aa5515d77b 100644 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Energy.java +++ b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Energy.java @@ -10,36 +10,45 @@ import static edu.wpi.first.units.Units.*; import edu.wpi.first.units.*; @SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public interface Energy extends Measure { - static Energy ofRelativeUnits(double magnitude, EnergyUnit unit) { - return new ImmutableEnergy(magnitude, unit.toBaseUnits(magnitude), unit); +public record Energy(double magnitude, double baseUnitMagnitude, EnergyUnit unit) implements Measure { + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link EnergyUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static Energy ofRelativeUnits(double magnitude, EnergyUnit unit) { + return new Energy(magnitude, unit.toBaseUnits(magnitude), unit); } - static Energy ofBaseUnits(double baseUnitMagnitude, EnergyUnit unit) { - return new ImmutableEnergy(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link EnergyUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit's base unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static Energy ofBaseUnits(double baseUnitMagnitude, EnergyUnit unit) { + return new Energy(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); } @Override - Energy copy(); + public EnergyUnit baseUnit() { return (EnergyUnit) unit().getBaseUnit(); } @Override - default MutEnergy mutableCopy() { - return new MutEnergy(magnitude(), baseUnitMagnitude(), unit()); - } - - @Override - EnergyUnit unit(); - - @Override - default EnergyUnit baseUnit() { return (EnergyUnit) unit().getBaseUnit(); } - - @Override - default double in(EnergyUnit unit) { + public double in(EnergyUnit unit) { return unit.fromBaseUnits(baseUnitMagnitude()); } @Override - default Energy unaryMinus() { + @SuppressWarnings("rawtypes") + public boolean equals(Object object) { + return object instanceof Energy m && isEquivalent(m); + } + + @Override + public Energy unaryMinus() { return (Energy) unit().ofBaseUnits(0 - baseUnitMagnitude()); } @@ -51,27 +60,27 @@ public interface Energy extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Energy negate() { + public Energy negate() { return (Energy) unaryMinus(); } @Override - default Energy plus(Measure other) { + public Energy plus(Measure other) { return (Energy) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude()); } @Override - default Energy minus(Measure other) { + public Energy minus(Measure other) { return (Energy) unit().ofBaseUnits(baseUnitMagnitude() - other.baseUnitMagnitude()); } @Override - default Energy times(double multiplier) { + public Energy times(double multiplier) { return (Energy) unit().ofBaseUnits(baseUnitMagnitude() * multiplier); } @Override - default Energy div(double divisor) { + public Energy div(double divisor) { return (Energy) unit().ofBaseUnits(baseUnitMagnitude() / divisor); } @@ -83,18 +92,18 @@ public interface Energy extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Energy divide(double divisor) { + public Energy divide(double divisor) { return (Energy) div(divisor); } @Override - default Mult> times(Acceleration multiplier) { + public Mult> times(Acceleration multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Acceleration divisor) { + public Per> div(Acceleration divisor) { return (Per>) Measure.super.div(divisor); } @@ -106,23 +115,23 @@ public interface Energy extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Acceleration divisor) { + public Per> divide(Acceleration divisor) { return div(divisor); } @Override - default Per> per(AccelerationUnit divisorUnit) { + public Per> per(AccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Angle multiplier) { + public Mult times(Angle multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Angle divisor) { + public Per div(Angle divisor) { return (Per) Measure.super.div(divisor); } @@ -134,23 +143,23 @@ public interface Energy extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Angle divisor) { + public Per divide(Angle divisor) { return div(divisor); } @Override - default Per per(AngleUnit divisorUnit) { + public Per per(AngleUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularAcceleration multiplier) { + public Mult times(AngularAcceleration multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularAcceleration divisor) { + public Per div(AngularAcceleration divisor) { return (Per) Measure.super.div(divisor); } @@ -162,23 +171,23 @@ public interface Energy extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularAcceleration divisor) { + public Per divide(AngularAcceleration divisor) { return div(divisor); } @Override - default Per per(AngularAccelerationUnit divisorUnit) { + public Per per(AngularAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularMomentum multiplier) { + public Mult times(AngularMomentum multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularMomentum divisor) { + public Per div(AngularMomentum divisor) { return (Per) Measure.super.div(divisor); } @@ -190,23 +199,23 @@ public interface Energy extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularMomentum divisor) { + public Per divide(AngularMomentum divisor) { return div(divisor); } @Override - default Per per(AngularMomentumUnit divisorUnit) { + public Per per(AngularMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularVelocity multiplier) { + public Mult times(AngularVelocity multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularVelocity divisor) { + public Per div(AngularVelocity divisor) { return (Per) Measure.super.div(divisor); } @@ -218,23 +227,23 @@ public interface Energy extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularVelocity divisor) { + public Per divide(AngularVelocity divisor) { return div(divisor); } @Override - default Per per(AngularVelocityUnit divisorUnit) { + public Per per(AngularVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Current multiplier) { + public Mult times(Current multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Current divisor) { + public Per div(Current divisor) { return (Per) Measure.super.div(divisor); } @@ -246,17 +255,17 @@ public interface Energy extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Current divisor) { + public Per divide(Current divisor) { return div(divisor); } @Override - default Per per(CurrentUnit divisorUnit) { + public Per per(CurrentUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Energy div(Dimensionless divisor) { + public Energy div(Dimensionless divisor) { return (Energy) Joules.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -268,23 +277,23 @@ public interface Energy extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Energy divide(Dimensionless divisor) { + public Energy divide(Dimensionless divisor) { return (Energy) div(divisor); } @Override - default Energy times(Dimensionless multiplier) { + public Energy times(Dimensionless multiplier) { return (Energy) Joules.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Mult times(Distance multiplier) { + public Mult times(Distance multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Distance divisor) { + public Per div(Distance divisor) { return (Per) Measure.super.div(divisor); } @@ -296,23 +305,23 @@ public interface Energy extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Distance divisor) { + public Per divide(Distance divisor) { return div(divisor); } @Override - default Per per(DistanceUnit divisorUnit) { + public Per per(DistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Energy multiplier) { + public Mult times(Energy multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Dimensionless div(Energy divisor) { + public Dimensionless div(Energy divisor) { return Value.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -324,23 +333,23 @@ public interface Energy extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Dimensionless divide(Energy divisor) { + public Dimensionless divide(Energy divisor) { return div(divisor); } @Override - default Dimensionless per(EnergyUnit divisorUnit) { + public Dimensionless per(EnergyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Force multiplier) { + public Mult times(Force multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Force divisor) { + public Per div(Force divisor) { return (Per) Measure.super.div(divisor); } @@ -352,23 +361,23 @@ public interface Energy extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Force divisor) { + public Per divide(Force divisor) { return div(divisor); } @Override - default Per per(ForceUnit divisorUnit) { + public Per per(ForceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Power times(Frequency multiplier) { + public Power times(Frequency multiplier) { return Watts.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Per div(Frequency divisor) { + public Per div(Frequency divisor) { return (Per) Measure.super.div(divisor); } @@ -380,23 +389,23 @@ public interface Energy extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Frequency divisor) { + public Per divide(Frequency divisor) { return div(divisor); } @Override - default Per per(FrequencyUnit divisorUnit) { + public Per per(FrequencyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearAcceleration multiplier) { + public Mult times(LinearAcceleration multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearAcceleration divisor) { + public Per div(LinearAcceleration divisor) { return (Per) Measure.super.div(divisor); } @@ -408,23 +417,23 @@ public interface Energy extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearAcceleration divisor) { + public Per divide(LinearAcceleration divisor) { return div(divisor); } @Override - default Per per(LinearAccelerationUnit divisorUnit) { + public Per per(LinearAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearMomentum multiplier) { + public Mult times(LinearMomentum multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearMomentum divisor) { + public Per div(LinearMomentum divisor) { return (Per) Measure.super.div(divisor); } @@ -436,23 +445,23 @@ public interface Energy extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearMomentum divisor) { + public Per divide(LinearMomentum divisor) { return div(divisor); } @Override - default Per per(LinearMomentumUnit divisorUnit) { + public Per per(LinearMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearVelocity multiplier) { + public Mult times(LinearVelocity multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearVelocity divisor) { + public Per div(LinearVelocity divisor) { return (Per) Measure.super.div(divisor); } @@ -464,23 +473,23 @@ public interface Energy extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearVelocity divisor) { + public Per divide(LinearVelocity divisor) { return div(divisor); } @Override - default Per per(LinearVelocityUnit divisorUnit) { + public Per per(LinearVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Mass multiplier) { + public Mult times(Mass multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Mass divisor) { + public Per div(Mass divisor) { return (Per) Measure.super.div(divisor); } @@ -492,23 +501,23 @@ public interface Energy extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Mass divisor) { + public Per divide(Mass divisor) { return div(divisor); } @Override - default Per per(MassUnit divisorUnit) { + public Per per(MassUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(MomentOfInertia multiplier) { + public Mult times(MomentOfInertia multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(MomentOfInertia divisor) { + public Per div(MomentOfInertia divisor) { return (Per) Measure.super.div(divisor); } @@ -520,23 +529,23 @@ public interface Energy extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(MomentOfInertia divisor) { + public Per divide(MomentOfInertia divisor) { return div(divisor); } @Override - default Per per(MomentOfInertiaUnit divisorUnit) { + public Per per(MomentOfInertiaUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult> times(Mult multiplier) { + public Mult> times(Mult multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Mult divisor) { + public Per> div(Mult divisor) { return (Per>) Measure.super.div(divisor); } @@ -548,23 +557,23 @@ public interface Energy extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Mult divisor) { + public Per> divide(Mult divisor) { return div(divisor); } @Override - default Per> per(MultUnit divisorUnit) { + public Per> per(MultUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult> times(Per multiplier) { + public Mult> times(Per multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Per divisor) { + public Per> div(Per divisor) { return (Per>) Measure.super.div(divisor); } @@ -576,23 +585,23 @@ public interface Energy extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Per divisor) { + public Per> divide(Per divisor) { return div(divisor); } @Override - default Per> per(PerUnit divisorUnit) { + public Per> per(PerUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult times(Power multiplier) { + public Mult times(Power multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Power divisor) { + public Per div(Power divisor) { return (Per) Measure.super.div(divisor); } @@ -604,23 +613,23 @@ public interface Energy extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Power divisor) { + public Per divide(Power divisor) { return div(divisor); } @Override - default Per per(PowerUnit divisorUnit) { + public Per per(PowerUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Resistance multiplier) { + public Mult times(Resistance multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Resistance divisor) { + public Per div(Resistance divisor) { return (Per) Measure.super.div(divisor); } @@ -632,23 +641,23 @@ public interface Energy extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Resistance divisor) { + public Per divide(Resistance divisor) { return div(divisor); } @Override - default Per per(ResistanceUnit divisorUnit) { + public Per per(ResistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Temperature multiplier) { + public Mult times(Temperature multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Temperature divisor) { + public Per div(Temperature divisor) { return (Per) Measure.super.div(divisor); } @@ -660,23 +669,23 @@ public interface Energy extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Temperature divisor) { + public Per divide(Temperature divisor) { return div(divisor); } @Override - default Per per(TemperatureUnit divisorUnit) { + public Per per(TemperatureUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Time multiplier) { + public Mult times(Time multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Power div(Time divisor) { + public Power div(Time divisor) { return Watts.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -688,23 +697,23 @@ public interface Energy extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Power divide(Time divisor) { + public Power divide(Time divisor) { return div(divisor); } @Override - default Power per(TimeUnit divisorUnit) { + public Power per(TimeUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Torque multiplier) { + public Mult times(Torque multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Torque divisor) { + public Per div(Torque divisor) { return (Per) Measure.super.div(divisor); } @@ -716,23 +725,23 @@ public interface Energy extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Torque divisor) { + public Per divide(Torque divisor) { return div(divisor); } @Override - default Per per(TorqueUnit divisorUnit) { + public Per per(TorqueUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult> times(Velocity multiplier) { + public Mult> times(Velocity multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Velocity divisor) { + public Per> div(Velocity divisor) { return (Per>) Measure.super.div(divisor); } @@ -744,23 +753,23 @@ public interface Energy extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Velocity divisor) { + public Per> divide(Velocity divisor) { return div(divisor); } @Override - default Per> per(VelocityUnit divisorUnit) { + public Per> per(VelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Voltage multiplier) { + public Mult times(Voltage multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Voltage divisor) { + public Per div(Voltage divisor) { return (Per) Measure.super.div(divisor); } @@ -772,12 +781,12 @@ public interface Energy extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Voltage divisor) { + public Per divide(Voltage divisor) { return div(divisor); } @Override - default Per per(VoltageUnit divisorUnit) { + public Per per(VoltageUnit divisorUnit) { return div(divisorUnit.one()); } diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Force.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Force.java index 0233742892..962296c1c9 100644 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Force.java +++ b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Force.java @@ -10,36 +10,45 @@ import static edu.wpi.first.units.Units.*; import edu.wpi.first.units.*; @SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public interface Force extends Measure { - static Force ofRelativeUnits(double magnitude, ForceUnit unit) { - return new ImmutableForce(magnitude, unit.toBaseUnits(magnitude), unit); +public record Force(double magnitude, double baseUnitMagnitude, ForceUnit unit) implements Measure { + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link ForceUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static Force ofRelativeUnits(double magnitude, ForceUnit unit) { + return new Force(magnitude, unit.toBaseUnits(magnitude), unit); } - static Force ofBaseUnits(double baseUnitMagnitude, ForceUnit unit) { - return new ImmutableForce(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link ForceUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit's base unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static Force ofBaseUnits(double baseUnitMagnitude, ForceUnit unit) { + return new Force(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); } @Override - Force copy(); + public ForceUnit baseUnit() { return (ForceUnit) unit().getBaseUnit(); } @Override - default MutForce mutableCopy() { - return new MutForce(magnitude(), baseUnitMagnitude(), unit()); - } - - @Override - ForceUnit unit(); - - @Override - default ForceUnit baseUnit() { return (ForceUnit) unit().getBaseUnit(); } - - @Override - default double in(ForceUnit unit) { + public double in(ForceUnit unit) { return unit.fromBaseUnits(baseUnitMagnitude()); } @Override - default Force unaryMinus() { + @SuppressWarnings("rawtypes") + public boolean equals(Object object) { + return object instanceof Force m && isEquivalent(m); + } + + @Override + public Force unaryMinus() { return (Force) unit().ofBaseUnits(0 - baseUnitMagnitude()); } @@ -51,27 +60,27 @@ public interface Force extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Force negate() { + public Force negate() { return (Force) unaryMinus(); } @Override - default Force plus(Measure other) { + public Force plus(Measure other) { return (Force) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude()); } @Override - default Force minus(Measure other) { + public Force minus(Measure other) { return (Force) unit().ofBaseUnits(baseUnitMagnitude() - other.baseUnitMagnitude()); } @Override - default Force times(double multiplier) { + public Force times(double multiplier) { return (Force) unit().ofBaseUnits(baseUnitMagnitude() * multiplier); } @Override - default Force div(double divisor) { + public Force div(double divisor) { return (Force) unit().ofBaseUnits(baseUnitMagnitude() / divisor); } @@ -83,18 +92,18 @@ public interface Force extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Force divide(double divisor) { + public Force divide(double divisor) { return (Force) div(divisor); } @Override - default Mult> times(Acceleration multiplier) { + public Mult> times(Acceleration multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Acceleration divisor) { + public Per> div(Acceleration divisor) { return (Per>) Measure.super.div(divisor); } @@ -106,23 +115,23 @@ public interface Force extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Acceleration divisor) { + public Per> divide(Acceleration divisor) { return div(divisor); } @Override - default Per> per(AccelerationUnit divisorUnit) { + public Per> per(AccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Angle multiplier) { + public Mult times(Angle multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Angle divisor) { + public Per div(Angle divisor) { return (Per) Measure.super.div(divisor); } @@ -134,23 +143,23 @@ public interface Force extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Angle divisor) { + public Per divide(Angle divisor) { return div(divisor); } @Override - default Per per(AngleUnit divisorUnit) { + public Per per(AngleUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularAcceleration multiplier) { + public Mult times(AngularAcceleration multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularAcceleration divisor) { + public Per div(AngularAcceleration divisor) { return (Per) Measure.super.div(divisor); } @@ -162,23 +171,23 @@ public interface Force extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularAcceleration divisor) { + public Per divide(AngularAcceleration divisor) { return div(divisor); } @Override - default Per per(AngularAccelerationUnit divisorUnit) { + public Per per(AngularAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularMomentum multiplier) { + public Mult times(AngularMomentum multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularMomentum divisor) { + public Per div(AngularMomentum divisor) { return (Per) Measure.super.div(divisor); } @@ -190,23 +199,23 @@ public interface Force extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularMomentum divisor) { + public Per divide(AngularMomentum divisor) { return div(divisor); } @Override - default Per per(AngularMomentumUnit divisorUnit) { + public Per per(AngularMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularVelocity multiplier) { + public Mult times(AngularVelocity multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularVelocity divisor) { + public Per div(AngularVelocity divisor) { return (Per) Measure.super.div(divisor); } @@ -218,23 +227,23 @@ public interface Force extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularVelocity divisor) { + public Per divide(AngularVelocity divisor) { return div(divisor); } @Override - default Per per(AngularVelocityUnit divisorUnit) { + public Per per(AngularVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Current multiplier) { + public Mult times(Current multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Current divisor) { + public Per div(Current divisor) { return (Per) Measure.super.div(divisor); } @@ -246,17 +255,17 @@ public interface Force extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Current divisor) { + public Per divide(Current divisor) { return div(divisor); } @Override - default Per per(CurrentUnit divisorUnit) { + public Per per(CurrentUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Force div(Dimensionless divisor) { + public Force div(Dimensionless divisor) { return (Force) Newtons.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -268,23 +277,23 @@ public interface Force extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Force divide(Dimensionless divisor) { + public Force divide(Dimensionless divisor) { return (Force) div(divisor); } @Override - default Force times(Dimensionless multiplier) { + public Force times(Dimensionless multiplier) { return (Force) Newtons.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Energy times(Distance multiplier) { + public Energy times(Distance multiplier) { return Joules.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Per div(Distance divisor) { + public Per div(Distance divisor) { return (Per) Measure.super.div(divisor); } @@ -296,23 +305,23 @@ public interface Force extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Distance divisor) { + public Per divide(Distance divisor) { return div(divisor); } @Override - default Per per(DistanceUnit divisorUnit) { + public Per per(DistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Energy multiplier) { + public Mult times(Energy multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Energy divisor) { + public Per div(Energy divisor) { return (Per) Measure.super.div(divisor); } @@ -324,23 +333,23 @@ public interface Force extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Energy divisor) { + public Per divide(Energy divisor) { return div(divisor); } @Override - default Per per(EnergyUnit divisorUnit) { + public Per per(EnergyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Force multiplier) { + public Mult times(Force multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Dimensionless div(Force divisor) { + public Dimensionless div(Force divisor) { return Value.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -352,23 +361,23 @@ public interface Force extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Dimensionless divide(Force divisor) { + public Dimensionless divide(Force divisor) { return div(divisor); } @Override - default Dimensionless per(ForceUnit divisorUnit) { + public Dimensionless per(ForceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Frequency multiplier) { + public Mult times(Frequency multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Frequency divisor) { + public Per div(Frequency divisor) { return (Per) Measure.super.div(divisor); } @@ -380,23 +389,23 @@ public interface Force extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Frequency divisor) { + public Per divide(Frequency divisor) { return div(divisor); } @Override - default Per per(FrequencyUnit divisorUnit) { + public Per per(FrequencyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearAcceleration multiplier) { + public Mult times(LinearAcceleration multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Mass div(LinearAcceleration divisor) { + public Mass div(LinearAcceleration divisor) { return Kilograms.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -408,23 +417,23 @@ public interface Force extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Mass divide(LinearAcceleration divisor) { + public Mass divide(LinearAcceleration divisor) { return div(divisor); } @Override - default Mass per(LinearAccelerationUnit divisorUnit) { + public Mass per(LinearAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearMomentum multiplier) { + public Mult times(LinearMomentum multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearMomentum divisor) { + public Per div(LinearMomentum divisor) { return (Per) Measure.super.div(divisor); } @@ -436,23 +445,23 @@ public interface Force extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearMomentum divisor) { + public Per divide(LinearMomentum divisor) { return div(divisor); } @Override - default Per per(LinearMomentumUnit divisorUnit) { + public Per per(LinearMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearVelocity multiplier) { + public Mult times(LinearVelocity multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearVelocity divisor) { + public Per div(LinearVelocity divisor) { return (Per) Measure.super.div(divisor); } @@ -464,23 +473,23 @@ public interface Force extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearVelocity divisor) { + public Per divide(LinearVelocity divisor) { return div(divisor); } @Override - default Per per(LinearVelocityUnit divisorUnit) { + public Per per(LinearVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Mass multiplier) { + public Mult times(Mass multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default LinearAcceleration div(Mass divisor) { + public LinearAcceleration div(Mass divisor) { return MetersPerSecondPerSecond.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -492,23 +501,23 @@ public interface Force extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default LinearAcceleration divide(Mass divisor) { + public LinearAcceleration divide(Mass divisor) { return div(divisor); } @Override - default LinearAcceleration per(MassUnit divisorUnit) { + public LinearAcceleration per(MassUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(MomentOfInertia multiplier) { + public Mult times(MomentOfInertia multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(MomentOfInertia divisor) { + public Per div(MomentOfInertia divisor) { return (Per) Measure.super.div(divisor); } @@ -520,23 +529,23 @@ public interface Force extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(MomentOfInertia divisor) { + public Per divide(MomentOfInertia divisor) { return div(divisor); } @Override - default Per per(MomentOfInertiaUnit divisorUnit) { + public Per per(MomentOfInertiaUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult> times(Mult multiplier) { + public Mult> times(Mult multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Mult divisor) { + public Per> div(Mult divisor) { return (Per>) Measure.super.div(divisor); } @@ -548,23 +557,23 @@ public interface Force extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Mult divisor) { + public Per> divide(Mult divisor) { return div(divisor); } @Override - default Per> per(MultUnit divisorUnit) { + public Per> per(MultUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult> times(Per multiplier) { + public Mult> times(Per multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Per divisor) { + public Per> div(Per divisor) { return (Per>) Measure.super.div(divisor); } @@ -576,23 +585,23 @@ public interface Force extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Per divisor) { + public Per> divide(Per divisor) { return div(divisor); } @Override - default Per> per(PerUnit divisorUnit) { + public Per> per(PerUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult times(Power multiplier) { + public Mult times(Power multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Power divisor) { + public Per div(Power divisor) { return (Per) Measure.super.div(divisor); } @@ -604,23 +613,23 @@ public interface Force extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Power divisor) { + public Per divide(Power divisor) { return div(divisor); } @Override - default Per per(PowerUnit divisorUnit) { + public Per per(PowerUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Resistance multiplier) { + public Mult times(Resistance multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Resistance divisor) { + public Per div(Resistance divisor) { return (Per) Measure.super.div(divisor); } @@ -632,23 +641,23 @@ public interface Force extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Resistance divisor) { + public Per divide(Resistance divisor) { return div(divisor); } @Override - default Per per(ResistanceUnit divisorUnit) { + public Per per(ResistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Temperature multiplier) { + public Mult times(Temperature multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Temperature divisor) { + public Per div(Temperature divisor) { return (Per) Measure.super.div(divisor); } @@ -660,23 +669,23 @@ public interface Force extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Temperature divisor) { + public Per divide(Temperature divisor) { return div(divisor); } @Override - default Per per(TemperatureUnit divisorUnit) { + public Per per(TemperatureUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Time multiplier) { + public Mult times(Time multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Velocity div(Time divisor) { + public Velocity div(Time divisor) { return VelocityUnit.combine(unit(), divisor.unit()).ofBaseUnits(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -688,23 +697,23 @@ public interface Force extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Velocity divide(Time divisor) { + public Velocity divide(Time divisor) { return div(divisor); } @Override - default Velocity per(TimeUnit divisorUnit) { + public Velocity per(TimeUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Torque multiplier) { + public Mult times(Torque multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Torque divisor) { + public Per div(Torque divisor) { return (Per) Measure.super.div(divisor); } @@ -716,23 +725,23 @@ public interface Force extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Torque divisor) { + public Per divide(Torque divisor) { return div(divisor); } @Override - default Per per(TorqueUnit divisorUnit) { + public Per per(TorqueUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult> times(Velocity multiplier) { + public Mult> times(Velocity multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Velocity divisor) { + public Per> div(Velocity divisor) { return (Per>) Measure.super.div(divisor); } @@ -744,23 +753,23 @@ public interface Force extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Velocity divisor) { + public Per> divide(Velocity divisor) { return div(divisor); } @Override - default Per> per(VelocityUnit divisorUnit) { + public Per> per(VelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Voltage multiplier) { + public Mult times(Voltage multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Voltage divisor) { + public Per div(Voltage divisor) { return (Per) Measure.super.div(divisor); } @@ -772,12 +781,12 @@ public interface Force extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Voltage divisor) { + public Per divide(Voltage divisor) { return div(divisor); } @Override - default Per per(VoltageUnit divisorUnit) { + public Per per(VoltageUnit divisorUnit) { return div(divisorUnit.one()); } diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Frequency.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Frequency.java index d18973a84d..336ccab0fb 100644 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Frequency.java +++ b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Frequency.java @@ -10,36 +10,45 @@ import static edu.wpi.first.units.Units.*; import edu.wpi.first.units.*; @SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public interface Frequency extends Measure { - static Frequency ofRelativeUnits(double magnitude, FrequencyUnit unit) { - return new ImmutableFrequency(magnitude, unit.toBaseUnits(magnitude), unit); +public record Frequency(double magnitude, double baseUnitMagnitude, FrequencyUnit unit) implements Measure { + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link FrequencyUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static Frequency ofRelativeUnits(double magnitude, FrequencyUnit unit) { + return new Frequency(magnitude, unit.toBaseUnits(magnitude), unit); } - static Frequency ofBaseUnits(double baseUnitMagnitude, FrequencyUnit unit) { - return new ImmutableFrequency(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link FrequencyUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit's base unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static Frequency ofBaseUnits(double baseUnitMagnitude, FrequencyUnit unit) { + return new Frequency(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); } @Override - Frequency copy(); + public FrequencyUnit baseUnit() { return (FrequencyUnit) unit().getBaseUnit(); } @Override - default MutFrequency mutableCopy() { - return new MutFrequency(magnitude(), baseUnitMagnitude(), unit()); - } - - @Override - FrequencyUnit unit(); - - @Override - default FrequencyUnit baseUnit() { return (FrequencyUnit) unit().getBaseUnit(); } - - @Override - default double in(FrequencyUnit unit) { + public double in(FrequencyUnit unit) { return unit.fromBaseUnits(baseUnitMagnitude()); } @Override - default Frequency unaryMinus() { + @SuppressWarnings("rawtypes") + public boolean equals(Object object) { + return object instanceof Frequency m && isEquivalent(m); + } + + @Override + public Frequency unaryMinus() { return (Frequency) unit().ofBaseUnits(0 - baseUnitMagnitude()); } @@ -51,27 +60,27 @@ public interface Frequency extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Frequency negate() { + public Frequency negate() { return (Frequency) unaryMinus(); } @Override - default Frequency plus(Measure other) { + public Frequency plus(Measure other) { return (Frequency) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude()); } @Override - default Frequency minus(Measure other) { + public Frequency minus(Measure other) { return (Frequency) unit().ofBaseUnits(baseUnitMagnitude() - other.baseUnitMagnitude()); } @Override - default Frequency times(double multiplier) { + public Frequency times(double multiplier) { return (Frequency) unit().ofBaseUnits(baseUnitMagnitude() * multiplier); } @Override - default Frequency div(double divisor) { + public Frequency div(double divisor) { return (Frequency) unit().ofBaseUnits(baseUnitMagnitude() / divisor); } @@ -83,18 +92,18 @@ public interface Frequency extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Frequency divide(double divisor) { + public Frequency divide(double divisor) { return (Frequency) div(divisor); } @Override - default Mult> times(Acceleration multiplier) { + public Mult> times(Acceleration multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Acceleration divisor) { + public Per> div(Acceleration divisor) { return (Per>) Measure.super.div(divisor); } @@ -106,23 +115,23 @@ public interface Frequency extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Acceleration divisor) { + public Per> divide(Acceleration divisor) { return div(divisor); } @Override - default Per> per(AccelerationUnit divisorUnit) { + public Per> per(AccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default AngularVelocity times(Angle multiplier) { + public AngularVelocity times(Angle multiplier) { return RadiansPerSecond.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Per div(Angle divisor) { + public Per div(Angle divisor) { return (Per) Measure.super.div(divisor); } @@ -134,23 +143,23 @@ public interface Frequency extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Angle divisor) { + public Per divide(Angle divisor) { return div(divisor); } @Override - default Per per(AngleUnit divisorUnit) { + public Per per(AngleUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularAcceleration multiplier) { + public Mult times(AngularAcceleration multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularAcceleration divisor) { + public Per div(AngularAcceleration divisor) { return (Per) Measure.super.div(divisor); } @@ -162,23 +171,23 @@ public interface Frequency extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularAcceleration divisor) { + public Per divide(AngularAcceleration divisor) { return div(divisor); } @Override - default Per per(AngularAccelerationUnit divisorUnit) { + public Per per(AngularAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularMomentum multiplier) { + public Mult times(AngularMomentum multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularMomentum divisor) { + public Per div(AngularMomentum divisor) { return (Per) Measure.super.div(divisor); } @@ -190,23 +199,23 @@ public interface Frequency extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularMomentum divisor) { + public Per divide(AngularMomentum divisor) { return div(divisor); } @Override - default Per per(AngularMomentumUnit divisorUnit) { + public Per per(AngularMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default AngularAcceleration times(AngularVelocity multiplier) { + public AngularAcceleration times(AngularVelocity multiplier) { return RadiansPerSecondPerSecond.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Per div(AngularVelocity divisor) { + public Per div(AngularVelocity divisor) { return (Per) Measure.super.div(divisor); } @@ -218,23 +227,23 @@ public interface Frequency extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularVelocity divisor) { + public Per divide(AngularVelocity divisor) { return div(divisor); } @Override - default Per per(AngularVelocityUnit divisorUnit) { + public Per per(AngularVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Current multiplier) { + public Mult times(Current multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Current divisor) { + public Per div(Current divisor) { return (Per) Measure.super.div(divisor); } @@ -246,17 +255,17 @@ public interface Frequency extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Current divisor) { + public Per divide(Current divisor) { return div(divisor); } @Override - default Per per(CurrentUnit divisorUnit) { + public Per per(CurrentUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Frequency div(Dimensionless divisor) { + public Frequency div(Dimensionless divisor) { return (Frequency) Hertz.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -268,23 +277,23 @@ public interface Frequency extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Frequency divide(Dimensionless divisor) { + public Frequency divide(Dimensionless divisor) { return (Frequency) div(divisor); } @Override - default Frequency times(Dimensionless multiplier) { + public Frequency times(Dimensionless multiplier) { return (Frequency) Hertz.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default LinearVelocity times(Distance multiplier) { + public LinearVelocity times(Distance multiplier) { return MetersPerSecond.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Per div(Distance divisor) { + public Per div(Distance divisor) { return (Per) Measure.super.div(divisor); } @@ -296,23 +305,23 @@ public interface Frequency extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Distance divisor) { + public Per divide(Distance divisor) { return div(divisor); } @Override - default Per per(DistanceUnit divisorUnit) { + public Per per(DistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Energy multiplier) { + public Mult times(Energy multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Energy divisor) { + public Per div(Energy divisor) { return (Per) Measure.super.div(divisor); } @@ -324,23 +333,23 @@ public interface Frequency extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Energy divisor) { + public Per divide(Energy divisor) { return div(divisor); } @Override - default Per per(EnergyUnit divisorUnit) { + public Per per(EnergyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Force multiplier) { + public Mult times(Force multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Force divisor) { + public Per div(Force divisor) { return (Per) Measure.super.div(divisor); } @@ -352,23 +361,23 @@ public interface Frequency extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Force divisor) { + public Per divide(Force divisor) { return div(divisor); } @Override - default Per per(ForceUnit divisorUnit) { + public Per per(ForceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Frequency multiplier) { + public Mult times(Frequency multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Dimensionless div(Frequency divisor) { + public Dimensionless div(Frequency divisor) { return Value.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -380,23 +389,23 @@ public interface Frequency extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Dimensionless divide(Frequency divisor) { + public Dimensionless divide(Frequency divisor) { return div(divisor); } @Override - default Dimensionless per(FrequencyUnit divisorUnit) { + public Dimensionless per(FrequencyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearAcceleration multiplier) { + public Mult times(LinearAcceleration multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearAcceleration divisor) { + public Per div(LinearAcceleration divisor) { return (Per) Measure.super.div(divisor); } @@ -408,23 +417,23 @@ public interface Frequency extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearAcceleration divisor) { + public Per divide(LinearAcceleration divisor) { return div(divisor); } @Override - default Per per(LinearAccelerationUnit divisorUnit) { + public Per per(LinearAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearMomentum multiplier) { + public Mult times(LinearMomentum multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearMomentum divisor) { + public Per div(LinearMomentum divisor) { return (Per) Measure.super.div(divisor); } @@ -436,23 +445,23 @@ public interface Frequency extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearMomentum divisor) { + public Per divide(LinearMomentum divisor) { return div(divisor); } @Override - default Per per(LinearMomentumUnit divisorUnit) { + public Per per(LinearMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default LinearAcceleration times(LinearVelocity multiplier) { + public LinearAcceleration times(LinearVelocity multiplier) { return MetersPerSecondPerSecond.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Per div(LinearVelocity divisor) { + public Per div(LinearVelocity divisor) { return (Per) Measure.super.div(divisor); } @@ -464,23 +473,23 @@ public interface Frequency extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearVelocity divisor) { + public Per divide(LinearVelocity divisor) { return div(divisor); } @Override - default Per per(LinearVelocityUnit divisorUnit) { + public Per per(LinearVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Mass multiplier) { + public Mult times(Mass multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Mass divisor) { + public Per div(Mass divisor) { return (Per) Measure.super.div(divisor); } @@ -492,23 +501,23 @@ public interface Frequency extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Mass divisor) { + public Per divide(Mass divisor) { return div(divisor); } @Override - default Per per(MassUnit divisorUnit) { + public Per per(MassUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(MomentOfInertia multiplier) { + public Mult times(MomentOfInertia multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(MomentOfInertia divisor) { + public Per div(MomentOfInertia divisor) { return (Per) Measure.super.div(divisor); } @@ -520,23 +529,23 @@ public interface Frequency extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(MomentOfInertia divisor) { + public Per divide(MomentOfInertia divisor) { return div(divisor); } @Override - default Per per(MomentOfInertiaUnit divisorUnit) { + public Per per(MomentOfInertiaUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult> times(Mult multiplier) { + public Mult> times(Mult multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Mult divisor) { + public Per> div(Mult divisor) { return (Per>) Measure.super.div(divisor); } @@ -548,23 +557,23 @@ public interface Frequency extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Mult divisor) { + public Per> divide(Mult divisor) { return div(divisor); } @Override - default Per> per(MultUnit divisorUnit) { + public Per> per(MultUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult> times(Per multiplier) { + public Mult> times(Per multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Per divisor) { + public Per> div(Per divisor) { return (Per>) Measure.super.div(divisor); } @@ -576,23 +585,23 @@ public interface Frequency extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Per divisor) { + public Per> divide(Per divisor) { return div(divisor); } @Override - default Per> per(PerUnit divisorUnit) { + public Per> per(PerUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult times(Power multiplier) { + public Mult times(Power multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Power divisor) { + public Per div(Power divisor) { return (Per) Measure.super.div(divisor); } @@ -604,23 +613,23 @@ public interface Frequency extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Power divisor) { + public Per divide(Power divisor) { return div(divisor); } @Override - default Per per(PowerUnit divisorUnit) { + public Per per(PowerUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Resistance multiplier) { + public Mult times(Resistance multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Resistance divisor) { + public Per div(Resistance divisor) { return (Per) Measure.super.div(divisor); } @@ -632,23 +641,23 @@ public interface Frequency extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Resistance divisor) { + public Per divide(Resistance divisor) { return div(divisor); } @Override - default Per per(ResistanceUnit divisorUnit) { + public Per per(ResistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Temperature multiplier) { + public Mult times(Temperature multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Temperature divisor) { + public Per div(Temperature divisor) { return (Per) Measure.super.div(divisor); } @@ -660,23 +669,23 @@ public interface Frequency extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Temperature divisor) { + public Per divide(Temperature divisor) { return div(divisor); } @Override - default Per per(TemperatureUnit divisorUnit) { + public Per per(TemperatureUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Dimensionless times(Time multiplier) { + public Dimensionless times(Time multiplier) { return Value.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Velocity div(Time divisor) { + public Velocity div(Time divisor) { return VelocityUnit.combine(unit(), divisor.unit()).ofBaseUnits(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -688,23 +697,23 @@ public interface Frequency extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Velocity divide(Time divisor) { + public Velocity divide(Time divisor) { return div(divisor); } @Override - default Velocity per(TimeUnit divisorUnit) { + public Velocity per(TimeUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Torque multiplier) { + public Mult times(Torque multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Torque divisor) { + public Per div(Torque divisor) { return (Per) Measure.super.div(divisor); } @@ -716,23 +725,23 @@ public interface Frequency extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Torque divisor) { + public Per divide(Torque divisor) { return div(divisor); } @Override - default Per per(TorqueUnit divisorUnit) { + public Per per(TorqueUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult> times(Velocity multiplier) { + public Mult> times(Velocity multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Velocity divisor) { + public Per> div(Velocity divisor) { return (Per>) Measure.super.div(divisor); } @@ -744,23 +753,23 @@ public interface Frequency extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Velocity divisor) { + public Per> divide(Velocity divisor) { return div(divisor); } @Override - default Per> per(VelocityUnit divisorUnit) { + public Per> per(VelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Voltage multiplier) { + public Mult times(Voltage multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Voltage divisor) { + public Per div(Voltage divisor) { return (Per) Measure.super.div(divisor); } @@ -772,14 +781,14 @@ public interface Frequency extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Voltage divisor) { + public Per divide(Voltage divisor) { return div(divisor); } @Override - default Per per(VoltageUnit divisorUnit) { + public Per per(VoltageUnit divisorUnit) { return div(divisorUnit.one()); } /** Converts this frequency to the time period between cycles. */ -default Time asPeriod() { return Seconds.of(1 / baseUnitMagnitude()); } +public Time asPeriod() { return Seconds.of(1 / baseUnitMagnitude()); } } diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableAcceleration.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableAcceleration.java deleted file mode 100644 index ab6f0449bf..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableAcceleration.java +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public record ImmutableAcceleration(double magnitude, double baseUnitMagnitude, AccelerationUnit unit) implements Acceleration { - @Override - public Acceleration copy() { - return this; - } - - @Override - public String toString() { - return toShortString(); - } - - @Override - public boolean equals(Object o) { - return o instanceof Measure m && isEquivalent(m); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableAngle.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableAngle.java deleted file mode 100644 index 352e19ea38..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableAngle.java +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public record ImmutableAngle(double magnitude, double baseUnitMagnitude, AngleUnit unit) implements Angle { - @Override - public Angle copy() { - return this; - } - - @Override - public String toString() { - return toShortString(); - } - - @Override - public boolean equals(Object o) { - return o instanceof Measure m && isEquivalent(m); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableAngularAcceleration.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableAngularAcceleration.java deleted file mode 100644 index 0c417e08c6..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableAngularAcceleration.java +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public record ImmutableAngularAcceleration(double magnitude, double baseUnitMagnitude, AngularAccelerationUnit unit) implements AngularAcceleration { - @Override - public AngularAcceleration copy() { - return this; - } - - @Override - public String toString() { - return toShortString(); - } - - @Override - public boolean equals(Object o) { - return o instanceof Measure m && isEquivalent(m); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableAngularMomentum.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableAngularMomentum.java deleted file mode 100644 index 7d00dd669e..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableAngularMomentum.java +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public record ImmutableAngularMomentum(double magnitude, double baseUnitMagnitude, AngularMomentumUnit unit) implements AngularMomentum { - @Override - public AngularMomentum copy() { - return this; - } - - @Override - public String toString() { - return toShortString(); - } - - @Override - public boolean equals(Object o) { - return o instanceof Measure m && isEquivalent(m); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableAngularVelocity.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableAngularVelocity.java deleted file mode 100644 index c692a116d5..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableAngularVelocity.java +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public record ImmutableAngularVelocity(double magnitude, double baseUnitMagnitude, AngularVelocityUnit unit) implements AngularVelocity { - @Override - public AngularVelocity copy() { - return this; - } - - @Override - public String toString() { - return toShortString(); - } - - @Override - public boolean equals(Object o) { - return o instanceof Measure m && isEquivalent(m); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableCurrent.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableCurrent.java deleted file mode 100644 index 8710f57efe..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableCurrent.java +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public record ImmutableCurrent(double magnitude, double baseUnitMagnitude, CurrentUnit unit) implements Current { - @Override - public Current copy() { - return this; - } - - @Override - public String toString() { - return toShortString(); - } - - @Override - public boolean equals(Object o) { - return o instanceof Measure m && isEquivalent(m); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableDimensionless.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableDimensionless.java deleted file mode 100644 index 455bd2b402..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableDimensionless.java +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public record ImmutableDimensionless(double magnitude, double baseUnitMagnitude, DimensionlessUnit unit) implements Dimensionless { - @Override - public Dimensionless copy() { - return this; - } - - @Override - public String toString() { - return toShortString(); - } - - @Override - public boolean equals(Object o) { - return o instanceof Measure m && isEquivalent(m); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableDistance.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableDistance.java deleted file mode 100644 index f919782236..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableDistance.java +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public record ImmutableDistance(double magnitude, double baseUnitMagnitude, DistanceUnit unit) implements Distance { - @Override - public Distance copy() { - return this; - } - - @Override - public String toString() { - return toShortString(); - } - - @Override - public boolean equals(Object o) { - return o instanceof Measure m && isEquivalent(m); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableEnergy.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableEnergy.java deleted file mode 100644 index 7e443075b0..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableEnergy.java +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public record ImmutableEnergy(double magnitude, double baseUnitMagnitude, EnergyUnit unit) implements Energy { - @Override - public Energy copy() { - return this; - } - - @Override - public String toString() { - return toShortString(); - } - - @Override - public boolean equals(Object o) { - return o instanceof Measure m && isEquivalent(m); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableForce.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableForce.java deleted file mode 100644 index 14f11ec7a1..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableForce.java +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public record ImmutableForce(double magnitude, double baseUnitMagnitude, ForceUnit unit) implements Force { - @Override - public Force copy() { - return this; - } - - @Override - public String toString() { - return toShortString(); - } - - @Override - public boolean equals(Object o) { - return o instanceof Measure m && isEquivalent(m); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableFrequency.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableFrequency.java deleted file mode 100644 index f9084ed569..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableFrequency.java +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public record ImmutableFrequency(double magnitude, double baseUnitMagnitude, FrequencyUnit unit) implements Frequency { - @Override - public Frequency copy() { - return this; - } - - @Override - public String toString() { - return toShortString(); - } - - @Override - public boolean equals(Object o) { - return o instanceof Measure m && isEquivalent(m); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableLinearAcceleration.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableLinearAcceleration.java deleted file mode 100644 index 3212588d05..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableLinearAcceleration.java +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public record ImmutableLinearAcceleration(double magnitude, double baseUnitMagnitude, LinearAccelerationUnit unit) implements LinearAcceleration { - @Override - public LinearAcceleration copy() { - return this; - } - - @Override - public String toString() { - return toShortString(); - } - - @Override - public boolean equals(Object o) { - return o instanceof Measure m && isEquivalent(m); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableLinearMomentum.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableLinearMomentum.java deleted file mode 100644 index 0d7afd654b..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableLinearMomentum.java +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public record ImmutableLinearMomentum(double magnitude, double baseUnitMagnitude, LinearMomentumUnit unit) implements LinearMomentum { - @Override - public LinearMomentum copy() { - return this; - } - - @Override - public String toString() { - return toShortString(); - } - - @Override - public boolean equals(Object o) { - return o instanceof Measure m && isEquivalent(m); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableLinearVelocity.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableLinearVelocity.java deleted file mode 100644 index 7373307d39..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableLinearVelocity.java +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public record ImmutableLinearVelocity(double magnitude, double baseUnitMagnitude, LinearVelocityUnit unit) implements LinearVelocity { - @Override - public LinearVelocity copy() { - return this; - } - - @Override - public String toString() { - return toShortString(); - } - - @Override - public boolean equals(Object o) { - return o instanceof Measure m && isEquivalent(m); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableMass.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableMass.java deleted file mode 100644 index c74ad2711a..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableMass.java +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public record ImmutableMass(double magnitude, double baseUnitMagnitude, MassUnit unit) implements Mass { - @Override - public Mass copy() { - return this; - } - - @Override - public String toString() { - return toShortString(); - } - - @Override - public boolean equals(Object o) { - return o instanceof Measure m && isEquivalent(m); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableMomentOfInertia.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableMomentOfInertia.java deleted file mode 100644 index ea903c7652..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableMomentOfInertia.java +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public record ImmutableMomentOfInertia(double magnitude, double baseUnitMagnitude, MomentOfInertiaUnit unit) implements MomentOfInertia { - @Override - public MomentOfInertia copy() { - return this; - } - - @Override - public String toString() { - return toShortString(); - } - - @Override - public boolean equals(Object o) { - return o instanceof Measure m && isEquivalent(m); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableMult.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableMult.java deleted file mode 100644 index fc69825ee4..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableMult.java +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public record ImmutableMult(double magnitude, double baseUnitMagnitude, MultUnit unit) implements Mult { - @Override - public Mult copy() { - return this; - } - - @Override - public String toString() { - return toShortString(); - } - - @Override - public boolean equals(Object o) { - return o instanceof Measure m && isEquivalent(m); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutablePer.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutablePer.java deleted file mode 100644 index 3d9ad1fe14..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutablePer.java +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public record ImmutablePer(double magnitude, double baseUnitMagnitude, PerUnit unit) implements Per { - @Override - public Per copy() { - return this; - } - - @Override - public String toString() { - return toShortString(); - } - - @Override - public boolean equals(Object o) { - return o instanceof Measure m && isEquivalent(m); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutablePower.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutablePower.java deleted file mode 100644 index 0c7ffc0d95..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutablePower.java +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public record ImmutablePower(double magnitude, double baseUnitMagnitude, PowerUnit unit) implements Power { - @Override - public Power copy() { - return this; - } - - @Override - public String toString() { - return toShortString(); - } - - @Override - public boolean equals(Object o) { - return o instanceof Measure m && isEquivalent(m); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableResistance.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableResistance.java deleted file mode 100644 index 34b780e7d3..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableResistance.java +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public record ImmutableResistance(double magnitude, double baseUnitMagnitude, ResistanceUnit unit) implements Resistance { - @Override - public Resistance copy() { - return this; - } - - @Override - public String toString() { - return toShortString(); - } - - @Override - public boolean equals(Object o) { - return o instanceof Measure m && isEquivalent(m); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableTemperature.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableTemperature.java deleted file mode 100644 index e035d80922..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableTemperature.java +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public record ImmutableTemperature(double magnitude, double baseUnitMagnitude, TemperatureUnit unit) implements Temperature { - @Override - public Temperature copy() { - return this; - } - - @Override - public String toString() { - return toShortString(); - } - - @Override - public boolean equals(Object o) { - return o instanceof Measure m && isEquivalent(m); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableTime.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableTime.java deleted file mode 100644 index 1230d92028..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableTime.java +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public record ImmutableTime(double magnitude, double baseUnitMagnitude, TimeUnit unit) implements Time { - @Override - public Time copy() { - return this; - } - - @Override - public String toString() { - return toShortString(); - } - - @Override - public boolean equals(Object o) { - return o instanceof Measure m && isEquivalent(m); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableTorque.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableTorque.java deleted file mode 100644 index 7c756e75dc..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableTorque.java +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public record ImmutableTorque(double magnitude, double baseUnitMagnitude, TorqueUnit unit) implements Torque { - @Override - public Torque copy() { - return this; - } - - @Override - public String toString() { - return toShortString(); - } - - @Override - public boolean equals(Object o) { - return o instanceof Measure m && isEquivalent(m); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableVelocity.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableVelocity.java deleted file mode 100644 index 89256f9d05..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableVelocity.java +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public record ImmutableVelocity(double magnitude, double baseUnitMagnitude, VelocityUnit unit) implements Velocity { - @Override - public Velocity copy() { - return this; - } - - @Override - public String toString() { - return toShortString(); - } - - @Override - public boolean equals(Object o) { - return o instanceof Measure m && isEquivalent(m); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableVoltage.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableVoltage.java deleted file mode 100644 index ca5dfebbf3..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableVoltage.java +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public record ImmutableVoltage(double magnitude, double baseUnitMagnitude, VoltageUnit unit) implements Voltage { - @Override - public Voltage copy() { - return this; - } - - @Override - public String toString() { - return toShortString(); - } - - @Override - public boolean equals(Object o) { - return o instanceof Measure m && isEquivalent(m); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/LinearAcceleration.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/LinearAcceleration.java index 875ef937b1..e4589cd159 100644 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/LinearAcceleration.java +++ b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/LinearAcceleration.java @@ -10,36 +10,45 @@ import static edu.wpi.first.units.Units.*; import edu.wpi.first.units.*; @SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public interface LinearAcceleration extends Measure { - static LinearAcceleration ofRelativeUnits(double magnitude, LinearAccelerationUnit unit) { - return new ImmutableLinearAcceleration(magnitude, unit.toBaseUnits(magnitude), unit); +public record LinearAcceleration(double magnitude, double baseUnitMagnitude, LinearAccelerationUnit unit) implements Measure { + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link LinearAccelerationUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static LinearAcceleration ofRelativeUnits(double magnitude, LinearAccelerationUnit unit) { + return new LinearAcceleration(magnitude, unit.toBaseUnits(magnitude), unit); } - static LinearAcceleration ofBaseUnits(double baseUnitMagnitude, LinearAccelerationUnit unit) { - return new ImmutableLinearAcceleration(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link LinearAccelerationUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit's base unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static LinearAcceleration ofBaseUnits(double baseUnitMagnitude, LinearAccelerationUnit unit) { + return new LinearAcceleration(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); } @Override - LinearAcceleration copy(); + public LinearAccelerationUnit baseUnit() { return (LinearAccelerationUnit) unit().getBaseUnit(); } @Override - default MutLinearAcceleration mutableCopy() { - return new MutLinearAcceleration(magnitude(), baseUnitMagnitude(), unit()); - } - - @Override - LinearAccelerationUnit unit(); - - @Override - default LinearAccelerationUnit baseUnit() { return (LinearAccelerationUnit) unit().getBaseUnit(); } - - @Override - default double in(LinearAccelerationUnit unit) { + public double in(LinearAccelerationUnit unit) { return unit.fromBaseUnits(baseUnitMagnitude()); } @Override - default LinearAcceleration unaryMinus() { + @SuppressWarnings("rawtypes") + public boolean equals(Object object) { + return object instanceof LinearAcceleration m && isEquivalent(m); + } + + @Override + public LinearAcceleration unaryMinus() { return (LinearAcceleration) unit().ofBaseUnits(0 - baseUnitMagnitude()); } @@ -51,27 +60,27 @@ public interface LinearAcceleration extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default LinearAcceleration negate() { + public LinearAcceleration negate() { return (LinearAcceleration) unaryMinus(); } @Override - default LinearAcceleration plus(Measure other) { + public LinearAcceleration plus(Measure other) { return (LinearAcceleration) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude()); } @Override - default LinearAcceleration minus(Measure other) { + public LinearAcceleration minus(Measure other) { return (LinearAcceleration) unit().ofBaseUnits(baseUnitMagnitude() - other.baseUnitMagnitude()); } @Override - default LinearAcceleration times(double multiplier) { + public LinearAcceleration times(double multiplier) { return (LinearAcceleration) unit().ofBaseUnits(baseUnitMagnitude() * multiplier); } @Override - default LinearAcceleration div(double divisor) { + public LinearAcceleration div(double divisor) { return (LinearAcceleration) unit().ofBaseUnits(baseUnitMagnitude() / divisor); } @@ -83,18 +92,18 @@ public interface LinearAcceleration extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default LinearAcceleration divide(double divisor) { + public LinearAcceleration divide(double divisor) { return (LinearAcceleration) div(divisor); } @Override - default Mult> times(Acceleration multiplier) { + public Mult> times(Acceleration multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Acceleration divisor) { + public Per> div(Acceleration divisor) { return (Per>) Measure.super.div(divisor); } @@ -106,23 +115,23 @@ public interface LinearAcceleration extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Acceleration divisor) { + public Per> divide(Acceleration divisor) { return div(divisor); } @Override - default Per> per(AccelerationUnit divisorUnit) { + public Per> per(AccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Angle multiplier) { + public Mult times(Angle multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Angle divisor) { + public Per div(Angle divisor) { return (Per) Measure.super.div(divisor); } @@ -134,23 +143,23 @@ public interface LinearAcceleration extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Angle divisor) { + public Per divide(Angle divisor) { return div(divisor); } @Override - default Per per(AngleUnit divisorUnit) { + public Per per(AngleUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularAcceleration multiplier) { + public Mult times(AngularAcceleration multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularAcceleration divisor) { + public Per div(AngularAcceleration divisor) { return (Per) Measure.super.div(divisor); } @@ -162,23 +171,23 @@ public interface LinearAcceleration extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularAcceleration divisor) { + public Per divide(AngularAcceleration divisor) { return div(divisor); } @Override - default Per per(AngularAccelerationUnit divisorUnit) { + public Per per(AngularAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularMomentum multiplier) { + public Mult times(AngularMomentum multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularMomentum divisor) { + public Per div(AngularMomentum divisor) { return (Per) Measure.super.div(divisor); } @@ -190,23 +199,23 @@ public interface LinearAcceleration extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularMomentum divisor) { + public Per divide(AngularMomentum divisor) { return div(divisor); } @Override - default Per per(AngularMomentumUnit divisorUnit) { + public Per per(AngularMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularVelocity multiplier) { + public Mult times(AngularVelocity multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularVelocity divisor) { + public Per div(AngularVelocity divisor) { return (Per) Measure.super.div(divisor); } @@ -218,23 +227,23 @@ public interface LinearAcceleration extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularVelocity divisor) { + public Per divide(AngularVelocity divisor) { return div(divisor); } @Override - default Per per(AngularVelocityUnit divisorUnit) { + public Per per(AngularVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Current multiplier) { + public Mult times(Current multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Current divisor) { + public Per div(Current divisor) { return (Per) Measure.super.div(divisor); } @@ -246,17 +255,17 @@ public interface LinearAcceleration extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Current divisor) { + public Per divide(Current divisor) { return div(divisor); } @Override - default Per per(CurrentUnit divisorUnit) { + public Per per(CurrentUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default LinearAcceleration div(Dimensionless divisor) { + public LinearAcceleration div(Dimensionless divisor) { return (LinearAcceleration) MetersPerSecondPerSecond.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -268,23 +277,23 @@ public interface LinearAcceleration extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default LinearAcceleration divide(Dimensionless divisor) { + public LinearAcceleration divide(Dimensionless divisor) { return (LinearAcceleration) div(divisor); } @Override - default LinearAcceleration times(Dimensionless multiplier) { + public LinearAcceleration times(Dimensionless multiplier) { return (LinearAcceleration) MetersPerSecondPerSecond.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Mult times(Distance multiplier) { + public Mult times(Distance multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Distance divisor) { + public Per div(Distance divisor) { return (Per) Measure.super.div(divisor); } @@ -296,23 +305,23 @@ public interface LinearAcceleration extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Distance divisor) { + public Per divide(Distance divisor) { return div(divisor); } @Override - default Per per(DistanceUnit divisorUnit) { + public Per per(DistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Energy multiplier) { + public Mult times(Energy multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Energy divisor) { + public Per div(Energy divisor) { return (Per) Measure.super.div(divisor); } @@ -324,23 +333,23 @@ public interface LinearAcceleration extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Energy divisor) { + public Per divide(Energy divisor) { return div(divisor); } @Override - default Per per(EnergyUnit divisorUnit) { + public Per per(EnergyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Force multiplier) { + public Mult times(Force multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Force divisor) { + public Per div(Force divisor) { return (Per) Measure.super.div(divisor); } @@ -352,23 +361,23 @@ public interface LinearAcceleration extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Force divisor) { + public Per divide(Force divisor) { return div(divisor); } @Override - default Per per(ForceUnit divisorUnit) { + public Per per(ForceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Frequency multiplier) { + public Mult times(Frequency multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default LinearVelocity div(Frequency divisor) { + public LinearVelocity div(Frequency divisor) { return MetersPerSecond.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -380,23 +389,23 @@ public interface LinearAcceleration extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default LinearVelocity divide(Frequency divisor) { + public LinearVelocity divide(Frequency divisor) { return div(divisor); } @Override - default LinearVelocity per(FrequencyUnit divisorUnit) { + public LinearVelocity per(FrequencyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearAcceleration multiplier) { + public Mult times(LinearAcceleration multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Dimensionless div(LinearAcceleration divisor) { + public Dimensionless div(LinearAcceleration divisor) { return Value.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -408,23 +417,23 @@ public interface LinearAcceleration extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Dimensionless divide(LinearAcceleration divisor) { + public Dimensionless divide(LinearAcceleration divisor) { return div(divisor); } @Override - default Dimensionless per(LinearAccelerationUnit divisorUnit) { + public Dimensionless per(LinearAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearMomentum multiplier) { + public Mult times(LinearMomentum multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearMomentum divisor) { + public Per div(LinearMomentum divisor) { return (Per) Measure.super.div(divisor); } @@ -436,23 +445,23 @@ public interface LinearAcceleration extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearMomentum divisor) { + public Per divide(LinearMomentum divisor) { return div(divisor); } @Override - default Per per(LinearMomentumUnit divisorUnit) { + public Per per(LinearMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearVelocity multiplier) { + public Mult times(LinearVelocity multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearVelocity divisor) { + public Per div(LinearVelocity divisor) { return (Per) Measure.super.div(divisor); } @@ -464,23 +473,23 @@ public interface LinearAcceleration extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearVelocity divisor) { + public Per divide(LinearVelocity divisor) { return div(divisor); } @Override - default Per per(LinearVelocityUnit divisorUnit) { + public Per per(LinearVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Mass multiplier) { + public Mult times(Mass multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Mass divisor) { + public Per div(Mass divisor) { return (Per) Measure.super.div(divisor); } @@ -492,23 +501,23 @@ public interface LinearAcceleration extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Mass divisor) { + public Per divide(Mass divisor) { return div(divisor); } @Override - default Per per(MassUnit divisorUnit) { + public Per per(MassUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(MomentOfInertia multiplier) { + public Mult times(MomentOfInertia multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(MomentOfInertia divisor) { + public Per div(MomentOfInertia divisor) { return (Per) Measure.super.div(divisor); } @@ -520,23 +529,23 @@ public interface LinearAcceleration extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(MomentOfInertia divisor) { + public Per divide(MomentOfInertia divisor) { return div(divisor); } @Override - default Per per(MomentOfInertiaUnit divisorUnit) { + public Per per(MomentOfInertiaUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult> times(Mult multiplier) { + public Mult> times(Mult multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Mult divisor) { + public Per> div(Mult divisor) { return (Per>) Measure.super.div(divisor); } @@ -548,23 +557,23 @@ public interface LinearAcceleration extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Mult divisor) { + public Per> divide(Mult divisor) { return div(divisor); } @Override - default Per> per(MultUnit divisorUnit) { + public Per> per(MultUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult> times(Per multiplier) { + public Mult> times(Per multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Per divisor) { + public Per> div(Per divisor) { return (Per>) Measure.super.div(divisor); } @@ -576,23 +585,23 @@ public interface LinearAcceleration extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Per divisor) { + public Per> divide(Per divisor) { return div(divisor); } @Override - default Per> per(PerUnit divisorUnit) { + public Per> per(PerUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult times(Power multiplier) { + public Mult times(Power multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Power divisor) { + public Per div(Power divisor) { return (Per) Measure.super.div(divisor); } @@ -604,23 +613,23 @@ public interface LinearAcceleration extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Power divisor) { + public Per divide(Power divisor) { return div(divisor); } @Override - default Per per(PowerUnit divisorUnit) { + public Per per(PowerUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Resistance multiplier) { + public Mult times(Resistance multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Resistance divisor) { + public Per div(Resistance divisor) { return (Per) Measure.super.div(divisor); } @@ -632,23 +641,23 @@ public interface LinearAcceleration extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Resistance divisor) { + public Per divide(Resistance divisor) { return div(divisor); } @Override - default Per per(ResistanceUnit divisorUnit) { + public Per per(ResistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Temperature multiplier) { + public Mult times(Temperature multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Temperature divisor) { + public Per div(Temperature divisor) { return (Per) Measure.super.div(divisor); } @@ -660,23 +669,23 @@ public interface LinearAcceleration extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Temperature divisor) { + public Per divide(Temperature divisor) { return div(divisor); } @Override - default Per per(TemperatureUnit divisorUnit) { + public Per per(TemperatureUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default LinearVelocity times(Time multiplier) { + public LinearVelocity times(Time multiplier) { return MetersPerSecond.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Velocity div(Time divisor) { + public Velocity div(Time divisor) { return VelocityUnit.combine(unit(), divisor.unit()).ofBaseUnits(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -688,23 +697,23 @@ public interface LinearAcceleration extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Velocity divide(Time divisor) { + public Velocity divide(Time divisor) { return div(divisor); } @Override - default Velocity per(TimeUnit divisorUnit) { + public Velocity per(TimeUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Torque multiplier) { + public Mult times(Torque multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Torque divisor) { + public Per div(Torque divisor) { return (Per) Measure.super.div(divisor); } @@ -716,23 +725,23 @@ public interface LinearAcceleration extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Torque divisor) { + public Per divide(Torque divisor) { return div(divisor); } @Override - default Per per(TorqueUnit divisorUnit) { + public Per per(TorqueUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult> times(Velocity multiplier) { + public Mult> times(Velocity multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Velocity divisor) { + public Per> div(Velocity divisor) { return (Per>) Measure.super.div(divisor); } @@ -744,23 +753,23 @@ public interface LinearAcceleration extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Velocity divisor) { + public Per> divide(Velocity divisor) { return div(divisor); } @Override - default Per> per(VelocityUnit divisorUnit) { + public Per> per(VelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Voltage multiplier) { + public Mult times(Voltage multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Voltage divisor) { + public Per div(Voltage divisor) { return (Per) Measure.super.div(divisor); } @@ -772,12 +781,12 @@ public interface LinearAcceleration extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Voltage divisor) { + public Per divide(Voltage divisor) { return div(divisor); } @Override - default Per per(VoltageUnit divisorUnit) { + public Per per(VoltageUnit divisorUnit) { return div(divisorUnit.one()); } diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/LinearMomentum.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/LinearMomentum.java index c1bf6d7f11..9edfd7b3aa 100644 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/LinearMomentum.java +++ b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/LinearMomentum.java @@ -10,36 +10,45 @@ import static edu.wpi.first.units.Units.*; import edu.wpi.first.units.*; @SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public interface LinearMomentum extends Measure { - static LinearMomentum ofRelativeUnits(double magnitude, LinearMomentumUnit unit) { - return new ImmutableLinearMomentum(magnitude, unit.toBaseUnits(magnitude), unit); +public record LinearMomentum(double magnitude, double baseUnitMagnitude, LinearMomentumUnit unit) implements Measure { + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link LinearMomentumUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static LinearMomentum ofRelativeUnits(double magnitude, LinearMomentumUnit unit) { + return new LinearMomentum(magnitude, unit.toBaseUnits(magnitude), unit); } - static LinearMomentum ofBaseUnits(double baseUnitMagnitude, LinearMomentumUnit unit) { - return new ImmutableLinearMomentum(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link LinearMomentumUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit's base unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static LinearMomentum ofBaseUnits(double baseUnitMagnitude, LinearMomentumUnit unit) { + return new LinearMomentum(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); } @Override - LinearMomentum copy(); + public LinearMomentumUnit baseUnit() { return (LinearMomentumUnit) unit().getBaseUnit(); } @Override - default MutLinearMomentum mutableCopy() { - return new MutLinearMomentum(magnitude(), baseUnitMagnitude(), unit()); - } - - @Override - LinearMomentumUnit unit(); - - @Override - default LinearMomentumUnit baseUnit() { return (LinearMomentumUnit) unit().getBaseUnit(); } - - @Override - default double in(LinearMomentumUnit unit) { + public double in(LinearMomentumUnit unit) { return unit.fromBaseUnits(baseUnitMagnitude()); } @Override - default LinearMomentum unaryMinus() { + @SuppressWarnings("rawtypes") + public boolean equals(Object object) { + return object instanceof LinearMomentum m && isEquivalent(m); + } + + @Override + public LinearMomentum unaryMinus() { return (LinearMomentum) unit().ofBaseUnits(0 - baseUnitMagnitude()); } @@ -51,27 +60,27 @@ public interface LinearMomentum extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default LinearMomentum negate() { + public LinearMomentum negate() { return (LinearMomentum) unaryMinus(); } @Override - default LinearMomentum plus(Measure other) { + public LinearMomentum plus(Measure other) { return (LinearMomentum) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude()); } @Override - default LinearMomentum minus(Measure other) { + public LinearMomentum minus(Measure other) { return (LinearMomentum) unit().ofBaseUnits(baseUnitMagnitude() - other.baseUnitMagnitude()); } @Override - default LinearMomentum times(double multiplier) { + public LinearMomentum times(double multiplier) { return (LinearMomentum) unit().ofBaseUnits(baseUnitMagnitude() * multiplier); } @Override - default LinearMomentum div(double divisor) { + public LinearMomentum div(double divisor) { return (LinearMomentum) unit().ofBaseUnits(baseUnitMagnitude() / divisor); } @@ -83,18 +92,18 @@ public interface LinearMomentum extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default LinearMomentum divide(double divisor) { + public LinearMomentum divide(double divisor) { return (LinearMomentum) div(divisor); } @Override - default Mult> times(Acceleration multiplier) { + public Mult> times(Acceleration multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Acceleration divisor) { + public Per> div(Acceleration divisor) { return (Per>) Measure.super.div(divisor); } @@ -106,23 +115,23 @@ public interface LinearMomentum extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Acceleration divisor) { + public Per> divide(Acceleration divisor) { return div(divisor); } @Override - default Per> per(AccelerationUnit divisorUnit) { + public Per> per(AccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Angle multiplier) { + public Mult times(Angle multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Angle divisor) { + public Per div(Angle divisor) { return (Per) Measure.super.div(divisor); } @@ -134,23 +143,23 @@ public interface LinearMomentum extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Angle divisor) { + public Per divide(Angle divisor) { return div(divisor); } @Override - default Per per(AngleUnit divisorUnit) { + public Per per(AngleUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularAcceleration multiplier) { + public Mult times(AngularAcceleration multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularAcceleration divisor) { + public Per div(AngularAcceleration divisor) { return (Per) Measure.super.div(divisor); } @@ -162,23 +171,23 @@ public interface LinearMomentum extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularAcceleration divisor) { + public Per divide(AngularAcceleration divisor) { return div(divisor); } @Override - default Per per(AngularAccelerationUnit divisorUnit) { + public Per per(AngularAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularMomentum multiplier) { + public Mult times(AngularMomentum multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularMomentum divisor) { + public Per div(AngularMomentum divisor) { return (Per) Measure.super.div(divisor); } @@ -190,23 +199,23 @@ public interface LinearMomentum extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularMomentum divisor) { + public Per divide(AngularMomentum divisor) { return div(divisor); } @Override - default Per per(AngularMomentumUnit divisorUnit) { + public Per per(AngularMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularVelocity multiplier) { + public Mult times(AngularVelocity multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularVelocity divisor) { + public Per div(AngularVelocity divisor) { return (Per) Measure.super.div(divisor); } @@ -218,23 +227,23 @@ public interface LinearMomentum extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularVelocity divisor) { + public Per divide(AngularVelocity divisor) { return div(divisor); } @Override - default Per per(AngularVelocityUnit divisorUnit) { + public Per per(AngularVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Current multiplier) { + public Mult times(Current multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Current divisor) { + public Per div(Current divisor) { return (Per) Measure.super.div(divisor); } @@ -246,17 +255,17 @@ public interface LinearMomentum extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Current divisor) { + public Per divide(Current divisor) { return div(divisor); } @Override - default Per per(CurrentUnit divisorUnit) { + public Per per(CurrentUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default LinearMomentum div(Dimensionless divisor) { + public LinearMomentum div(Dimensionless divisor) { return (LinearMomentum) KilogramMetersPerSecond.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -268,23 +277,23 @@ public interface LinearMomentum extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default LinearMomentum divide(Dimensionless divisor) { + public LinearMomentum divide(Dimensionless divisor) { return (LinearMomentum) div(divisor); } @Override - default LinearMomentum times(Dimensionless multiplier) { + public LinearMomentum times(Dimensionless multiplier) { return (LinearMomentum) KilogramMetersPerSecond.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Mult times(Distance multiplier) { + public Mult times(Distance multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Distance divisor) { + public Per div(Distance divisor) { return (Per) Measure.super.div(divisor); } @@ -296,23 +305,23 @@ public interface LinearMomentum extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Distance divisor) { + public Per divide(Distance divisor) { return div(divisor); } @Override - default Per per(DistanceUnit divisorUnit) { + public Per per(DistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Energy multiplier) { + public Mult times(Energy multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Energy divisor) { + public Per div(Energy divisor) { return (Per) Measure.super.div(divisor); } @@ -324,23 +333,23 @@ public interface LinearMomentum extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Energy divisor) { + public Per divide(Energy divisor) { return div(divisor); } @Override - default Per per(EnergyUnit divisorUnit) { + public Per per(EnergyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Force multiplier) { + public Mult times(Force multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Force divisor) { + public Per div(Force divisor) { return (Per) Measure.super.div(divisor); } @@ -352,23 +361,23 @@ public interface LinearMomentum extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Force divisor) { + public Per divide(Force divisor) { return div(divisor); } @Override - default Per per(ForceUnit divisorUnit) { + public Per per(ForceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Force times(Frequency multiplier) { + public Force times(Frequency multiplier) { return Newtons.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Per div(Frequency divisor) { + public Per div(Frequency divisor) { return (Per) Measure.super.div(divisor); } @@ -380,23 +389,23 @@ public interface LinearMomentum extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Frequency divisor) { + public Per divide(Frequency divisor) { return div(divisor); } @Override - default Per per(FrequencyUnit divisorUnit) { + public Per per(FrequencyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearAcceleration multiplier) { + public Mult times(LinearAcceleration multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearAcceleration divisor) { + public Per div(LinearAcceleration divisor) { return (Per) Measure.super.div(divisor); } @@ -408,23 +417,23 @@ public interface LinearMomentum extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearAcceleration divisor) { + public Per divide(LinearAcceleration divisor) { return div(divisor); } @Override - default Per per(LinearAccelerationUnit divisorUnit) { + public Per per(LinearAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearMomentum multiplier) { + public Mult times(LinearMomentum multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Dimensionless div(LinearMomentum divisor) { + public Dimensionless div(LinearMomentum divisor) { return Value.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -436,23 +445,23 @@ public interface LinearMomentum extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Dimensionless divide(LinearMomentum divisor) { + public Dimensionless divide(LinearMomentum divisor) { return div(divisor); } @Override - default Dimensionless per(LinearMomentumUnit divisorUnit) { + public Dimensionless per(LinearMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearVelocity multiplier) { + public Mult times(LinearVelocity multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Mass div(LinearVelocity divisor) { + public Mass div(LinearVelocity divisor) { return Kilograms.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -464,23 +473,23 @@ public interface LinearMomentum extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Mass divide(LinearVelocity divisor) { + public Mass divide(LinearVelocity divisor) { return div(divisor); } @Override - default Mass per(LinearVelocityUnit divisorUnit) { + public Mass per(LinearVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Mass multiplier) { + public Mult times(Mass multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default LinearVelocity div(Mass divisor) { + public LinearVelocity div(Mass divisor) { return MetersPerSecond.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -492,23 +501,23 @@ public interface LinearMomentum extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default LinearVelocity divide(Mass divisor) { + public LinearVelocity divide(Mass divisor) { return div(divisor); } @Override - default LinearVelocity per(MassUnit divisorUnit) { + public LinearVelocity per(MassUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(MomentOfInertia multiplier) { + public Mult times(MomentOfInertia multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(MomentOfInertia divisor) { + public Per div(MomentOfInertia divisor) { return (Per) Measure.super.div(divisor); } @@ -520,23 +529,23 @@ public interface LinearMomentum extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(MomentOfInertia divisor) { + public Per divide(MomentOfInertia divisor) { return div(divisor); } @Override - default Per per(MomentOfInertiaUnit divisorUnit) { + public Per per(MomentOfInertiaUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult> times(Mult multiplier) { + public Mult> times(Mult multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Mult divisor) { + public Per> div(Mult divisor) { return (Per>) Measure.super.div(divisor); } @@ -548,23 +557,23 @@ public interface LinearMomentum extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Mult divisor) { + public Per> divide(Mult divisor) { return div(divisor); } @Override - default Per> per(MultUnit divisorUnit) { + public Per> per(MultUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult> times(Per multiplier) { + public Mult> times(Per multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Per divisor) { + public Per> div(Per divisor) { return (Per>) Measure.super.div(divisor); } @@ -576,23 +585,23 @@ public interface LinearMomentum extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Per divisor) { + public Per> divide(Per divisor) { return div(divisor); } @Override - default Per> per(PerUnit divisorUnit) { + public Per> per(PerUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult times(Power multiplier) { + public Mult times(Power multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Power divisor) { + public Per div(Power divisor) { return (Per) Measure.super.div(divisor); } @@ -604,23 +613,23 @@ public interface LinearMomentum extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Power divisor) { + public Per divide(Power divisor) { return div(divisor); } @Override - default Per per(PowerUnit divisorUnit) { + public Per per(PowerUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Resistance multiplier) { + public Mult times(Resistance multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Resistance divisor) { + public Per div(Resistance divisor) { return (Per) Measure.super.div(divisor); } @@ -632,23 +641,23 @@ public interface LinearMomentum extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Resistance divisor) { + public Per divide(Resistance divisor) { return div(divisor); } @Override - default Per per(ResistanceUnit divisorUnit) { + public Per per(ResistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Temperature multiplier) { + public Mult times(Temperature multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Temperature divisor) { + public Per div(Temperature divisor) { return (Per) Measure.super.div(divisor); } @@ -660,23 +669,23 @@ public interface LinearMomentum extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Temperature divisor) { + public Per divide(Temperature divisor) { return div(divisor); } @Override - default Per per(TemperatureUnit divisorUnit) { + public Per per(TemperatureUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Time multiplier) { + public Mult times(Time multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Force div(Time divisor) { + public Force div(Time divisor) { return Newtons.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -688,23 +697,23 @@ public interface LinearMomentum extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Force divide(Time divisor) { + public Force divide(Time divisor) { return div(divisor); } @Override - default Force per(TimeUnit divisorUnit) { + public Force per(TimeUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Torque multiplier) { + public Mult times(Torque multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Torque divisor) { + public Per div(Torque divisor) { return (Per) Measure.super.div(divisor); } @@ -716,23 +725,23 @@ public interface LinearMomentum extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Torque divisor) { + public Per divide(Torque divisor) { return div(divisor); } @Override - default Per per(TorqueUnit divisorUnit) { + public Per per(TorqueUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult> times(Velocity multiplier) { + public Mult> times(Velocity multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Velocity divisor) { + public Per> div(Velocity divisor) { return (Per>) Measure.super.div(divisor); } @@ -744,23 +753,23 @@ public interface LinearMomentum extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Velocity divisor) { + public Per> divide(Velocity divisor) { return div(divisor); } @Override - default Per> per(VelocityUnit divisorUnit) { + public Per> per(VelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Voltage multiplier) { + public Mult times(Voltage multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Voltage divisor) { + public Per div(Voltage divisor) { return (Per) Measure.super.div(divisor); } @@ -772,12 +781,12 @@ public interface LinearMomentum extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Voltage divisor) { + public Per divide(Voltage divisor) { return div(divisor); } @Override - default Per per(VoltageUnit divisorUnit) { + public Per per(VoltageUnit divisorUnit) { return div(divisorUnit.one()); } diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/LinearVelocity.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/LinearVelocity.java index 7ed8cc1e5f..22ccf2c295 100644 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/LinearVelocity.java +++ b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/LinearVelocity.java @@ -10,36 +10,45 @@ import static edu.wpi.first.units.Units.*; import edu.wpi.first.units.*; @SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public interface LinearVelocity extends Measure { - static LinearVelocity ofRelativeUnits(double magnitude, LinearVelocityUnit unit) { - return new ImmutableLinearVelocity(magnitude, unit.toBaseUnits(magnitude), unit); +public record LinearVelocity(double magnitude, double baseUnitMagnitude, LinearVelocityUnit unit) implements Measure { + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link LinearVelocityUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static LinearVelocity ofRelativeUnits(double magnitude, LinearVelocityUnit unit) { + return new LinearVelocity(magnitude, unit.toBaseUnits(magnitude), unit); } - static LinearVelocity ofBaseUnits(double baseUnitMagnitude, LinearVelocityUnit unit) { - return new ImmutableLinearVelocity(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link LinearVelocityUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit's base unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static LinearVelocity ofBaseUnits(double baseUnitMagnitude, LinearVelocityUnit unit) { + return new LinearVelocity(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); } @Override - LinearVelocity copy(); + public LinearVelocityUnit baseUnit() { return (LinearVelocityUnit) unit().getBaseUnit(); } @Override - default MutLinearVelocity mutableCopy() { - return new MutLinearVelocity(magnitude(), baseUnitMagnitude(), unit()); - } - - @Override - LinearVelocityUnit unit(); - - @Override - default LinearVelocityUnit baseUnit() { return (LinearVelocityUnit) unit().getBaseUnit(); } - - @Override - default double in(LinearVelocityUnit unit) { + public double in(LinearVelocityUnit unit) { return unit.fromBaseUnits(baseUnitMagnitude()); } @Override - default LinearVelocity unaryMinus() { + @SuppressWarnings("rawtypes") + public boolean equals(Object object) { + return object instanceof LinearVelocity m && isEquivalent(m); + } + + @Override + public LinearVelocity unaryMinus() { return (LinearVelocity) unit().ofBaseUnits(0 - baseUnitMagnitude()); } @@ -51,27 +60,27 @@ public interface LinearVelocity extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default LinearVelocity negate() { + public LinearVelocity negate() { return (LinearVelocity) unaryMinus(); } @Override - default LinearVelocity plus(Measure other) { + public LinearVelocity plus(Measure other) { return (LinearVelocity) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude()); } @Override - default LinearVelocity minus(Measure other) { + public LinearVelocity minus(Measure other) { return (LinearVelocity) unit().ofBaseUnits(baseUnitMagnitude() - other.baseUnitMagnitude()); } @Override - default LinearVelocity times(double multiplier) { + public LinearVelocity times(double multiplier) { return (LinearVelocity) unit().ofBaseUnits(baseUnitMagnitude() * multiplier); } @Override - default LinearVelocity div(double divisor) { + public LinearVelocity div(double divisor) { return (LinearVelocity) unit().ofBaseUnits(baseUnitMagnitude() / divisor); } @@ -83,18 +92,18 @@ public interface LinearVelocity extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default LinearVelocity divide(double divisor) { + public LinearVelocity divide(double divisor) { return (LinearVelocity) div(divisor); } @Override - default Mult> times(Acceleration multiplier) { + public Mult> times(Acceleration multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Acceleration divisor) { + public Per> div(Acceleration divisor) { return (Per>) Measure.super.div(divisor); } @@ -106,23 +115,23 @@ public interface LinearVelocity extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Acceleration divisor) { + public Per> divide(Acceleration divisor) { return div(divisor); } @Override - default Per> per(AccelerationUnit divisorUnit) { + public Per> per(AccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Angle multiplier) { + public Mult times(Angle multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Angle divisor) { + public Per div(Angle divisor) { return (Per) Measure.super.div(divisor); } @@ -134,23 +143,23 @@ public interface LinearVelocity extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Angle divisor) { + public Per divide(Angle divisor) { return div(divisor); } @Override - default Per per(AngleUnit divisorUnit) { + public Per per(AngleUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularAcceleration multiplier) { + public Mult times(AngularAcceleration multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularAcceleration divisor) { + public Per div(AngularAcceleration divisor) { return (Per) Measure.super.div(divisor); } @@ -162,23 +171,23 @@ public interface LinearVelocity extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularAcceleration divisor) { + public Per divide(AngularAcceleration divisor) { return div(divisor); } @Override - default Per per(AngularAccelerationUnit divisorUnit) { + public Per per(AngularAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularMomentum multiplier) { + public Mult times(AngularMomentum multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularMomentum divisor) { + public Per div(AngularMomentum divisor) { return (Per) Measure.super.div(divisor); } @@ -190,23 +199,23 @@ public interface LinearVelocity extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularMomentum divisor) { + public Per divide(AngularMomentum divisor) { return div(divisor); } @Override - default Per per(AngularMomentumUnit divisorUnit) { + public Per per(AngularMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularVelocity multiplier) { + public Mult times(AngularVelocity multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularVelocity divisor) { + public Per div(AngularVelocity divisor) { return (Per) Measure.super.div(divisor); } @@ -218,23 +227,23 @@ public interface LinearVelocity extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularVelocity divisor) { + public Per divide(AngularVelocity divisor) { return div(divisor); } @Override - default Per per(AngularVelocityUnit divisorUnit) { + public Per per(AngularVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Current multiplier) { + public Mult times(Current multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Current divisor) { + public Per div(Current divisor) { return (Per) Measure.super.div(divisor); } @@ -246,17 +255,17 @@ public interface LinearVelocity extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Current divisor) { + public Per divide(Current divisor) { return div(divisor); } @Override - default Per per(CurrentUnit divisorUnit) { + public Per per(CurrentUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default LinearVelocity div(Dimensionless divisor) { + public LinearVelocity div(Dimensionless divisor) { return (LinearVelocity) MetersPerSecond.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -268,23 +277,23 @@ public interface LinearVelocity extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default LinearVelocity divide(Dimensionless divisor) { + public LinearVelocity divide(Dimensionless divisor) { return (LinearVelocity) div(divisor); } @Override - default LinearVelocity times(Dimensionless multiplier) { + public LinearVelocity times(Dimensionless multiplier) { return (LinearVelocity) MetersPerSecond.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Mult times(Distance multiplier) { + public Mult times(Distance multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Distance divisor) { + public Per div(Distance divisor) { return (Per) Measure.super.div(divisor); } @@ -296,23 +305,23 @@ public interface LinearVelocity extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Distance divisor) { + public Per divide(Distance divisor) { return div(divisor); } @Override - default Per per(DistanceUnit divisorUnit) { + public Per per(DistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Energy multiplier) { + public Mult times(Energy multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Energy divisor) { + public Per div(Energy divisor) { return (Per) Measure.super.div(divisor); } @@ -324,23 +333,23 @@ public interface LinearVelocity extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Energy divisor) { + public Per divide(Energy divisor) { return div(divisor); } @Override - default Per per(EnergyUnit divisorUnit) { + public Per per(EnergyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Force multiplier) { + public Mult times(Force multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Force divisor) { + public Per div(Force divisor) { return (Per) Measure.super.div(divisor); } @@ -352,23 +361,23 @@ public interface LinearVelocity extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Force divisor) { + public Per divide(Force divisor) { return div(divisor); } @Override - default Per per(ForceUnit divisorUnit) { + public Per per(ForceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default LinearAcceleration times(Frequency multiplier) { + public LinearAcceleration times(Frequency multiplier) { return MetersPerSecondPerSecond.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Per div(Frequency divisor) { + public Per div(Frequency divisor) { return (Per) Measure.super.div(divisor); } @@ -380,23 +389,23 @@ public interface LinearVelocity extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Frequency divisor) { + public Per divide(Frequency divisor) { return div(divisor); } @Override - default Per per(FrequencyUnit divisorUnit) { + public Per per(FrequencyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearAcceleration multiplier) { + public Mult times(LinearAcceleration multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearAcceleration divisor) { + public Per div(LinearAcceleration divisor) { return (Per) Measure.super.div(divisor); } @@ -408,23 +417,23 @@ public interface LinearVelocity extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearAcceleration divisor) { + public Per divide(LinearAcceleration divisor) { return div(divisor); } @Override - default Per per(LinearAccelerationUnit divisorUnit) { + public Per per(LinearAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearMomentum multiplier) { + public Mult times(LinearMomentum multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearMomentum divisor) { + public Per div(LinearMomentum divisor) { return (Per) Measure.super.div(divisor); } @@ -436,23 +445,23 @@ public interface LinearVelocity extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearMomentum divisor) { + public Per divide(LinearMomentum divisor) { return div(divisor); } @Override - default Per per(LinearMomentumUnit divisorUnit) { + public Per per(LinearMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearVelocity multiplier) { + public Mult times(LinearVelocity multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Dimensionless div(LinearVelocity divisor) { + public Dimensionless div(LinearVelocity divisor) { return Value.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -464,23 +473,23 @@ public interface LinearVelocity extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Dimensionless divide(LinearVelocity divisor) { + public Dimensionless divide(LinearVelocity divisor) { return div(divisor); } @Override - default Dimensionless per(LinearVelocityUnit divisorUnit) { + public Dimensionless per(LinearVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Mass multiplier) { + public Mult times(Mass multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Mass divisor) { + public Per div(Mass divisor) { return (Per) Measure.super.div(divisor); } @@ -492,23 +501,23 @@ public interface LinearVelocity extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Mass divisor) { + public Per divide(Mass divisor) { return div(divisor); } @Override - default Per per(MassUnit divisorUnit) { + public Per per(MassUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(MomentOfInertia multiplier) { + public Mult times(MomentOfInertia multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(MomentOfInertia divisor) { + public Per div(MomentOfInertia divisor) { return (Per) Measure.super.div(divisor); } @@ -520,23 +529,23 @@ public interface LinearVelocity extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(MomentOfInertia divisor) { + public Per divide(MomentOfInertia divisor) { return div(divisor); } @Override - default Per per(MomentOfInertiaUnit divisorUnit) { + public Per per(MomentOfInertiaUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult> times(Mult multiplier) { + public Mult> times(Mult multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Mult divisor) { + public Per> div(Mult divisor) { return (Per>) Measure.super.div(divisor); } @@ -548,23 +557,23 @@ public interface LinearVelocity extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Mult divisor) { + public Per> divide(Mult divisor) { return div(divisor); } @Override - default Per> per(MultUnit divisorUnit) { + public Per> per(MultUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult> times(Per multiplier) { + public Mult> times(Per multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Per divisor) { + public Per> div(Per divisor) { return (Per>) Measure.super.div(divisor); } @@ -576,23 +585,23 @@ public interface LinearVelocity extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Per divisor) { + public Per> divide(Per divisor) { return div(divisor); } @Override - default Per> per(PerUnit divisorUnit) { + public Per> per(PerUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult times(Power multiplier) { + public Mult times(Power multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Power divisor) { + public Per div(Power divisor) { return (Per) Measure.super.div(divisor); } @@ -604,23 +613,23 @@ public interface LinearVelocity extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Power divisor) { + public Per divide(Power divisor) { return div(divisor); } @Override - default Per per(PowerUnit divisorUnit) { + public Per per(PowerUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Resistance multiplier) { + public Mult times(Resistance multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Resistance divisor) { + public Per div(Resistance divisor) { return (Per) Measure.super.div(divisor); } @@ -632,23 +641,23 @@ public interface LinearVelocity extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Resistance divisor) { + public Per divide(Resistance divisor) { return div(divisor); } @Override - default Per per(ResistanceUnit divisorUnit) { + public Per per(ResistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Temperature multiplier) { + public Mult times(Temperature multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Temperature divisor) { + public Per div(Temperature divisor) { return (Per) Measure.super.div(divisor); } @@ -660,23 +669,23 @@ public interface LinearVelocity extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Temperature divisor) { + public Per divide(Temperature divisor) { return div(divisor); } @Override - default Per per(TemperatureUnit divisorUnit) { + public Per per(TemperatureUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Distance times(Time multiplier) { + public Distance times(Time multiplier) { return Meters.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default LinearAcceleration div(Time divisor) { + public LinearAcceleration div(Time divisor) { return MetersPerSecondPerSecond.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -688,23 +697,23 @@ public interface LinearVelocity extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default LinearAcceleration divide(Time divisor) { + public LinearAcceleration divide(Time divisor) { return div(divisor); } @Override - default LinearAcceleration per(TimeUnit divisorUnit) { + public LinearAcceleration per(TimeUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Torque multiplier) { + public Mult times(Torque multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Torque divisor) { + public Per div(Torque divisor) { return (Per) Measure.super.div(divisor); } @@ -716,23 +725,23 @@ public interface LinearVelocity extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Torque divisor) { + public Per divide(Torque divisor) { return div(divisor); } @Override - default Per per(TorqueUnit divisorUnit) { + public Per per(TorqueUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult> times(Velocity multiplier) { + public Mult> times(Velocity multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Velocity divisor) { + public Per> div(Velocity divisor) { return (Per>) Measure.super.div(divisor); } @@ -744,23 +753,23 @@ public interface LinearVelocity extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Velocity divisor) { + public Per> divide(Velocity divisor) { return div(divisor); } @Override - default Per> per(VelocityUnit divisorUnit) { + public Per> per(VelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Voltage multiplier) { + public Mult times(Voltage multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Voltage divisor) { + public Per div(Voltage divisor) { return (Per) Measure.super.div(divisor); } @@ -772,12 +781,12 @@ public interface LinearVelocity extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Voltage divisor) { + public Per divide(Voltage divisor) { return div(divisor); } @Override - default Per per(VoltageUnit divisorUnit) { + public Per per(VoltageUnit divisorUnit) { return div(divisorUnit.one()); } diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Mass.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Mass.java index 507977df5c..b21a119ae8 100644 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Mass.java +++ b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Mass.java @@ -10,36 +10,45 @@ import static edu.wpi.first.units.Units.*; import edu.wpi.first.units.*; @SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public interface Mass extends Measure { - static Mass ofRelativeUnits(double magnitude, MassUnit unit) { - return new ImmutableMass(magnitude, unit.toBaseUnits(magnitude), unit); +public record Mass(double magnitude, double baseUnitMagnitude, MassUnit unit) implements Measure { + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link MassUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static Mass ofRelativeUnits(double magnitude, MassUnit unit) { + return new Mass(magnitude, unit.toBaseUnits(magnitude), unit); } - static Mass ofBaseUnits(double baseUnitMagnitude, MassUnit unit) { - return new ImmutableMass(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link MassUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit's base unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static Mass ofBaseUnits(double baseUnitMagnitude, MassUnit unit) { + return new Mass(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); } @Override - Mass copy(); + public MassUnit baseUnit() { return (MassUnit) unit().getBaseUnit(); } @Override - default MutMass mutableCopy() { - return new MutMass(magnitude(), baseUnitMagnitude(), unit()); - } - - @Override - MassUnit unit(); - - @Override - default MassUnit baseUnit() { return (MassUnit) unit().getBaseUnit(); } - - @Override - default double in(MassUnit unit) { + public double in(MassUnit unit) { return unit.fromBaseUnits(baseUnitMagnitude()); } @Override - default Mass unaryMinus() { + @SuppressWarnings("rawtypes") + public boolean equals(Object object) { + return object instanceof Mass m && isEquivalent(m); + } + + @Override + public Mass unaryMinus() { return (Mass) unit().ofBaseUnits(0 - baseUnitMagnitude()); } @@ -51,27 +60,27 @@ public interface Mass extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Mass negate() { + public Mass negate() { return (Mass) unaryMinus(); } @Override - default Mass plus(Measure other) { + public Mass plus(Measure other) { return (Mass) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude()); } @Override - default Mass minus(Measure other) { + public Mass minus(Measure other) { return (Mass) unit().ofBaseUnits(baseUnitMagnitude() - other.baseUnitMagnitude()); } @Override - default Mass times(double multiplier) { + public Mass times(double multiplier) { return (Mass) unit().ofBaseUnits(baseUnitMagnitude() * multiplier); } @Override - default Mass div(double divisor) { + public Mass div(double divisor) { return (Mass) unit().ofBaseUnits(baseUnitMagnitude() / divisor); } @@ -83,18 +92,18 @@ public interface Mass extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Mass divide(double divisor) { + public Mass divide(double divisor) { return (Mass) div(divisor); } @Override - default Mult> times(Acceleration multiplier) { + public Mult> times(Acceleration multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Acceleration divisor) { + public Per> div(Acceleration divisor) { return (Per>) Measure.super.div(divisor); } @@ -106,23 +115,23 @@ public interface Mass extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Acceleration divisor) { + public Per> divide(Acceleration divisor) { return div(divisor); } @Override - default Per> per(AccelerationUnit divisorUnit) { + public Per> per(AccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Angle multiplier) { + public Mult times(Angle multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Angle divisor) { + public Per div(Angle divisor) { return (Per) Measure.super.div(divisor); } @@ -134,23 +143,23 @@ public interface Mass extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Angle divisor) { + public Per divide(Angle divisor) { return div(divisor); } @Override - default Per per(AngleUnit divisorUnit) { + public Per per(AngleUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularAcceleration multiplier) { + public Mult times(AngularAcceleration multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularAcceleration divisor) { + public Per div(AngularAcceleration divisor) { return (Per) Measure.super.div(divisor); } @@ -162,23 +171,23 @@ public interface Mass extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularAcceleration divisor) { + public Per divide(AngularAcceleration divisor) { return div(divisor); } @Override - default Per per(AngularAccelerationUnit divisorUnit) { + public Per per(AngularAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularMomentum multiplier) { + public Mult times(AngularMomentum multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularMomentum divisor) { + public Per div(AngularMomentum divisor) { return (Per) Measure.super.div(divisor); } @@ -190,23 +199,23 @@ public interface Mass extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularMomentum divisor) { + public Per divide(AngularMomentum divisor) { return div(divisor); } @Override - default Per per(AngularMomentumUnit divisorUnit) { + public Per per(AngularMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularVelocity multiplier) { + public Mult times(AngularVelocity multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularVelocity divisor) { + public Per div(AngularVelocity divisor) { return (Per) Measure.super.div(divisor); } @@ -218,23 +227,23 @@ public interface Mass extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularVelocity divisor) { + public Per divide(AngularVelocity divisor) { return div(divisor); } @Override - default Per per(AngularVelocityUnit divisorUnit) { + public Per per(AngularVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Current multiplier) { + public Mult times(Current multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Current divisor) { + public Per div(Current divisor) { return (Per) Measure.super.div(divisor); } @@ -246,17 +255,17 @@ public interface Mass extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Current divisor) { + public Per divide(Current divisor) { return div(divisor); } @Override - default Per per(CurrentUnit divisorUnit) { + public Per per(CurrentUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mass div(Dimensionless divisor) { + public Mass div(Dimensionless divisor) { return (Mass) Kilograms.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -268,23 +277,23 @@ public interface Mass extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Mass divide(Dimensionless divisor) { + public Mass divide(Dimensionless divisor) { return (Mass) div(divisor); } @Override - default Mass times(Dimensionless multiplier) { + public Mass times(Dimensionless multiplier) { return (Mass) Kilograms.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Mult times(Distance multiplier) { + public Mult times(Distance multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Distance divisor) { + public Per div(Distance divisor) { return (Per) Measure.super.div(divisor); } @@ -296,23 +305,23 @@ public interface Mass extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Distance divisor) { + public Per divide(Distance divisor) { return div(divisor); } @Override - default Per per(DistanceUnit divisorUnit) { + public Per per(DistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Energy multiplier) { + public Mult times(Energy multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Energy divisor) { + public Per div(Energy divisor) { return (Per) Measure.super.div(divisor); } @@ -324,23 +333,23 @@ public interface Mass extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Energy divisor) { + public Per divide(Energy divisor) { return div(divisor); } @Override - default Per per(EnergyUnit divisorUnit) { + public Per per(EnergyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Force multiplier) { + public Mult times(Force multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Force divisor) { + public Per div(Force divisor) { return (Per) Measure.super.div(divisor); } @@ -352,23 +361,23 @@ public interface Mass extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Force divisor) { + public Per divide(Force divisor) { return div(divisor); } @Override - default Per per(ForceUnit divisorUnit) { + public Per per(ForceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Frequency multiplier) { + public Mult times(Frequency multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Frequency divisor) { + public Per div(Frequency divisor) { return (Per) Measure.super.div(divisor); } @@ -380,23 +389,23 @@ public interface Mass extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Frequency divisor) { + public Per divide(Frequency divisor) { return div(divisor); } @Override - default Per per(FrequencyUnit divisorUnit) { + public Per per(FrequencyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Force times(LinearAcceleration multiplier) { + public Force times(LinearAcceleration multiplier) { return Newtons.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Per div(LinearAcceleration divisor) { + public Per div(LinearAcceleration divisor) { return (Per) Measure.super.div(divisor); } @@ -408,23 +417,23 @@ public interface Mass extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearAcceleration divisor) { + public Per divide(LinearAcceleration divisor) { return div(divisor); } @Override - default Per per(LinearAccelerationUnit divisorUnit) { + public Per per(LinearAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearMomentum multiplier) { + public Mult times(LinearMomentum multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearMomentum divisor) { + public Per div(LinearMomentum divisor) { return (Per) Measure.super.div(divisor); } @@ -436,23 +445,23 @@ public interface Mass extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearMomentum divisor) { + public Per divide(LinearMomentum divisor) { return div(divisor); } @Override - default Per per(LinearMomentumUnit divisorUnit) { + public Per per(LinearMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearVelocity multiplier) { + public Mult times(LinearVelocity multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearVelocity divisor) { + public Per div(LinearVelocity divisor) { return (Per) Measure.super.div(divisor); } @@ -464,23 +473,23 @@ public interface Mass extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearVelocity divisor) { + public Per divide(LinearVelocity divisor) { return div(divisor); } @Override - default Per per(LinearVelocityUnit divisorUnit) { + public Per per(LinearVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Mass multiplier) { + public Mult times(Mass multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Dimensionless div(Mass divisor) { + public Dimensionless div(Mass divisor) { return Value.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -492,23 +501,23 @@ public interface Mass extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Dimensionless divide(Mass divisor) { + public Dimensionless divide(Mass divisor) { return div(divisor); } @Override - default Dimensionless per(MassUnit divisorUnit) { + public Dimensionless per(MassUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(MomentOfInertia multiplier) { + public Mult times(MomentOfInertia multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(MomentOfInertia divisor) { + public Per div(MomentOfInertia divisor) { return (Per) Measure.super.div(divisor); } @@ -520,23 +529,23 @@ public interface Mass extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(MomentOfInertia divisor) { + public Per divide(MomentOfInertia divisor) { return div(divisor); } @Override - default Per per(MomentOfInertiaUnit divisorUnit) { + public Per per(MomentOfInertiaUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult> times(Mult multiplier) { + public Mult> times(Mult multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Mult divisor) { + public Per> div(Mult divisor) { return (Per>) Measure.super.div(divisor); } @@ -548,23 +557,23 @@ public interface Mass extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Mult divisor) { + public Per> divide(Mult divisor) { return div(divisor); } @Override - default Per> per(MultUnit divisorUnit) { + public Per> per(MultUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult> times(Per multiplier) { + public Mult> times(Per multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Per divisor) { + public Per> div(Per divisor) { return (Per>) Measure.super.div(divisor); } @@ -576,23 +585,23 @@ public interface Mass extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Per divisor) { + public Per> divide(Per divisor) { return div(divisor); } @Override - default Per> per(PerUnit divisorUnit) { + public Per> per(PerUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult times(Power multiplier) { + public Mult times(Power multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Power divisor) { + public Per div(Power divisor) { return (Per) Measure.super.div(divisor); } @@ -604,23 +613,23 @@ public interface Mass extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Power divisor) { + public Per divide(Power divisor) { return div(divisor); } @Override - default Per per(PowerUnit divisorUnit) { + public Per per(PowerUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Resistance multiplier) { + public Mult times(Resistance multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Resistance divisor) { + public Per div(Resistance divisor) { return (Per) Measure.super.div(divisor); } @@ -632,23 +641,23 @@ public interface Mass extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Resistance divisor) { + public Per divide(Resistance divisor) { return div(divisor); } @Override - default Per per(ResistanceUnit divisorUnit) { + public Per per(ResistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Temperature multiplier) { + public Mult times(Temperature multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Temperature divisor) { + public Per div(Temperature divisor) { return (Per) Measure.super.div(divisor); } @@ -660,23 +669,23 @@ public interface Mass extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Temperature divisor) { + public Per divide(Temperature divisor) { return div(divisor); } @Override - default Per per(TemperatureUnit divisorUnit) { + public Per per(TemperatureUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Time multiplier) { + public Mult times(Time multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Velocity div(Time divisor) { + public Velocity div(Time divisor) { return VelocityUnit.combine(unit(), divisor.unit()).ofBaseUnits(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -688,23 +697,23 @@ public interface Mass extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Velocity divide(Time divisor) { + public Velocity divide(Time divisor) { return div(divisor); } @Override - default Velocity per(TimeUnit divisorUnit) { + public Velocity per(TimeUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Torque multiplier) { + public Mult times(Torque multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Torque divisor) { + public Per div(Torque divisor) { return (Per) Measure.super.div(divisor); } @@ -716,23 +725,23 @@ public interface Mass extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Torque divisor) { + public Per divide(Torque divisor) { return div(divisor); } @Override - default Per per(TorqueUnit divisorUnit) { + public Per per(TorqueUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult> times(Velocity multiplier) { + public Mult> times(Velocity multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Velocity divisor) { + public Per> div(Velocity divisor) { return (Per>) Measure.super.div(divisor); } @@ -744,23 +753,23 @@ public interface Mass extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Velocity divisor) { + public Per> divide(Velocity divisor) { return div(divisor); } @Override - default Per> per(VelocityUnit divisorUnit) { + public Per> per(VelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Voltage multiplier) { + public Mult times(Voltage multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Voltage divisor) { + public Per div(Voltage divisor) { return (Per) Measure.super.div(divisor); } @@ -772,12 +781,12 @@ public interface Mass extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Voltage divisor) { + public Per divide(Voltage divisor) { return div(divisor); } @Override - default Per per(VoltageUnit divisorUnit) { + public Per per(VoltageUnit divisorUnit) { return div(divisorUnit.one()); } diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MomentOfInertia.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MomentOfInertia.java index 21f04fbeb7..06aa4b636e 100644 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MomentOfInertia.java +++ b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MomentOfInertia.java @@ -10,36 +10,45 @@ import static edu.wpi.first.units.Units.*; import edu.wpi.first.units.*; @SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public interface MomentOfInertia extends Measure { - static MomentOfInertia ofRelativeUnits(double magnitude, MomentOfInertiaUnit unit) { - return new ImmutableMomentOfInertia(magnitude, unit.toBaseUnits(magnitude), unit); +public record MomentOfInertia(double magnitude, double baseUnitMagnitude, MomentOfInertiaUnit unit) implements Measure { + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link MomentOfInertiaUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static MomentOfInertia ofRelativeUnits(double magnitude, MomentOfInertiaUnit unit) { + return new MomentOfInertia(magnitude, unit.toBaseUnits(magnitude), unit); } - static MomentOfInertia ofBaseUnits(double baseUnitMagnitude, MomentOfInertiaUnit unit) { - return new ImmutableMomentOfInertia(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link MomentOfInertiaUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit's base unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static MomentOfInertia ofBaseUnits(double baseUnitMagnitude, MomentOfInertiaUnit unit) { + return new MomentOfInertia(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); } @Override - MomentOfInertia copy(); + public MomentOfInertiaUnit baseUnit() { return (MomentOfInertiaUnit) unit().getBaseUnit(); } @Override - default MutMomentOfInertia mutableCopy() { - return new MutMomentOfInertia(magnitude(), baseUnitMagnitude(), unit()); - } - - @Override - MomentOfInertiaUnit unit(); - - @Override - default MomentOfInertiaUnit baseUnit() { return (MomentOfInertiaUnit) unit().getBaseUnit(); } - - @Override - default double in(MomentOfInertiaUnit unit) { + public double in(MomentOfInertiaUnit unit) { return unit.fromBaseUnits(baseUnitMagnitude()); } @Override - default MomentOfInertia unaryMinus() { + @SuppressWarnings("rawtypes") + public boolean equals(Object object) { + return object instanceof MomentOfInertia m && isEquivalent(m); + } + + @Override + public MomentOfInertia unaryMinus() { return (MomentOfInertia) unit().ofBaseUnits(0 - baseUnitMagnitude()); } @@ -51,27 +60,27 @@ public interface MomentOfInertia extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default MomentOfInertia negate() { + public MomentOfInertia negate() { return (MomentOfInertia) unaryMinus(); } @Override - default MomentOfInertia plus(Measure other) { + public MomentOfInertia plus(Measure other) { return (MomentOfInertia) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude()); } @Override - default MomentOfInertia minus(Measure other) { + public MomentOfInertia minus(Measure other) { return (MomentOfInertia) unit().ofBaseUnits(baseUnitMagnitude() - other.baseUnitMagnitude()); } @Override - default MomentOfInertia times(double multiplier) { + public MomentOfInertia times(double multiplier) { return (MomentOfInertia) unit().ofBaseUnits(baseUnitMagnitude() * multiplier); } @Override - default MomentOfInertia div(double divisor) { + public MomentOfInertia div(double divisor) { return (MomentOfInertia) unit().ofBaseUnits(baseUnitMagnitude() / divisor); } @@ -83,18 +92,18 @@ public interface MomentOfInertia extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default MomentOfInertia divide(double divisor) { + public MomentOfInertia divide(double divisor) { return (MomentOfInertia) div(divisor); } @Override - default Mult> times(Acceleration multiplier) { + public Mult> times(Acceleration multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Acceleration divisor) { + public Per> div(Acceleration divisor) { return (Per>) Measure.super.div(divisor); } @@ -106,23 +115,23 @@ public interface MomentOfInertia extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Acceleration divisor) { + public Per> divide(Acceleration divisor) { return div(divisor); } @Override - default Per> per(AccelerationUnit divisorUnit) { + public Per> per(AccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Angle multiplier) { + public Mult times(Angle multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Angle divisor) { + public Per div(Angle divisor) { return (Per) Measure.super.div(divisor); } @@ -134,23 +143,23 @@ public interface MomentOfInertia extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Angle divisor) { + public Per divide(Angle divisor) { return div(divisor); } @Override - default Per per(AngleUnit divisorUnit) { + public Per per(AngleUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularAcceleration multiplier) { + public Mult times(AngularAcceleration multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularAcceleration divisor) { + public Per div(AngularAcceleration divisor) { return (Per) Measure.super.div(divisor); } @@ -162,23 +171,23 @@ public interface MomentOfInertia extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularAcceleration divisor) { + public Per divide(AngularAcceleration divisor) { return div(divisor); } @Override - default Per per(AngularAccelerationUnit divisorUnit) { + public Per per(AngularAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularMomentum multiplier) { + public Mult times(AngularMomentum multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularMomentum divisor) { + public Per div(AngularMomentum divisor) { return (Per) Measure.super.div(divisor); } @@ -190,23 +199,23 @@ public interface MomentOfInertia extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularMomentum divisor) { + public Per divide(AngularMomentum divisor) { return div(divisor); } @Override - default Per per(AngularMomentumUnit divisorUnit) { + public Per per(AngularMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default AngularMomentum times(AngularVelocity multiplier) { + public AngularMomentum times(AngularVelocity multiplier) { return KilogramMetersSquaredPerSecond.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Per div(AngularVelocity divisor) { + public Per div(AngularVelocity divisor) { return (Per) Measure.super.div(divisor); } @@ -218,23 +227,23 @@ public interface MomentOfInertia extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularVelocity divisor) { + public Per divide(AngularVelocity divisor) { return div(divisor); } @Override - default Per per(AngularVelocityUnit divisorUnit) { + public Per per(AngularVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Current multiplier) { + public Mult times(Current multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Current divisor) { + public Per div(Current divisor) { return (Per) Measure.super.div(divisor); } @@ -246,17 +255,17 @@ public interface MomentOfInertia extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Current divisor) { + public Per divide(Current divisor) { return div(divisor); } @Override - default Per per(CurrentUnit divisorUnit) { + public Per per(CurrentUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default MomentOfInertia div(Dimensionless divisor) { + public MomentOfInertia div(Dimensionless divisor) { return (MomentOfInertia) KilogramSquareMeters.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -268,23 +277,23 @@ public interface MomentOfInertia extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default MomentOfInertia divide(Dimensionless divisor) { + public MomentOfInertia divide(Dimensionless divisor) { return (MomentOfInertia) div(divisor); } @Override - default MomentOfInertia times(Dimensionless multiplier) { + public MomentOfInertia times(Dimensionless multiplier) { return (MomentOfInertia) KilogramSquareMeters.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Mult times(Distance multiplier) { + public Mult times(Distance multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Distance divisor) { + public Per div(Distance divisor) { return (Per) Measure.super.div(divisor); } @@ -296,23 +305,23 @@ public interface MomentOfInertia extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Distance divisor) { + public Per divide(Distance divisor) { return div(divisor); } @Override - default Per per(DistanceUnit divisorUnit) { + public Per per(DistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Energy multiplier) { + public Mult times(Energy multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Energy divisor) { + public Per div(Energy divisor) { return (Per) Measure.super.div(divisor); } @@ -324,23 +333,23 @@ public interface MomentOfInertia extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Energy divisor) { + public Per divide(Energy divisor) { return div(divisor); } @Override - default Per per(EnergyUnit divisorUnit) { + public Per per(EnergyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Force multiplier) { + public Mult times(Force multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Force divisor) { + public Per div(Force divisor) { return (Per) Measure.super.div(divisor); } @@ -352,23 +361,23 @@ public interface MomentOfInertia extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Force divisor) { + public Per divide(Force divisor) { return div(divisor); } @Override - default Per per(ForceUnit divisorUnit) { + public Per per(ForceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Frequency multiplier) { + public Mult times(Frequency multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Frequency divisor) { + public Per div(Frequency divisor) { return (Per) Measure.super.div(divisor); } @@ -380,23 +389,23 @@ public interface MomentOfInertia extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Frequency divisor) { + public Per divide(Frequency divisor) { return div(divisor); } @Override - default Per per(FrequencyUnit divisorUnit) { + public Per per(FrequencyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearAcceleration multiplier) { + public Mult times(LinearAcceleration multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearAcceleration divisor) { + public Per div(LinearAcceleration divisor) { return (Per) Measure.super.div(divisor); } @@ -408,23 +417,23 @@ public interface MomentOfInertia extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearAcceleration divisor) { + public Per divide(LinearAcceleration divisor) { return div(divisor); } @Override - default Per per(LinearAccelerationUnit divisorUnit) { + public Per per(LinearAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearMomentum multiplier) { + public Mult times(LinearMomentum multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearMomentum divisor) { + public Per div(LinearMomentum divisor) { return (Per) Measure.super.div(divisor); } @@ -436,23 +445,23 @@ public interface MomentOfInertia extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearMomentum divisor) { + public Per divide(LinearMomentum divisor) { return div(divisor); } @Override - default Per per(LinearMomentumUnit divisorUnit) { + public Per per(LinearMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearVelocity multiplier) { + public Mult times(LinearVelocity multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearVelocity divisor) { + public Per div(LinearVelocity divisor) { return (Per) Measure.super.div(divisor); } @@ -464,23 +473,23 @@ public interface MomentOfInertia extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearVelocity divisor) { + public Per divide(LinearVelocity divisor) { return div(divisor); } @Override - default Per per(LinearVelocityUnit divisorUnit) { + public Per per(LinearVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Mass multiplier) { + public Mult times(Mass multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Mass divisor) { + public Per div(Mass divisor) { return (Per) Measure.super.div(divisor); } @@ -492,23 +501,23 @@ public interface MomentOfInertia extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Mass divisor) { + public Per divide(Mass divisor) { return div(divisor); } @Override - default Per per(MassUnit divisorUnit) { + public Per per(MassUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(MomentOfInertia multiplier) { + public Mult times(MomentOfInertia multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Dimensionless div(MomentOfInertia divisor) { + public Dimensionless div(MomentOfInertia divisor) { return Value.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -520,23 +529,23 @@ public interface MomentOfInertia extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Dimensionless divide(MomentOfInertia divisor) { + public Dimensionless divide(MomentOfInertia divisor) { return div(divisor); } @Override - default Dimensionless per(MomentOfInertiaUnit divisorUnit) { + public Dimensionless per(MomentOfInertiaUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult> times(Mult multiplier) { + public Mult> times(Mult multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Mult divisor) { + public Per> div(Mult divisor) { return (Per>) Measure.super.div(divisor); } @@ -548,23 +557,23 @@ public interface MomentOfInertia extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Mult divisor) { + public Per> divide(Mult divisor) { return div(divisor); } @Override - default Per> per(MultUnit divisorUnit) { + public Per> per(MultUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult> times(Per multiplier) { + public Mult> times(Per multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Per divisor) { + public Per> div(Per divisor) { return (Per>) Measure.super.div(divisor); } @@ -576,23 +585,23 @@ public interface MomentOfInertia extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Per divisor) { + public Per> divide(Per divisor) { return div(divisor); } @Override - default Per> per(PerUnit divisorUnit) { + public Per> per(PerUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult times(Power multiplier) { + public Mult times(Power multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Power divisor) { + public Per div(Power divisor) { return (Per) Measure.super.div(divisor); } @@ -604,23 +613,23 @@ public interface MomentOfInertia extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Power divisor) { + public Per divide(Power divisor) { return div(divisor); } @Override - default Per per(PowerUnit divisorUnit) { + public Per per(PowerUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Resistance multiplier) { + public Mult times(Resistance multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Resistance divisor) { + public Per div(Resistance divisor) { return (Per) Measure.super.div(divisor); } @@ -632,23 +641,23 @@ public interface MomentOfInertia extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Resistance divisor) { + public Per divide(Resistance divisor) { return div(divisor); } @Override - default Per per(ResistanceUnit divisorUnit) { + public Per per(ResistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Temperature multiplier) { + public Mult times(Temperature multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Temperature divisor) { + public Per div(Temperature divisor) { return (Per) Measure.super.div(divisor); } @@ -660,23 +669,23 @@ public interface MomentOfInertia extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Temperature divisor) { + public Per divide(Temperature divisor) { return div(divisor); } @Override - default Per per(TemperatureUnit divisorUnit) { + public Per per(TemperatureUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Time multiplier) { + public Mult times(Time multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Velocity div(Time divisor) { + public Velocity div(Time divisor) { return VelocityUnit.combine(unit(), divisor.unit()).ofBaseUnits(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -688,23 +697,23 @@ public interface MomentOfInertia extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Velocity divide(Time divisor) { + public Velocity divide(Time divisor) { return div(divisor); } @Override - default Velocity per(TimeUnit divisorUnit) { + public Velocity per(TimeUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Torque multiplier) { + public Mult times(Torque multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Torque divisor) { + public Per div(Torque divisor) { return (Per) Measure.super.div(divisor); } @@ -716,23 +725,23 @@ public interface MomentOfInertia extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Torque divisor) { + public Per divide(Torque divisor) { return div(divisor); } @Override - default Per per(TorqueUnit divisorUnit) { + public Per per(TorqueUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult> times(Velocity multiplier) { + public Mult> times(Velocity multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Velocity divisor) { + public Per> div(Velocity divisor) { return (Per>) Measure.super.div(divisor); } @@ -744,23 +753,23 @@ public interface MomentOfInertia extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Velocity divisor) { + public Per> divide(Velocity divisor) { return div(divisor); } @Override - default Per> per(VelocityUnit divisorUnit) { + public Per> per(VelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Voltage multiplier) { + public Mult times(Voltage multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Voltage divisor) { + public Per div(Voltage divisor) { return (Per) Measure.super.div(divisor); } @@ -772,12 +781,12 @@ public interface MomentOfInertia extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Voltage divisor) { + public Per divide(Voltage divisor) { return div(divisor); } @Override - default Per per(VoltageUnit divisorUnit) { + public Per per(VoltageUnit divisorUnit) { return div(divisorUnit.one()); } diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Mult.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Mult.java index 5cee72363d..a9c0eadc87 100644 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Mult.java +++ b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Mult.java @@ -10,36 +10,45 @@ import static edu.wpi.first.units.Units.*; import edu.wpi.first.units.*; @SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public interface Mult extends Measure> { - static Mult ofRelativeUnits(double magnitude, MultUnit unit) { - return new ImmutableMult(magnitude, unit.toBaseUnits(magnitude), unit); +public record Mult(double magnitude, double baseUnitMagnitude, MultUnit unit) implements Measure> { + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link MultUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static Mult ofRelativeUnits(double magnitude, MultUnit unit) { + return new Mult(magnitude, unit.toBaseUnits(magnitude), unit); } - static Mult ofBaseUnits(double baseUnitMagnitude, MultUnit unit) { - return new ImmutableMult(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link MultUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit's base unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static Mult ofBaseUnits(double baseUnitMagnitude, MultUnit unit) { + return new Mult(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); } @Override - Mult copy(); + public MultUnit baseUnit() { return (MultUnit) unit().getBaseUnit(); } @Override - default MutMult mutableCopy() { - return new MutMult(magnitude(), baseUnitMagnitude(), unit()); - } - - @Override - MultUnit unit(); - - @Override - default MultUnit baseUnit() { return (MultUnit) unit().getBaseUnit(); } - - @Override - default double in(MultUnit unit) { + public double in(MultUnit unit) { return unit.fromBaseUnits(baseUnitMagnitude()); } @Override - default Mult unaryMinus() { + @SuppressWarnings("rawtypes") + public boolean equals(Object object) { + return object instanceof Mult m && isEquivalent(m); + } + + @Override + public Mult unaryMinus() { return (Mult) unit().ofBaseUnits(0 - baseUnitMagnitude()); } @@ -51,27 +60,27 @@ public interface Mult extends Measure negate() { + public Mult negate() { return (Mult) unaryMinus(); } @Override - default Mult plus(Measure> other) { + public Mult plus(Measure> other) { return (Mult) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude()); } @Override - default Mult minus(Measure> other) { + public Mult minus(Measure> other) { return (Mult) unit().ofBaseUnits(baseUnitMagnitude() - other.baseUnitMagnitude()); } @Override - default Mult times(double multiplier) { + public Mult times(double multiplier) { return (Mult) unit().ofBaseUnits(baseUnitMagnitude() * multiplier); } @Override - default Mult div(double divisor) { + public Mult div(double divisor) { return (Mult) unit().ofBaseUnits(baseUnitMagnitude() / divisor); } @@ -83,18 +92,18 @@ public interface Mult extends Measure divide(double divisor) { + public Mult divide(double divisor) { return (Mult) div(divisor); } @Override - default Mult, AccelerationUnit> times(Acceleration multiplier) { + public Mult, AccelerationUnit> times(Acceleration multiplier) { return (Mult, AccelerationUnit>) Measure.super.times(multiplier); } @Override - default Per, AccelerationUnit> div(Acceleration divisor) { + public Per, AccelerationUnit> div(Acceleration divisor) { return (Per, AccelerationUnit>) Measure.super.div(divisor); } @@ -106,23 +115,23 @@ public interface Mult extends Measure, AccelerationUnit> divide(Acceleration divisor) { + public Per, AccelerationUnit> divide(Acceleration divisor) { return div(divisor); } @Override - default Per, AccelerationUnit> per(AccelerationUnit divisorUnit) { + public Per, AccelerationUnit> per(AccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, AngleUnit> times(Angle multiplier) { + public Mult, AngleUnit> times(Angle multiplier) { return (Mult, AngleUnit>) Measure.super.times(multiplier); } @Override - default Per, AngleUnit> div(Angle divisor) { + public Per, AngleUnit> div(Angle divisor) { return (Per, AngleUnit>) Measure.super.div(divisor); } @@ -134,23 +143,23 @@ public interface Mult extends Measure, AngleUnit> divide(Angle divisor) { + public Per, AngleUnit> divide(Angle divisor) { return div(divisor); } @Override - default Per, AngleUnit> per(AngleUnit divisorUnit) { + public Per, AngleUnit> per(AngleUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, AngularAccelerationUnit> times(AngularAcceleration multiplier) { + public Mult, AngularAccelerationUnit> times(AngularAcceleration multiplier) { return (Mult, AngularAccelerationUnit>) Measure.super.times(multiplier); } @Override - default Per, AngularAccelerationUnit> div(AngularAcceleration divisor) { + public Per, AngularAccelerationUnit> div(AngularAcceleration divisor) { return (Per, AngularAccelerationUnit>) Measure.super.div(divisor); } @@ -162,23 +171,23 @@ public interface Mult extends Measure, AngularAccelerationUnit> divide(AngularAcceleration divisor) { + public Per, AngularAccelerationUnit> divide(AngularAcceleration divisor) { return div(divisor); } @Override - default Per, AngularAccelerationUnit> per(AngularAccelerationUnit divisorUnit) { + public Per, AngularAccelerationUnit> per(AngularAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, AngularMomentumUnit> times(AngularMomentum multiplier) { + public Mult, AngularMomentumUnit> times(AngularMomentum multiplier) { return (Mult, AngularMomentumUnit>) Measure.super.times(multiplier); } @Override - default Per, AngularMomentumUnit> div(AngularMomentum divisor) { + public Per, AngularMomentumUnit> div(AngularMomentum divisor) { return (Per, AngularMomentumUnit>) Measure.super.div(divisor); } @@ -190,23 +199,23 @@ public interface Mult extends Measure, AngularMomentumUnit> divide(AngularMomentum divisor) { + public Per, AngularMomentumUnit> divide(AngularMomentum divisor) { return div(divisor); } @Override - default Per, AngularMomentumUnit> per(AngularMomentumUnit divisorUnit) { + public Per, AngularMomentumUnit> per(AngularMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, AngularVelocityUnit> times(AngularVelocity multiplier) { + public Mult, AngularVelocityUnit> times(AngularVelocity multiplier) { return (Mult, AngularVelocityUnit>) Measure.super.times(multiplier); } @Override - default Per, AngularVelocityUnit> div(AngularVelocity divisor) { + public Per, AngularVelocityUnit> div(AngularVelocity divisor) { return (Per, AngularVelocityUnit>) Measure.super.div(divisor); } @@ -218,23 +227,23 @@ public interface Mult extends Measure, AngularVelocityUnit> divide(AngularVelocity divisor) { + public Per, AngularVelocityUnit> divide(AngularVelocity divisor) { return div(divisor); } @Override - default Per, AngularVelocityUnit> per(AngularVelocityUnit divisorUnit) { + public Per, AngularVelocityUnit> per(AngularVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, CurrentUnit> times(Current multiplier) { + public Mult, CurrentUnit> times(Current multiplier) { return (Mult, CurrentUnit>) Measure.super.times(multiplier); } @Override - default Per, CurrentUnit> div(Current divisor) { + public Per, CurrentUnit> div(Current divisor) { return (Per, CurrentUnit>) Measure.super.div(divisor); } @@ -246,17 +255,17 @@ public interface Mult extends Measure, CurrentUnit> divide(Current divisor) { + public Per, CurrentUnit> divide(Current divisor) { return div(divisor); } @Override - default Per, CurrentUnit> per(CurrentUnit divisorUnit) { + public Per, CurrentUnit> per(CurrentUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult div(Dimensionless divisor) { + public Mult div(Dimensionless divisor) { return (Mult) unit().of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -268,23 +277,23 @@ public interface Mult extends Measure divide(Dimensionless divisor) { + public Mult divide(Dimensionless divisor) { return (Mult) div(divisor); } @Override - default Mult times(Dimensionless multiplier) { + public Mult times(Dimensionless multiplier) { return (Mult) unit().of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Mult, DistanceUnit> times(Distance multiplier) { + public Mult, DistanceUnit> times(Distance multiplier) { return (Mult, DistanceUnit>) Measure.super.times(multiplier); } @Override - default Per, DistanceUnit> div(Distance divisor) { + public Per, DistanceUnit> div(Distance divisor) { return (Per, DistanceUnit>) Measure.super.div(divisor); } @@ -296,23 +305,23 @@ public interface Mult extends Measure, DistanceUnit> divide(Distance divisor) { + public Per, DistanceUnit> divide(Distance divisor) { return div(divisor); } @Override - default Per, DistanceUnit> per(DistanceUnit divisorUnit) { + public Per, DistanceUnit> per(DistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, EnergyUnit> times(Energy multiplier) { + public Mult, EnergyUnit> times(Energy multiplier) { return (Mult, EnergyUnit>) Measure.super.times(multiplier); } @Override - default Per, EnergyUnit> div(Energy divisor) { + public Per, EnergyUnit> div(Energy divisor) { return (Per, EnergyUnit>) Measure.super.div(divisor); } @@ -324,23 +333,23 @@ public interface Mult extends Measure, EnergyUnit> divide(Energy divisor) { + public Per, EnergyUnit> divide(Energy divisor) { return div(divisor); } @Override - default Per, EnergyUnit> per(EnergyUnit divisorUnit) { + public Per, EnergyUnit> per(EnergyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, ForceUnit> times(Force multiplier) { + public Mult, ForceUnit> times(Force multiplier) { return (Mult, ForceUnit>) Measure.super.times(multiplier); } @Override - default Per, ForceUnit> div(Force divisor) { + public Per, ForceUnit> div(Force divisor) { return (Per, ForceUnit>) Measure.super.div(divisor); } @@ -352,23 +361,23 @@ public interface Mult extends Measure, ForceUnit> divide(Force divisor) { + public Per, ForceUnit> divide(Force divisor) { return div(divisor); } @Override - default Per, ForceUnit> per(ForceUnit divisorUnit) { + public Per, ForceUnit> per(ForceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, FrequencyUnit> times(Frequency multiplier) { + public Mult, FrequencyUnit> times(Frequency multiplier) { return (Mult, FrequencyUnit>) Measure.super.times(multiplier); } @Override - default Per, FrequencyUnit> div(Frequency divisor) { + public Per, FrequencyUnit> div(Frequency divisor) { return (Per, FrequencyUnit>) Measure.super.div(divisor); } @@ -380,23 +389,23 @@ public interface Mult extends Measure, FrequencyUnit> divide(Frequency divisor) { + public Per, FrequencyUnit> divide(Frequency divisor) { return div(divisor); } @Override - default Per, FrequencyUnit> per(FrequencyUnit divisorUnit) { + public Per, FrequencyUnit> per(FrequencyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, LinearAccelerationUnit> times(LinearAcceleration multiplier) { + public Mult, LinearAccelerationUnit> times(LinearAcceleration multiplier) { return (Mult, LinearAccelerationUnit>) Measure.super.times(multiplier); } @Override - default Per, LinearAccelerationUnit> div(LinearAcceleration divisor) { + public Per, LinearAccelerationUnit> div(LinearAcceleration divisor) { return (Per, LinearAccelerationUnit>) Measure.super.div(divisor); } @@ -408,23 +417,23 @@ public interface Mult extends Measure, LinearAccelerationUnit> divide(LinearAcceleration divisor) { + public Per, LinearAccelerationUnit> divide(LinearAcceleration divisor) { return div(divisor); } @Override - default Per, LinearAccelerationUnit> per(LinearAccelerationUnit divisorUnit) { + public Per, LinearAccelerationUnit> per(LinearAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, LinearMomentumUnit> times(LinearMomentum multiplier) { + public Mult, LinearMomentumUnit> times(LinearMomentum multiplier) { return (Mult, LinearMomentumUnit>) Measure.super.times(multiplier); } @Override - default Per, LinearMomentumUnit> div(LinearMomentum divisor) { + public Per, LinearMomentumUnit> div(LinearMomentum divisor) { return (Per, LinearMomentumUnit>) Measure.super.div(divisor); } @@ -436,23 +445,23 @@ public interface Mult extends Measure, LinearMomentumUnit> divide(LinearMomentum divisor) { + public Per, LinearMomentumUnit> divide(LinearMomentum divisor) { return div(divisor); } @Override - default Per, LinearMomentumUnit> per(LinearMomentumUnit divisorUnit) { + public Per, LinearMomentumUnit> per(LinearMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, LinearVelocityUnit> times(LinearVelocity multiplier) { + public Mult, LinearVelocityUnit> times(LinearVelocity multiplier) { return (Mult, LinearVelocityUnit>) Measure.super.times(multiplier); } @Override - default Per, LinearVelocityUnit> div(LinearVelocity divisor) { + public Per, LinearVelocityUnit> div(LinearVelocity divisor) { return (Per, LinearVelocityUnit>) Measure.super.div(divisor); } @@ -464,23 +473,23 @@ public interface Mult extends Measure, LinearVelocityUnit> divide(LinearVelocity divisor) { + public Per, LinearVelocityUnit> divide(LinearVelocity divisor) { return div(divisor); } @Override - default Per, LinearVelocityUnit> per(LinearVelocityUnit divisorUnit) { + public Per, LinearVelocityUnit> per(LinearVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, MassUnit> times(Mass multiplier) { + public Mult, MassUnit> times(Mass multiplier) { return (Mult, MassUnit>) Measure.super.times(multiplier); } @Override - default Per, MassUnit> div(Mass divisor) { + public Per, MassUnit> div(Mass divisor) { return (Per, MassUnit>) Measure.super.div(divisor); } @@ -492,23 +501,23 @@ public interface Mult extends Measure, MassUnit> divide(Mass divisor) { + public Per, MassUnit> divide(Mass divisor) { return div(divisor); } @Override - default Per, MassUnit> per(MassUnit divisorUnit) { + public Per, MassUnit> per(MassUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, MomentOfInertiaUnit> times(MomentOfInertia multiplier) { + public Mult, MomentOfInertiaUnit> times(MomentOfInertia multiplier) { return (Mult, MomentOfInertiaUnit>) Measure.super.times(multiplier); } @Override - default Per, MomentOfInertiaUnit> div(MomentOfInertia divisor) { + public Per, MomentOfInertiaUnit> div(MomentOfInertia divisor) { return (Per, MomentOfInertiaUnit>) Measure.super.div(divisor); } @@ -520,23 +529,23 @@ public interface Mult extends Measure, MomentOfInertiaUnit> divide(MomentOfInertia divisor) { + public Per, MomentOfInertiaUnit> divide(MomentOfInertia divisor) { return div(divisor); } @Override - default Per, MomentOfInertiaUnit> per(MomentOfInertiaUnit divisorUnit) { + public Per, MomentOfInertiaUnit> per(MomentOfInertiaUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, MultUnit> times(Mult multiplier) { + public Mult, MultUnit> times(Mult multiplier) { return (Mult, MultUnit>) Measure.super.times(multiplier); } @Override - default Per, MultUnit> div(Mult divisor) { + public Per, MultUnit> div(Mult divisor) { return (Per, MultUnit>) Measure.super.div(divisor); } @@ -548,23 +557,23 @@ public interface Mult extends Measure, MultUnit> divide(Mult divisor) { + public Per, MultUnit> divide(Mult divisor) { return div(divisor); } @Override - default Per, MultUnit> per(MultUnit divisorUnit) { + public Per, MultUnit> per(MultUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult, PerUnit> times(Per multiplier) { + public Mult, PerUnit> times(Per multiplier) { return (Mult, PerUnit>) Measure.super.times(multiplier); } @Override - default Per, PerUnit> div(Per divisor) { + public Per, PerUnit> div(Per divisor) { return (Per, PerUnit>) Measure.super.div(divisor); } @@ -576,23 +585,23 @@ public interface Mult extends Measure, PerUnit> divide(Per divisor) { + public Per, PerUnit> divide(Per divisor) { return div(divisor); } @Override - default Per, PerUnit> per(PerUnit divisorUnit) { + public Per, PerUnit> per(PerUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult, PowerUnit> times(Power multiplier) { + public Mult, PowerUnit> times(Power multiplier) { return (Mult, PowerUnit>) Measure.super.times(multiplier); } @Override - default Per, PowerUnit> div(Power divisor) { + public Per, PowerUnit> div(Power divisor) { return (Per, PowerUnit>) Measure.super.div(divisor); } @@ -604,23 +613,23 @@ public interface Mult extends Measure, PowerUnit> divide(Power divisor) { + public Per, PowerUnit> divide(Power divisor) { return div(divisor); } @Override - default Per, PowerUnit> per(PowerUnit divisorUnit) { + public Per, PowerUnit> per(PowerUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, ResistanceUnit> times(Resistance multiplier) { + public Mult, ResistanceUnit> times(Resistance multiplier) { return (Mult, ResistanceUnit>) Measure.super.times(multiplier); } @Override - default Per, ResistanceUnit> div(Resistance divisor) { + public Per, ResistanceUnit> div(Resistance divisor) { return (Per, ResistanceUnit>) Measure.super.div(divisor); } @@ -632,23 +641,23 @@ public interface Mult extends Measure, ResistanceUnit> divide(Resistance divisor) { + public Per, ResistanceUnit> divide(Resistance divisor) { return div(divisor); } @Override - default Per, ResistanceUnit> per(ResistanceUnit divisorUnit) { + public Per, ResistanceUnit> per(ResistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, TemperatureUnit> times(Temperature multiplier) { + public Mult, TemperatureUnit> times(Temperature multiplier) { return (Mult, TemperatureUnit>) Measure.super.times(multiplier); } @Override - default Per, TemperatureUnit> div(Temperature divisor) { + public Per, TemperatureUnit> div(Temperature divisor) { return (Per, TemperatureUnit>) Measure.super.div(divisor); } @@ -660,23 +669,23 @@ public interface Mult extends Measure, TemperatureUnit> divide(Temperature divisor) { + public Per, TemperatureUnit> divide(Temperature divisor) { return div(divisor); } @Override - default Per, TemperatureUnit> per(TemperatureUnit divisorUnit) { + public Per, TemperatureUnit> per(TemperatureUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, TimeUnit> times(Time multiplier) { + public Mult, TimeUnit> times(Time multiplier) { return (Mult, TimeUnit>) Measure.super.times(multiplier); } @Override - default Velocity> div(Time divisor) { + public Velocity> div(Time divisor) { return VelocityUnit.combine(unit(), divisor.unit()).ofBaseUnits(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -688,23 +697,23 @@ public interface Mult extends Measure> divide(Time divisor) { + public Velocity> divide(Time divisor) { return div(divisor); } @Override - default Velocity> per(TimeUnit divisorUnit) { + public Velocity> per(TimeUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, TorqueUnit> times(Torque multiplier) { + public Mult, TorqueUnit> times(Torque multiplier) { return (Mult, TorqueUnit>) Measure.super.times(multiplier); } @Override - default Per, TorqueUnit> div(Torque divisor) { + public Per, TorqueUnit> div(Torque divisor) { return (Per, TorqueUnit>) Measure.super.div(divisor); } @@ -716,23 +725,23 @@ public interface Mult extends Measure, TorqueUnit> divide(Torque divisor) { + public Per, TorqueUnit> divide(Torque divisor) { return div(divisor); } @Override - default Per, TorqueUnit> per(TorqueUnit divisorUnit) { + public Per, TorqueUnit> per(TorqueUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, VelocityUnit> times(Velocity multiplier) { + public Mult, VelocityUnit> times(Velocity multiplier) { return (Mult, VelocityUnit>) Measure.super.times(multiplier); } @Override - default Per, VelocityUnit> div(Velocity divisor) { + public Per, VelocityUnit> div(Velocity divisor) { return (Per, VelocityUnit>) Measure.super.div(divisor); } @@ -744,23 +753,23 @@ public interface Mult extends Measure, VelocityUnit> divide(Velocity divisor) { + public Per, VelocityUnit> divide(Velocity divisor) { return div(divisor); } @Override - default Per, VelocityUnit> per(VelocityUnit divisorUnit) { + public Per, VelocityUnit> per(VelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, VoltageUnit> times(Voltage multiplier) { + public Mult, VoltageUnit> times(Voltage multiplier) { return (Mult, VoltageUnit>) Measure.super.times(multiplier); } @Override - default Per, VoltageUnit> div(Voltage divisor) { + public Per, VoltageUnit> div(Voltage divisor) { return (Per, VoltageUnit>) Measure.super.div(divisor); } @@ -772,12 +781,12 @@ public interface Mult extends Measure, VoltageUnit> divide(Voltage divisor) { + public Per, VoltageUnit> divide(Voltage divisor) { return div(divisor); } @Override - default Per, VoltageUnit> per(VoltageUnit divisorUnit) { + public Per, VoltageUnit> per(VoltageUnit divisorUnit) { return div(divisorUnit.one()); } diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutAcceleration.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutAcceleration.java deleted file mode 100644 index ed74009c45..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutAcceleration.java +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; -import edu.wpi.first.units.mutable.MutableMeasureBase; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public final class MutAcceleration - extends MutableMeasureBase, Acceleration, MutAcceleration> - implements Acceleration { - public MutAcceleration(double magnitude, double baseUnitMagnitude, AccelerationUnit unit) { - super(magnitude, baseUnitMagnitude, unit); - } - - @Override - public Acceleration copy() { - return new ImmutableAcceleration(magnitude(), baseUnitMagnitude(), unit()); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutAngle.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutAngle.java deleted file mode 100644 index ff356e33c2..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutAngle.java +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; -import edu.wpi.first.units.mutable.MutableMeasureBase; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public final class MutAngle - extends MutableMeasureBase - implements Angle { - public MutAngle(double magnitude, double baseUnitMagnitude, AngleUnit unit) { - super(magnitude, baseUnitMagnitude, unit); - } - - @Override - public Angle copy() { - return new ImmutableAngle(magnitude(), baseUnitMagnitude(), unit()); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutAngularAcceleration.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutAngularAcceleration.java deleted file mode 100644 index 8d7cecc803..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutAngularAcceleration.java +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; -import edu.wpi.first.units.mutable.MutableMeasureBase; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public final class MutAngularAcceleration - extends MutableMeasureBase - implements AngularAcceleration { - public MutAngularAcceleration(double magnitude, double baseUnitMagnitude, AngularAccelerationUnit unit) { - super(magnitude, baseUnitMagnitude, unit); - } - - @Override - public AngularAcceleration copy() { - return new ImmutableAngularAcceleration(magnitude(), baseUnitMagnitude(), unit()); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutAngularMomentum.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutAngularMomentum.java deleted file mode 100644 index c7ee472622..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutAngularMomentum.java +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; -import edu.wpi.first.units.mutable.MutableMeasureBase; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public final class MutAngularMomentum - extends MutableMeasureBase - implements AngularMomentum { - public MutAngularMomentum(double magnitude, double baseUnitMagnitude, AngularMomentumUnit unit) { - super(magnitude, baseUnitMagnitude, unit); - } - - @Override - public AngularMomentum copy() { - return new ImmutableAngularMomentum(magnitude(), baseUnitMagnitude(), unit()); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutAngularVelocity.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutAngularVelocity.java deleted file mode 100644 index d4083e179c..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutAngularVelocity.java +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; -import edu.wpi.first.units.mutable.MutableMeasureBase; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public final class MutAngularVelocity - extends MutableMeasureBase - implements AngularVelocity { - public MutAngularVelocity(double magnitude, double baseUnitMagnitude, AngularVelocityUnit unit) { - super(magnitude, baseUnitMagnitude, unit); - } - - @Override - public AngularVelocity copy() { - return new ImmutableAngularVelocity(magnitude(), baseUnitMagnitude(), unit()); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutCurrent.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutCurrent.java deleted file mode 100644 index 3dab503de2..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutCurrent.java +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; -import edu.wpi.first.units.mutable.MutableMeasureBase; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public final class MutCurrent - extends MutableMeasureBase - implements Current { - public MutCurrent(double magnitude, double baseUnitMagnitude, CurrentUnit unit) { - super(magnitude, baseUnitMagnitude, unit); - } - - @Override - public Current copy() { - return new ImmutableCurrent(magnitude(), baseUnitMagnitude(), unit()); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutDimensionless.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutDimensionless.java deleted file mode 100644 index 13ee3f6e8c..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutDimensionless.java +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; -import edu.wpi.first.units.mutable.MutableMeasureBase; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public final class MutDimensionless - extends MutableMeasureBase - implements Dimensionless { - public MutDimensionless(double magnitude, double baseUnitMagnitude, DimensionlessUnit unit) { - super(magnitude, baseUnitMagnitude, unit); - } - - @Override - public Dimensionless copy() { - return new ImmutableDimensionless(magnitude(), baseUnitMagnitude(), unit()); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutDistance.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutDistance.java deleted file mode 100644 index 35f1e3faa9..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutDistance.java +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; -import edu.wpi.first.units.mutable.MutableMeasureBase; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public final class MutDistance - extends MutableMeasureBase - implements Distance { - public MutDistance(double magnitude, double baseUnitMagnitude, DistanceUnit unit) { - super(magnitude, baseUnitMagnitude, unit); - } - - @Override - public Distance copy() { - return new ImmutableDistance(magnitude(), baseUnitMagnitude(), unit()); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutEnergy.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutEnergy.java deleted file mode 100644 index bd23cd1e9b..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutEnergy.java +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; -import edu.wpi.first.units.mutable.MutableMeasureBase; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public final class MutEnergy - extends MutableMeasureBase - implements Energy { - public MutEnergy(double magnitude, double baseUnitMagnitude, EnergyUnit unit) { - super(magnitude, baseUnitMagnitude, unit); - } - - @Override - public Energy copy() { - return new ImmutableEnergy(magnitude(), baseUnitMagnitude(), unit()); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutForce.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutForce.java deleted file mode 100644 index da6c973164..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutForce.java +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; -import edu.wpi.first.units.mutable.MutableMeasureBase; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public final class MutForce - extends MutableMeasureBase - implements Force { - public MutForce(double magnitude, double baseUnitMagnitude, ForceUnit unit) { - super(magnitude, baseUnitMagnitude, unit); - } - - @Override - public Force copy() { - return new ImmutableForce(magnitude(), baseUnitMagnitude(), unit()); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutFrequency.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutFrequency.java deleted file mode 100644 index 091afd130b..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutFrequency.java +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; -import edu.wpi.first.units.mutable.MutableMeasureBase; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public final class MutFrequency - extends MutableMeasureBase - implements Frequency { - public MutFrequency(double magnitude, double baseUnitMagnitude, FrequencyUnit unit) { - super(magnitude, baseUnitMagnitude, unit); - } - - @Override - public Frequency copy() { - return new ImmutableFrequency(magnitude(), baseUnitMagnitude(), unit()); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutLinearAcceleration.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutLinearAcceleration.java deleted file mode 100644 index dd074db5f8..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutLinearAcceleration.java +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; -import edu.wpi.first.units.mutable.MutableMeasureBase; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public final class MutLinearAcceleration - extends MutableMeasureBase - implements LinearAcceleration { - public MutLinearAcceleration(double magnitude, double baseUnitMagnitude, LinearAccelerationUnit unit) { - super(magnitude, baseUnitMagnitude, unit); - } - - @Override - public LinearAcceleration copy() { - return new ImmutableLinearAcceleration(magnitude(), baseUnitMagnitude(), unit()); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutLinearMomentum.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutLinearMomentum.java deleted file mode 100644 index da3113c345..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutLinearMomentum.java +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; -import edu.wpi.first.units.mutable.MutableMeasureBase; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public final class MutLinearMomentum - extends MutableMeasureBase - implements LinearMomentum { - public MutLinearMomentum(double magnitude, double baseUnitMagnitude, LinearMomentumUnit unit) { - super(magnitude, baseUnitMagnitude, unit); - } - - @Override - public LinearMomentum copy() { - return new ImmutableLinearMomentum(magnitude(), baseUnitMagnitude(), unit()); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutLinearVelocity.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutLinearVelocity.java deleted file mode 100644 index ffd19e3a7e..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutLinearVelocity.java +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; -import edu.wpi.first.units.mutable.MutableMeasureBase; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public final class MutLinearVelocity - extends MutableMeasureBase - implements LinearVelocity { - public MutLinearVelocity(double magnitude, double baseUnitMagnitude, LinearVelocityUnit unit) { - super(magnitude, baseUnitMagnitude, unit); - } - - @Override - public LinearVelocity copy() { - return new ImmutableLinearVelocity(magnitude(), baseUnitMagnitude(), unit()); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutMass.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutMass.java deleted file mode 100644 index c1b80c191e..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutMass.java +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; -import edu.wpi.first.units.mutable.MutableMeasureBase; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public final class MutMass - extends MutableMeasureBase - implements Mass { - public MutMass(double magnitude, double baseUnitMagnitude, MassUnit unit) { - super(magnitude, baseUnitMagnitude, unit); - } - - @Override - public Mass copy() { - return new ImmutableMass(magnitude(), baseUnitMagnitude(), unit()); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutMomentOfInertia.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutMomentOfInertia.java deleted file mode 100644 index b6f7481fa5..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutMomentOfInertia.java +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; -import edu.wpi.first.units.mutable.MutableMeasureBase; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public final class MutMomentOfInertia - extends MutableMeasureBase - implements MomentOfInertia { - public MutMomentOfInertia(double magnitude, double baseUnitMagnitude, MomentOfInertiaUnit unit) { - super(magnitude, baseUnitMagnitude, unit); - } - - @Override - public MomentOfInertia copy() { - return new ImmutableMomentOfInertia(magnitude(), baseUnitMagnitude(), unit()); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutMult.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutMult.java deleted file mode 100644 index b743c950fd..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutMult.java +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; -import edu.wpi.first.units.mutable.MutableMeasureBase; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public final class MutMult - extends MutableMeasureBase, Mult, MutMult> - implements Mult { - public MutMult(double magnitude, double baseUnitMagnitude, MultUnit unit) { - super(magnitude, baseUnitMagnitude, unit); - } - - @Override - public Mult copy() { - return new ImmutableMult(magnitude(), baseUnitMagnitude(), unit()); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutPer.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutPer.java deleted file mode 100644 index 054d87f19b..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutPer.java +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; -import edu.wpi.first.units.mutable.MutableMeasureBase; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public final class MutPer - extends MutableMeasureBase, Per, MutPer> - implements Per { - public MutPer(double magnitude, double baseUnitMagnitude, PerUnit unit) { - super(magnitude, baseUnitMagnitude, unit); - } - - @Override - public Per copy() { - return new ImmutablePer(magnitude(), baseUnitMagnitude(), unit()); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutPower.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutPower.java deleted file mode 100644 index 7a08663a7d..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutPower.java +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; -import edu.wpi.first.units.mutable.MutableMeasureBase; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public final class MutPower - extends MutableMeasureBase - implements Power { - public MutPower(double magnitude, double baseUnitMagnitude, PowerUnit unit) { - super(magnitude, baseUnitMagnitude, unit); - } - - @Override - public Power copy() { - return new ImmutablePower(magnitude(), baseUnitMagnitude(), unit()); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutResistance.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutResistance.java deleted file mode 100644 index 6acee59f56..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutResistance.java +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; -import edu.wpi.first.units.mutable.MutableMeasureBase; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public final class MutResistance - extends MutableMeasureBase - implements Resistance { - public MutResistance(double magnitude, double baseUnitMagnitude, ResistanceUnit unit) { - super(magnitude, baseUnitMagnitude, unit); - } - - @Override - public Resistance copy() { - return new ImmutableResistance(magnitude(), baseUnitMagnitude(), unit()); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutTemperature.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutTemperature.java deleted file mode 100644 index 31ae1fe7b5..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutTemperature.java +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; -import edu.wpi.first.units.mutable.MutableMeasureBase; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public final class MutTemperature - extends MutableMeasureBase - implements Temperature { - public MutTemperature(double magnitude, double baseUnitMagnitude, TemperatureUnit unit) { - super(magnitude, baseUnitMagnitude, unit); - } - - @Override - public Temperature copy() { - return new ImmutableTemperature(magnitude(), baseUnitMagnitude(), unit()); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutTime.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutTime.java deleted file mode 100644 index 4b9b81a745..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutTime.java +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; -import edu.wpi.first.units.mutable.MutableMeasureBase; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public final class MutTime - extends MutableMeasureBase - implements Time { - public MutTime(double magnitude, double baseUnitMagnitude, TimeUnit unit) { - super(magnitude, baseUnitMagnitude, unit); - } - - @Override - public Time copy() { - return new ImmutableTime(magnitude(), baseUnitMagnitude(), unit()); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutTorque.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutTorque.java deleted file mode 100644 index 30f9152329..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutTorque.java +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; -import edu.wpi.first.units.mutable.MutableMeasureBase; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public final class MutTorque - extends MutableMeasureBase - implements Torque { - public MutTorque(double magnitude, double baseUnitMagnitude, TorqueUnit unit) { - super(magnitude, baseUnitMagnitude, unit); - } - - @Override - public Torque copy() { - return new ImmutableTorque(magnitude(), baseUnitMagnitude(), unit()); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutVelocity.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutVelocity.java deleted file mode 100644 index 660cfa9de2..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutVelocity.java +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; -import edu.wpi.first.units.mutable.MutableMeasureBase; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public final class MutVelocity - extends MutableMeasureBase, Velocity, MutVelocity> - implements Velocity { - public MutVelocity(double magnitude, double baseUnitMagnitude, VelocityUnit unit) { - super(magnitude, baseUnitMagnitude, unit); - } - - @Override - public Velocity copy() { - return new ImmutableVelocity(magnitude(), baseUnitMagnitude(), unit()); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutVoltage.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutVoltage.java deleted file mode 100644 index 7002767b9e..0000000000 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutVoltage.java +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY - -package edu.wpi.first.units.measure; - -import static edu.wpi.first.units.Units.*; -import edu.wpi.first.units.*; -import edu.wpi.first.units.mutable.MutableMeasureBase; - -@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public final class MutVoltage - extends MutableMeasureBase - implements Voltage { - public MutVoltage(double magnitude, double baseUnitMagnitude, VoltageUnit unit) { - super(magnitude, baseUnitMagnitude, unit); - } - - @Override - public Voltage copy() { - return new ImmutableVoltage(magnitude(), baseUnitMagnitude(), unit()); - } -} diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Per.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Per.java index 2c1af67794..e99a34a3e6 100644 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Per.java +++ b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Per.java @@ -10,36 +10,45 @@ import static edu.wpi.first.units.Units.*; import edu.wpi.first.units.*; @SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public interface Per extends Measure> { - static Per ofRelativeUnits(double magnitude, PerUnit unit) { - return new ImmutablePer(magnitude, unit.toBaseUnits(magnitude), unit); +public record Per(double magnitude, double baseUnitMagnitude, PerUnit unit) implements Measure> { + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link PerUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static Per ofRelativeUnits(double magnitude, PerUnit unit) { + return new Per(magnitude, unit.toBaseUnits(magnitude), unit); } - static Per ofBaseUnits(double baseUnitMagnitude, PerUnit unit) { - return new ImmutablePer(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link PerUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit's base unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static Per ofBaseUnits(double baseUnitMagnitude, PerUnit unit) { + return new Per(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); } @Override - Per copy(); + public PerUnit baseUnit() { return (PerUnit) unit().getBaseUnit(); } @Override - default MutPer mutableCopy() { - return new MutPer(magnitude(), baseUnitMagnitude(), unit()); - } - - @Override - PerUnit unit(); - - @Override - default PerUnit baseUnit() { return (PerUnit) unit().getBaseUnit(); } - - @Override - default double in(PerUnit unit) { + public double in(PerUnit unit) { return unit.fromBaseUnits(baseUnitMagnitude()); } @Override - default Per unaryMinus() { + @SuppressWarnings("rawtypes") + public boolean equals(Object object) { + return object instanceof Per m && isEquivalent(m); + } + + @Override + public Per unaryMinus() { return (Per) unit().ofBaseUnits(0 - baseUnitMagnitude()); } @@ -51,27 +60,27 @@ public interface Per extends Measur @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Per negate() { + public Per negate() { return (Per) unaryMinus(); } @Override - default Per plus(Measure> other) { + public Per plus(Measure> other) { return (Per) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude()); } @Override - default Per minus(Measure> other) { + public Per minus(Measure> other) { return (Per) unit().ofBaseUnits(baseUnitMagnitude() - other.baseUnitMagnitude()); } @Override - default Per times(double multiplier) { + public Per times(double multiplier) { return (Per) unit().ofBaseUnits(baseUnitMagnitude() * multiplier); } @Override - default Per div(double divisor) { + public Per div(double divisor) { return (Per) unit().ofBaseUnits(baseUnitMagnitude() / divisor); } @@ -83,18 +92,18 @@ public interface Per extends Measur @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Per divide(double divisor) { + public Per divide(double divisor) { return (Per) div(divisor); } @Override - default Mult, AccelerationUnit> times(Acceleration multiplier) { + public Mult, AccelerationUnit> times(Acceleration multiplier) { return (Mult, AccelerationUnit>) Measure.super.times(multiplier); } @Override - default Per, AccelerationUnit> div(Acceleration divisor) { + public Per, AccelerationUnit> div(Acceleration divisor) { return (Per, AccelerationUnit>) Measure.super.div(divisor); } @@ -106,23 +115,23 @@ public interface Per extends Measur @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per, AccelerationUnit> divide(Acceleration divisor) { + public Per, AccelerationUnit> divide(Acceleration divisor) { return div(divisor); } @Override - default Per, AccelerationUnit> per(AccelerationUnit divisorUnit) { + public Per, AccelerationUnit> per(AccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, AngleUnit> times(Angle multiplier) { + public Mult, AngleUnit> times(Angle multiplier) { return (Mult, AngleUnit>) Measure.super.times(multiplier); } @Override - default Per, AngleUnit> div(Angle divisor) { + public Per, AngleUnit> div(Angle divisor) { return (Per, AngleUnit>) Measure.super.div(divisor); } @@ -134,23 +143,23 @@ public interface Per extends Measur @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per, AngleUnit> divide(Angle divisor) { + public Per, AngleUnit> divide(Angle divisor) { return div(divisor); } @Override - default Per, AngleUnit> per(AngleUnit divisorUnit) { + public Per, AngleUnit> per(AngleUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, AngularAccelerationUnit> times(AngularAcceleration multiplier) { + public Mult, AngularAccelerationUnit> times(AngularAcceleration multiplier) { return (Mult, AngularAccelerationUnit>) Measure.super.times(multiplier); } @Override - default Per, AngularAccelerationUnit> div(AngularAcceleration divisor) { + public Per, AngularAccelerationUnit> div(AngularAcceleration divisor) { return (Per, AngularAccelerationUnit>) Measure.super.div(divisor); } @@ -162,23 +171,23 @@ public interface Per extends Measur @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per, AngularAccelerationUnit> divide(AngularAcceleration divisor) { + public Per, AngularAccelerationUnit> divide(AngularAcceleration divisor) { return div(divisor); } @Override - default Per, AngularAccelerationUnit> per(AngularAccelerationUnit divisorUnit) { + public Per, AngularAccelerationUnit> per(AngularAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, AngularMomentumUnit> times(AngularMomentum multiplier) { + public Mult, AngularMomentumUnit> times(AngularMomentum multiplier) { return (Mult, AngularMomentumUnit>) Measure.super.times(multiplier); } @Override - default Per, AngularMomentumUnit> div(AngularMomentum divisor) { + public Per, AngularMomentumUnit> div(AngularMomentum divisor) { return (Per, AngularMomentumUnit>) Measure.super.div(divisor); } @@ -190,23 +199,23 @@ public interface Per extends Measur @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per, AngularMomentumUnit> divide(AngularMomentum divisor) { + public Per, AngularMomentumUnit> divide(AngularMomentum divisor) { return div(divisor); } @Override - default Per, AngularMomentumUnit> per(AngularMomentumUnit divisorUnit) { + public Per, AngularMomentumUnit> per(AngularMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, AngularVelocityUnit> times(AngularVelocity multiplier) { + public Mult, AngularVelocityUnit> times(AngularVelocity multiplier) { return (Mult, AngularVelocityUnit>) Measure.super.times(multiplier); } @Override - default Per, AngularVelocityUnit> div(AngularVelocity divisor) { + public Per, AngularVelocityUnit> div(AngularVelocity divisor) { return (Per, AngularVelocityUnit>) Measure.super.div(divisor); } @@ -218,23 +227,23 @@ public interface Per extends Measur @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per, AngularVelocityUnit> divide(AngularVelocity divisor) { + public Per, AngularVelocityUnit> divide(AngularVelocity divisor) { return div(divisor); } @Override - default Per, AngularVelocityUnit> per(AngularVelocityUnit divisorUnit) { + public Per, AngularVelocityUnit> per(AngularVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, CurrentUnit> times(Current multiplier) { + public Mult, CurrentUnit> times(Current multiplier) { return (Mult, CurrentUnit>) Measure.super.times(multiplier); } @Override - default Per, CurrentUnit> div(Current divisor) { + public Per, CurrentUnit> div(Current divisor) { return (Per, CurrentUnit>) Measure.super.div(divisor); } @@ -246,17 +255,17 @@ public interface Per extends Measur @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per, CurrentUnit> divide(Current divisor) { + public Per, CurrentUnit> divide(Current divisor) { return div(divisor); } @Override - default Per, CurrentUnit> per(CurrentUnit divisorUnit) { + public Per, CurrentUnit> per(CurrentUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Per div(Dimensionless divisor) { + public Per div(Dimensionless divisor) { return (Per) unit().of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -268,23 +277,23 @@ public interface Per extends Measur @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Per divide(Dimensionless divisor) { + public Per divide(Dimensionless divisor) { return (Per) div(divisor); } @Override - default Per times(Dimensionless multiplier) { + public Per times(Dimensionless multiplier) { return (Per) unit().of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Mult, DistanceUnit> times(Distance multiplier) { + public Mult, DistanceUnit> times(Distance multiplier) { return (Mult, DistanceUnit>) Measure.super.times(multiplier); } @Override - default Per, DistanceUnit> div(Distance divisor) { + public Per, DistanceUnit> div(Distance divisor) { return (Per, DistanceUnit>) Measure.super.div(divisor); } @@ -296,23 +305,23 @@ public interface Per extends Measur @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per, DistanceUnit> divide(Distance divisor) { + public Per, DistanceUnit> divide(Distance divisor) { return div(divisor); } @Override - default Per, DistanceUnit> per(DistanceUnit divisorUnit) { + public Per, DistanceUnit> per(DistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, EnergyUnit> times(Energy multiplier) { + public Mult, EnergyUnit> times(Energy multiplier) { return (Mult, EnergyUnit>) Measure.super.times(multiplier); } @Override - default Per, EnergyUnit> div(Energy divisor) { + public Per, EnergyUnit> div(Energy divisor) { return (Per, EnergyUnit>) Measure.super.div(divisor); } @@ -324,23 +333,23 @@ public interface Per extends Measur @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per, EnergyUnit> divide(Energy divisor) { + public Per, EnergyUnit> divide(Energy divisor) { return div(divisor); } @Override - default Per, EnergyUnit> per(EnergyUnit divisorUnit) { + public Per, EnergyUnit> per(EnergyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, ForceUnit> times(Force multiplier) { + public Mult, ForceUnit> times(Force multiplier) { return (Mult, ForceUnit>) Measure.super.times(multiplier); } @Override - default Per, ForceUnit> div(Force divisor) { + public Per, ForceUnit> div(Force divisor) { return (Per, ForceUnit>) Measure.super.div(divisor); } @@ -352,23 +361,23 @@ public interface Per extends Measur @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per, ForceUnit> divide(Force divisor) { + public Per, ForceUnit> divide(Force divisor) { return div(divisor); } @Override - default Per, ForceUnit> per(ForceUnit divisorUnit) { + public Per, ForceUnit> per(ForceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, FrequencyUnit> times(Frequency multiplier) { + public Mult, FrequencyUnit> times(Frequency multiplier) { return (Mult, FrequencyUnit>) Measure.super.times(multiplier); } @Override - default Per, FrequencyUnit> div(Frequency divisor) { + public Per, FrequencyUnit> div(Frequency divisor) { return (Per, FrequencyUnit>) Measure.super.div(divisor); } @@ -380,23 +389,23 @@ public interface Per extends Measur @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per, FrequencyUnit> divide(Frequency divisor) { + public Per, FrequencyUnit> divide(Frequency divisor) { return div(divisor); } @Override - default Per, FrequencyUnit> per(FrequencyUnit divisorUnit) { + public Per, FrequencyUnit> per(FrequencyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, LinearAccelerationUnit> times(LinearAcceleration multiplier) { + public Mult, LinearAccelerationUnit> times(LinearAcceleration multiplier) { return (Mult, LinearAccelerationUnit>) Measure.super.times(multiplier); } @Override - default Per, LinearAccelerationUnit> div(LinearAcceleration divisor) { + public Per, LinearAccelerationUnit> div(LinearAcceleration divisor) { return (Per, LinearAccelerationUnit>) Measure.super.div(divisor); } @@ -408,23 +417,23 @@ public interface Per extends Measur @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per, LinearAccelerationUnit> divide(LinearAcceleration divisor) { + public Per, LinearAccelerationUnit> divide(LinearAcceleration divisor) { return div(divisor); } @Override - default Per, LinearAccelerationUnit> per(LinearAccelerationUnit divisorUnit) { + public Per, LinearAccelerationUnit> per(LinearAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, LinearMomentumUnit> times(LinearMomentum multiplier) { + public Mult, LinearMomentumUnit> times(LinearMomentum multiplier) { return (Mult, LinearMomentumUnit>) Measure.super.times(multiplier); } @Override - default Per, LinearMomentumUnit> div(LinearMomentum divisor) { + public Per, LinearMomentumUnit> div(LinearMomentum divisor) { return (Per, LinearMomentumUnit>) Measure.super.div(divisor); } @@ -436,23 +445,23 @@ public interface Per extends Measur @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per, LinearMomentumUnit> divide(LinearMomentum divisor) { + public Per, LinearMomentumUnit> divide(LinearMomentum divisor) { return div(divisor); } @Override - default Per, LinearMomentumUnit> per(LinearMomentumUnit divisorUnit) { + public Per, LinearMomentumUnit> per(LinearMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, LinearVelocityUnit> times(LinearVelocity multiplier) { + public Mult, LinearVelocityUnit> times(LinearVelocity multiplier) { return (Mult, LinearVelocityUnit>) Measure.super.times(multiplier); } @Override - default Per, LinearVelocityUnit> div(LinearVelocity divisor) { + public Per, LinearVelocityUnit> div(LinearVelocity divisor) { return (Per, LinearVelocityUnit>) Measure.super.div(divisor); } @@ -464,23 +473,23 @@ public interface Per extends Measur @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per, LinearVelocityUnit> divide(LinearVelocity divisor) { + public Per, LinearVelocityUnit> divide(LinearVelocity divisor) { return div(divisor); } @Override - default Per, LinearVelocityUnit> per(LinearVelocityUnit divisorUnit) { + public Per, LinearVelocityUnit> per(LinearVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, MassUnit> times(Mass multiplier) { + public Mult, MassUnit> times(Mass multiplier) { return (Mult, MassUnit>) Measure.super.times(multiplier); } @Override - default Per, MassUnit> div(Mass divisor) { + public Per, MassUnit> div(Mass divisor) { return (Per, MassUnit>) Measure.super.div(divisor); } @@ -492,23 +501,23 @@ public interface Per extends Measur @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per, MassUnit> divide(Mass divisor) { + public Per, MassUnit> divide(Mass divisor) { return div(divisor); } @Override - default Per, MassUnit> per(MassUnit divisorUnit) { + public Per, MassUnit> per(MassUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, MomentOfInertiaUnit> times(MomentOfInertia multiplier) { + public Mult, MomentOfInertiaUnit> times(MomentOfInertia multiplier) { return (Mult, MomentOfInertiaUnit>) Measure.super.times(multiplier); } @Override - default Per, MomentOfInertiaUnit> div(MomentOfInertia divisor) { + public Per, MomentOfInertiaUnit> div(MomentOfInertia divisor) { return (Per, MomentOfInertiaUnit>) Measure.super.div(divisor); } @@ -520,23 +529,23 @@ public interface Per extends Measur @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per, MomentOfInertiaUnit> divide(MomentOfInertia divisor) { + public Per, MomentOfInertiaUnit> divide(MomentOfInertia divisor) { return div(divisor); } @Override - default Per, MomentOfInertiaUnit> per(MomentOfInertiaUnit divisorUnit) { + public Per, MomentOfInertiaUnit> per(MomentOfInertiaUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, MultUnit> times(Mult multiplier) { + public Mult, MultUnit> times(Mult multiplier) { return (Mult, MultUnit>) Measure.super.times(multiplier); } @Override - default Per, MultUnit> div(Mult divisor) { + public Per, MultUnit> div(Mult divisor) { return (Per, MultUnit>) Measure.super.div(divisor); } @@ -548,23 +557,23 @@ public interface Per extends Measur @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per, MultUnit> divide(Mult divisor) { + public Per, MultUnit> divide(Mult divisor) { return div(divisor); } @Override - default Per, MultUnit> per(MultUnit divisorUnit) { + public Per, MultUnit> per(MultUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult, PerUnit> times(Per multiplier) { + public Mult, PerUnit> times(Per multiplier) { return (Mult, PerUnit>) Measure.super.times(multiplier); } @Override - default Per, PerUnit> div(Per divisor) { + public Per, PerUnit> div(Per divisor) { return (Per, PerUnit>) Measure.super.div(divisor); } @@ -576,23 +585,23 @@ public interface Per extends Measur @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per, PerUnit> divide(Per divisor) { + public Per, PerUnit> divide(Per divisor) { return div(divisor); } @Override - default Per, PerUnit> per(PerUnit divisorUnit) { + public Per, PerUnit> per(PerUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult, PowerUnit> times(Power multiplier) { + public Mult, PowerUnit> times(Power multiplier) { return (Mult, PowerUnit>) Measure.super.times(multiplier); } @Override - default Per, PowerUnit> div(Power divisor) { + public Per, PowerUnit> div(Power divisor) { return (Per, PowerUnit>) Measure.super.div(divisor); } @@ -604,23 +613,23 @@ public interface Per extends Measur @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per, PowerUnit> divide(Power divisor) { + public Per, PowerUnit> divide(Power divisor) { return div(divisor); } @Override - default Per, PowerUnit> per(PowerUnit divisorUnit) { + public Per, PowerUnit> per(PowerUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, ResistanceUnit> times(Resistance multiplier) { + public Mult, ResistanceUnit> times(Resistance multiplier) { return (Mult, ResistanceUnit>) Measure.super.times(multiplier); } @Override - default Per, ResistanceUnit> div(Resistance divisor) { + public Per, ResistanceUnit> div(Resistance divisor) { return (Per, ResistanceUnit>) Measure.super.div(divisor); } @@ -632,23 +641,23 @@ public interface Per extends Measur @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per, ResistanceUnit> divide(Resistance divisor) { + public Per, ResistanceUnit> divide(Resistance divisor) { return div(divisor); } @Override - default Per, ResistanceUnit> per(ResistanceUnit divisorUnit) { + public Per, ResistanceUnit> per(ResistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, TemperatureUnit> times(Temperature multiplier) { + public Mult, TemperatureUnit> times(Temperature multiplier) { return (Mult, TemperatureUnit>) Measure.super.times(multiplier); } @Override - default Per, TemperatureUnit> div(Temperature divisor) { + public Per, TemperatureUnit> div(Temperature divisor) { return (Per, TemperatureUnit>) Measure.super.div(divisor); } @@ -660,23 +669,23 @@ public interface Per extends Measur @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per, TemperatureUnit> divide(Temperature divisor) { + public Per, TemperatureUnit> divide(Temperature divisor) { return div(divisor); } @Override - default Per, TemperatureUnit> per(TemperatureUnit divisorUnit) { + public Per, TemperatureUnit> per(TemperatureUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, TimeUnit> times(Time multiplier) { + public Mult, TimeUnit> times(Time multiplier) { return (Mult, TimeUnit>) Measure.super.times(multiplier); } @Override - default Velocity> div(Time divisor) { + public Velocity> div(Time divisor) { return VelocityUnit.combine(unit(), divisor.unit()).ofBaseUnits(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -688,23 +697,23 @@ public interface Per extends Measur @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Velocity> divide(Time divisor) { + public Velocity> divide(Time divisor) { return div(divisor); } @Override - default Velocity> per(TimeUnit divisorUnit) { + public Velocity> per(TimeUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, TorqueUnit> times(Torque multiplier) { + public Mult, TorqueUnit> times(Torque multiplier) { return (Mult, TorqueUnit>) Measure.super.times(multiplier); } @Override - default Per, TorqueUnit> div(Torque divisor) { + public Per, TorqueUnit> div(Torque divisor) { return (Per, TorqueUnit>) Measure.super.div(divisor); } @@ -716,23 +725,23 @@ public interface Per extends Measur @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per, TorqueUnit> divide(Torque divisor) { + public Per, TorqueUnit> divide(Torque divisor) { return div(divisor); } @Override - default Per, TorqueUnit> per(TorqueUnit divisorUnit) { + public Per, TorqueUnit> per(TorqueUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, VelocityUnit> times(Velocity multiplier) { + public Mult, VelocityUnit> times(Velocity multiplier) { return (Mult, VelocityUnit>) Measure.super.times(multiplier); } @Override - default Per, VelocityUnit> div(Velocity divisor) { + public Per, VelocityUnit> div(Velocity divisor) { return (Per, VelocityUnit>) Measure.super.div(divisor); } @@ -744,23 +753,23 @@ public interface Per extends Measur @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per, VelocityUnit> divide(Velocity divisor) { + public Per, VelocityUnit> divide(Velocity divisor) { return div(divisor); } @Override - default Per, VelocityUnit> per(VelocityUnit divisorUnit) { + public Per, VelocityUnit> per(VelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, VoltageUnit> times(Voltage multiplier) { + public Mult, VoltageUnit> times(Voltage multiplier) { return (Mult, VoltageUnit>) Measure.super.times(multiplier); } @Override - default Per, VoltageUnit> div(Voltage divisor) { + public Per, VoltageUnit> div(Voltage divisor) { return (Per, VoltageUnit>) Measure.super.div(divisor); } @@ -772,19 +781,19 @@ public interface Per extends Measur @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per, VoltageUnit> divide(Voltage divisor) { + public Per, VoltageUnit> divide(Voltage divisor) { return div(divisor); } @Override - default Per, VoltageUnit> per(VoltageUnit divisorUnit) { + public Per, VoltageUnit> per(VoltageUnit divisorUnit) { return div(divisorUnit.one()); } -default Measure timesDivisor(Measure multiplier) { +public Measure timesDivisor(Measure multiplier) { return (Measure) baseUnit().numerator().ofBaseUnits(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } -default Measure> reciprocal() { +public Measure> reciprocal() { // May return a velocity if Divisor == TimeUnit, so we can't guarantee a "Per" instance return baseUnit().reciprocal().ofBaseUnits(1 / baseUnitMagnitude()); } diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Power.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Power.java index d94ddcde38..30376d06d5 100644 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Power.java +++ b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Power.java @@ -10,36 +10,45 @@ import static edu.wpi.first.units.Units.*; import edu.wpi.first.units.*; @SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public interface Power extends Measure { - static Power ofRelativeUnits(double magnitude, PowerUnit unit) { - return new ImmutablePower(magnitude, unit.toBaseUnits(magnitude), unit); +public record Power(double magnitude, double baseUnitMagnitude, PowerUnit unit) implements Measure { + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link PowerUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static Power ofRelativeUnits(double magnitude, PowerUnit unit) { + return new Power(magnitude, unit.toBaseUnits(magnitude), unit); } - static Power ofBaseUnits(double baseUnitMagnitude, PowerUnit unit) { - return new ImmutablePower(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link PowerUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit's base unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static Power ofBaseUnits(double baseUnitMagnitude, PowerUnit unit) { + return new Power(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); } @Override - Power copy(); + public PowerUnit baseUnit() { return (PowerUnit) unit().getBaseUnit(); } @Override - default MutPower mutableCopy() { - return new MutPower(magnitude(), baseUnitMagnitude(), unit()); - } - - @Override - PowerUnit unit(); - - @Override - default PowerUnit baseUnit() { return (PowerUnit) unit().getBaseUnit(); } - - @Override - default double in(PowerUnit unit) { + public double in(PowerUnit unit) { return unit.fromBaseUnits(baseUnitMagnitude()); } @Override - default Power unaryMinus() { + @SuppressWarnings("rawtypes") + public boolean equals(Object object) { + return object instanceof Power m && isEquivalent(m); + } + + @Override + public Power unaryMinus() { return (Power) unit().ofBaseUnits(0 - baseUnitMagnitude()); } @@ -51,27 +60,27 @@ public interface Power extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Power negate() { + public Power negate() { return (Power) unaryMinus(); } @Override - default Power plus(Measure other) { + public Power plus(Measure other) { return (Power) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude()); } @Override - default Power minus(Measure other) { + public Power minus(Measure other) { return (Power) unit().ofBaseUnits(baseUnitMagnitude() - other.baseUnitMagnitude()); } @Override - default Power times(double multiplier) { + public Power times(double multiplier) { return (Power) unit().ofBaseUnits(baseUnitMagnitude() * multiplier); } @Override - default Power div(double divisor) { + public Power div(double divisor) { return (Power) unit().ofBaseUnits(baseUnitMagnitude() / divisor); } @@ -83,18 +92,18 @@ public interface Power extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Power divide(double divisor) { + public Power divide(double divisor) { return (Power) div(divisor); } @Override - default Mult> times(Acceleration multiplier) { + public Mult> times(Acceleration multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Acceleration divisor) { + public Per> div(Acceleration divisor) { return (Per>) Measure.super.div(divisor); } @@ -106,23 +115,23 @@ public interface Power extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Acceleration divisor) { + public Per> divide(Acceleration divisor) { return div(divisor); } @Override - default Per> per(AccelerationUnit divisorUnit) { + public Per> per(AccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Angle multiplier) { + public Mult times(Angle multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Angle divisor) { + public Per div(Angle divisor) { return (Per) Measure.super.div(divisor); } @@ -134,23 +143,23 @@ public interface Power extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Angle divisor) { + public Per divide(Angle divisor) { return div(divisor); } @Override - default Per per(AngleUnit divisorUnit) { + public Per per(AngleUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularAcceleration multiplier) { + public Mult times(AngularAcceleration multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularAcceleration divisor) { + public Per div(AngularAcceleration divisor) { return (Per) Measure.super.div(divisor); } @@ -162,23 +171,23 @@ public interface Power extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularAcceleration divisor) { + public Per divide(AngularAcceleration divisor) { return div(divisor); } @Override - default Per per(AngularAccelerationUnit divisorUnit) { + public Per per(AngularAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularMomentum multiplier) { + public Mult times(AngularMomentum multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularMomentum divisor) { + public Per div(AngularMomentum divisor) { return (Per) Measure.super.div(divisor); } @@ -190,23 +199,23 @@ public interface Power extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularMomentum divisor) { + public Per divide(AngularMomentum divisor) { return div(divisor); } @Override - default Per per(AngularMomentumUnit divisorUnit) { + public Per per(AngularMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularVelocity multiplier) { + public Mult times(AngularVelocity multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularVelocity divisor) { + public Per div(AngularVelocity divisor) { return (Per) Measure.super.div(divisor); } @@ -218,23 +227,23 @@ public interface Power extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularVelocity divisor) { + public Per divide(AngularVelocity divisor) { return div(divisor); } @Override - default Per per(AngularVelocityUnit divisorUnit) { + public Per per(AngularVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Current multiplier) { + public Mult times(Current multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Voltage div(Current divisor) { + public Voltage div(Current divisor) { return Volts.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -246,17 +255,17 @@ public interface Power extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Voltage divide(Current divisor) { + public Voltage divide(Current divisor) { return div(divisor); } @Override - default Voltage per(CurrentUnit divisorUnit) { + public Voltage per(CurrentUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Power div(Dimensionless divisor) { + public Power div(Dimensionless divisor) { return (Power) Watts.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -268,23 +277,23 @@ public interface Power extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Power divide(Dimensionless divisor) { + public Power divide(Dimensionless divisor) { return (Power) div(divisor); } @Override - default Power times(Dimensionless multiplier) { + public Power times(Dimensionless multiplier) { return (Power) Watts.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Mult times(Distance multiplier) { + public Mult times(Distance multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Distance divisor) { + public Per div(Distance divisor) { return (Per) Measure.super.div(divisor); } @@ -296,23 +305,23 @@ public interface Power extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Distance divisor) { + public Per divide(Distance divisor) { return div(divisor); } @Override - default Per per(DistanceUnit divisorUnit) { + public Per per(DistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Energy multiplier) { + public Mult times(Energy multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Frequency div(Energy divisor) { + public Frequency div(Energy divisor) { return Hertz.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -324,23 +333,23 @@ public interface Power extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Frequency divide(Energy divisor) { + public Frequency divide(Energy divisor) { return div(divisor); } @Override - default Frequency per(EnergyUnit divisorUnit) { + public Frequency per(EnergyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Force multiplier) { + public Mult times(Force multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Force divisor) { + public Per div(Force divisor) { return (Per) Measure.super.div(divisor); } @@ -352,23 +361,23 @@ public interface Power extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Force divisor) { + public Per divide(Force divisor) { return div(divisor); } @Override - default Per per(ForceUnit divisorUnit) { + public Per per(ForceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Frequency multiplier) { + public Mult times(Frequency multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Frequency divisor) { + public Per div(Frequency divisor) { return (Per) Measure.super.div(divisor); } @@ -380,23 +389,23 @@ public interface Power extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Frequency divisor) { + public Per divide(Frequency divisor) { return div(divisor); } @Override - default Per per(FrequencyUnit divisorUnit) { + public Per per(FrequencyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearAcceleration multiplier) { + public Mult times(LinearAcceleration multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearAcceleration divisor) { + public Per div(LinearAcceleration divisor) { return (Per) Measure.super.div(divisor); } @@ -408,23 +417,23 @@ public interface Power extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearAcceleration divisor) { + public Per divide(LinearAcceleration divisor) { return div(divisor); } @Override - default Per per(LinearAccelerationUnit divisorUnit) { + public Per per(LinearAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearMomentum multiplier) { + public Mult times(LinearMomentum multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearMomentum divisor) { + public Per div(LinearMomentum divisor) { return (Per) Measure.super.div(divisor); } @@ -436,23 +445,23 @@ public interface Power extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearMomentum divisor) { + public Per divide(LinearMomentum divisor) { return div(divisor); } @Override - default Per per(LinearMomentumUnit divisorUnit) { + public Per per(LinearMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearVelocity multiplier) { + public Mult times(LinearVelocity multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearVelocity divisor) { + public Per div(LinearVelocity divisor) { return (Per) Measure.super.div(divisor); } @@ -464,23 +473,23 @@ public interface Power extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearVelocity divisor) { + public Per divide(LinearVelocity divisor) { return div(divisor); } @Override - default Per per(LinearVelocityUnit divisorUnit) { + public Per per(LinearVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Mass multiplier) { + public Mult times(Mass multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Mass divisor) { + public Per div(Mass divisor) { return (Per) Measure.super.div(divisor); } @@ -492,23 +501,23 @@ public interface Power extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Mass divisor) { + public Per divide(Mass divisor) { return div(divisor); } @Override - default Per per(MassUnit divisorUnit) { + public Per per(MassUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(MomentOfInertia multiplier) { + public Mult times(MomentOfInertia multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(MomentOfInertia divisor) { + public Per div(MomentOfInertia divisor) { return (Per) Measure.super.div(divisor); } @@ -520,23 +529,23 @@ public interface Power extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(MomentOfInertia divisor) { + public Per divide(MomentOfInertia divisor) { return div(divisor); } @Override - default Per per(MomentOfInertiaUnit divisorUnit) { + public Per per(MomentOfInertiaUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult> times(Mult multiplier) { + public Mult> times(Mult multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Mult divisor) { + public Per> div(Mult divisor) { return (Per>) Measure.super.div(divisor); } @@ -548,23 +557,23 @@ public interface Power extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Mult divisor) { + public Per> divide(Mult divisor) { return div(divisor); } @Override - default Per> per(MultUnit divisorUnit) { + public Per> per(MultUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult> times(Per multiplier) { + public Mult> times(Per multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Per divisor) { + public Per> div(Per divisor) { return (Per>) Measure.super.div(divisor); } @@ -576,23 +585,23 @@ public interface Power extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Per divisor) { + public Per> divide(Per divisor) { return div(divisor); } @Override - default Per> per(PerUnit divisorUnit) { + public Per> per(PerUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult times(Power multiplier) { + public Mult times(Power multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Dimensionless div(Power divisor) { + public Dimensionless div(Power divisor) { return Value.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -604,23 +613,23 @@ public interface Power extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Dimensionless divide(Power divisor) { + public Dimensionless divide(Power divisor) { return div(divisor); } @Override - default Dimensionless per(PowerUnit divisorUnit) { + public Dimensionless per(PowerUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Resistance multiplier) { + public Mult times(Resistance multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Resistance divisor) { + public Per div(Resistance divisor) { return (Per) Measure.super.div(divisor); } @@ -632,23 +641,23 @@ public interface Power extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Resistance divisor) { + public Per divide(Resistance divisor) { return div(divisor); } @Override - default Per per(ResistanceUnit divisorUnit) { + public Per per(ResistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Temperature multiplier) { + public Mult times(Temperature multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Temperature divisor) { + public Per div(Temperature divisor) { return (Per) Measure.super.div(divisor); } @@ -660,23 +669,23 @@ public interface Power extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Temperature divisor) { + public Per divide(Temperature divisor) { return div(divisor); } @Override - default Per per(TemperatureUnit divisorUnit) { + public Per per(TemperatureUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Energy times(Time multiplier) { + public Energy times(Time multiplier) { return Joules.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Velocity div(Time divisor) { + public Velocity div(Time divisor) { return VelocityUnit.combine(unit(), divisor.unit()).ofBaseUnits(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -688,23 +697,23 @@ public interface Power extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Velocity divide(Time divisor) { + public Velocity divide(Time divisor) { return div(divisor); } @Override - default Velocity per(TimeUnit divisorUnit) { + public Velocity per(TimeUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Torque multiplier) { + public Mult times(Torque multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Torque divisor) { + public Per div(Torque divisor) { return (Per) Measure.super.div(divisor); } @@ -716,23 +725,23 @@ public interface Power extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Torque divisor) { + public Per divide(Torque divisor) { return div(divisor); } @Override - default Per per(TorqueUnit divisorUnit) { + public Per per(TorqueUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult> times(Velocity multiplier) { + public Mult> times(Velocity multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Velocity divisor) { + public Per> div(Velocity divisor) { return (Per>) Measure.super.div(divisor); } @@ -744,23 +753,23 @@ public interface Power extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Velocity divisor) { + public Per> divide(Velocity divisor) { return div(divisor); } @Override - default Per> per(VelocityUnit divisorUnit) { + public Per> per(VelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Voltage multiplier) { + public Mult times(Voltage multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Current div(Voltage divisor) { + public Current div(Voltage divisor) { return Amps.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -772,12 +781,12 @@ public interface Power extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Current divide(Voltage divisor) { + public Current divide(Voltage divisor) { return div(divisor); } @Override - default Current per(VoltageUnit divisorUnit) { + public Current per(VoltageUnit divisorUnit) { return div(divisorUnit.one()); } diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Resistance.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Resistance.java index 52d15b091a..81bff183c3 100644 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Resistance.java +++ b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Resistance.java @@ -10,36 +10,45 @@ import static edu.wpi.first.units.Units.*; import edu.wpi.first.units.*; @SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public interface Resistance extends Measure { - static Resistance ofRelativeUnits(double magnitude, ResistanceUnit unit) { - return new ImmutableResistance(magnitude, unit.toBaseUnits(magnitude), unit); +public record Resistance(double magnitude, double baseUnitMagnitude, ResistanceUnit unit) implements Measure { + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link ResistanceUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static Resistance ofRelativeUnits(double magnitude, ResistanceUnit unit) { + return new Resistance(magnitude, unit.toBaseUnits(magnitude), unit); } - static Resistance ofBaseUnits(double baseUnitMagnitude, ResistanceUnit unit) { - return new ImmutableResistance(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link ResistanceUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit's base unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static Resistance ofBaseUnits(double baseUnitMagnitude, ResistanceUnit unit) { + return new Resistance(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); } @Override - Resistance copy(); + public ResistanceUnit baseUnit() { return (ResistanceUnit) unit().getBaseUnit(); } @Override - default MutResistance mutableCopy() { - return new MutResistance(magnitude(), baseUnitMagnitude(), unit()); - } - - @Override - ResistanceUnit unit(); - - @Override - default ResistanceUnit baseUnit() { return (ResistanceUnit) unit().getBaseUnit(); } - - @Override - default double in(ResistanceUnit unit) { + public double in(ResistanceUnit unit) { return unit.fromBaseUnits(baseUnitMagnitude()); } @Override - default Resistance unaryMinus() { + @SuppressWarnings("rawtypes") + public boolean equals(Object object) { + return object instanceof Resistance m && isEquivalent(m); + } + + @Override + public Resistance unaryMinus() { return (Resistance) unit().ofBaseUnits(0 - baseUnitMagnitude()); } @@ -51,27 +60,27 @@ public interface Resistance extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Resistance negate() { + public Resistance negate() { return (Resistance) unaryMinus(); } @Override - default Resistance plus(Measure other) { + public Resistance plus(Measure other) { return (Resistance) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude()); } @Override - default Resistance minus(Measure other) { + public Resistance minus(Measure other) { return (Resistance) unit().ofBaseUnits(baseUnitMagnitude() - other.baseUnitMagnitude()); } @Override - default Resistance times(double multiplier) { + public Resistance times(double multiplier) { return (Resistance) unit().ofBaseUnits(baseUnitMagnitude() * multiplier); } @Override - default Resistance div(double divisor) { + public Resistance div(double divisor) { return (Resistance) unit().ofBaseUnits(baseUnitMagnitude() / divisor); } @@ -83,18 +92,18 @@ public interface Resistance extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Resistance divide(double divisor) { + public Resistance divide(double divisor) { return (Resistance) div(divisor); } @Override - default Mult> times(Acceleration multiplier) { + public Mult> times(Acceleration multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Acceleration divisor) { + public Per> div(Acceleration divisor) { return (Per>) Measure.super.div(divisor); } @@ -106,23 +115,23 @@ public interface Resistance extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Acceleration divisor) { + public Per> divide(Acceleration divisor) { return div(divisor); } @Override - default Per> per(AccelerationUnit divisorUnit) { + public Per> per(AccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Angle multiplier) { + public Mult times(Angle multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Angle divisor) { + public Per div(Angle divisor) { return (Per) Measure.super.div(divisor); } @@ -134,23 +143,23 @@ public interface Resistance extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Angle divisor) { + public Per divide(Angle divisor) { return div(divisor); } @Override - default Per per(AngleUnit divisorUnit) { + public Per per(AngleUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularAcceleration multiplier) { + public Mult times(AngularAcceleration multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularAcceleration divisor) { + public Per div(AngularAcceleration divisor) { return (Per) Measure.super.div(divisor); } @@ -162,23 +171,23 @@ public interface Resistance extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularAcceleration divisor) { + public Per divide(AngularAcceleration divisor) { return div(divisor); } @Override - default Per per(AngularAccelerationUnit divisorUnit) { + public Per per(AngularAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularMomentum multiplier) { + public Mult times(AngularMomentum multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularMomentum divisor) { + public Per div(AngularMomentum divisor) { return (Per) Measure.super.div(divisor); } @@ -190,23 +199,23 @@ public interface Resistance extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularMomentum divisor) { + public Per divide(AngularMomentum divisor) { return div(divisor); } @Override - default Per per(AngularMomentumUnit divisorUnit) { + public Per per(AngularMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularVelocity multiplier) { + public Mult times(AngularVelocity multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularVelocity divisor) { + public Per div(AngularVelocity divisor) { return (Per) Measure.super.div(divisor); } @@ -218,23 +227,23 @@ public interface Resistance extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularVelocity divisor) { + public Per divide(AngularVelocity divisor) { return div(divisor); } @Override - default Per per(AngularVelocityUnit divisorUnit) { + public Per per(AngularVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Voltage times(Current multiplier) { + public Voltage times(Current multiplier) { return Volts.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Per div(Current divisor) { + public Per div(Current divisor) { return (Per) Measure.super.div(divisor); } @@ -246,17 +255,17 @@ public interface Resistance extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Current divisor) { + public Per divide(Current divisor) { return div(divisor); } @Override - default Per per(CurrentUnit divisorUnit) { + public Per per(CurrentUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Resistance div(Dimensionless divisor) { + public Resistance div(Dimensionless divisor) { return (Resistance) Ohms.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -268,23 +277,23 @@ public interface Resistance extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Resistance divide(Dimensionless divisor) { + public Resistance divide(Dimensionless divisor) { return (Resistance) div(divisor); } @Override - default Resistance times(Dimensionless multiplier) { + public Resistance times(Dimensionless multiplier) { return (Resistance) Ohms.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Mult times(Distance multiplier) { + public Mult times(Distance multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Distance divisor) { + public Per div(Distance divisor) { return (Per) Measure.super.div(divisor); } @@ -296,23 +305,23 @@ public interface Resistance extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Distance divisor) { + public Per divide(Distance divisor) { return div(divisor); } @Override - default Per per(DistanceUnit divisorUnit) { + public Per per(DistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Energy multiplier) { + public Mult times(Energy multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Energy divisor) { + public Per div(Energy divisor) { return (Per) Measure.super.div(divisor); } @@ -324,23 +333,23 @@ public interface Resistance extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Energy divisor) { + public Per divide(Energy divisor) { return div(divisor); } @Override - default Per per(EnergyUnit divisorUnit) { + public Per per(EnergyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Force multiplier) { + public Mult times(Force multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Force divisor) { + public Per div(Force divisor) { return (Per) Measure.super.div(divisor); } @@ -352,23 +361,23 @@ public interface Resistance extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Force divisor) { + public Per divide(Force divisor) { return div(divisor); } @Override - default Per per(ForceUnit divisorUnit) { + public Per per(ForceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Frequency multiplier) { + public Mult times(Frequency multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Frequency divisor) { + public Per div(Frequency divisor) { return (Per) Measure.super.div(divisor); } @@ -380,23 +389,23 @@ public interface Resistance extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Frequency divisor) { + public Per divide(Frequency divisor) { return div(divisor); } @Override - default Per per(FrequencyUnit divisorUnit) { + public Per per(FrequencyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearAcceleration multiplier) { + public Mult times(LinearAcceleration multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearAcceleration divisor) { + public Per div(LinearAcceleration divisor) { return (Per) Measure.super.div(divisor); } @@ -408,23 +417,23 @@ public interface Resistance extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearAcceleration divisor) { + public Per divide(LinearAcceleration divisor) { return div(divisor); } @Override - default Per per(LinearAccelerationUnit divisorUnit) { + public Per per(LinearAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearMomentum multiplier) { + public Mult times(LinearMomentum multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearMomentum divisor) { + public Per div(LinearMomentum divisor) { return (Per) Measure.super.div(divisor); } @@ -436,23 +445,23 @@ public interface Resistance extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearMomentum divisor) { + public Per divide(LinearMomentum divisor) { return div(divisor); } @Override - default Per per(LinearMomentumUnit divisorUnit) { + public Per per(LinearMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearVelocity multiplier) { + public Mult times(LinearVelocity multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearVelocity divisor) { + public Per div(LinearVelocity divisor) { return (Per) Measure.super.div(divisor); } @@ -464,23 +473,23 @@ public interface Resistance extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearVelocity divisor) { + public Per divide(LinearVelocity divisor) { return div(divisor); } @Override - default Per per(LinearVelocityUnit divisorUnit) { + public Per per(LinearVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Mass multiplier) { + public Mult times(Mass multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Mass divisor) { + public Per div(Mass divisor) { return (Per) Measure.super.div(divisor); } @@ -492,23 +501,23 @@ public interface Resistance extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Mass divisor) { + public Per divide(Mass divisor) { return div(divisor); } @Override - default Per per(MassUnit divisorUnit) { + public Per per(MassUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(MomentOfInertia multiplier) { + public Mult times(MomentOfInertia multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(MomentOfInertia divisor) { + public Per div(MomentOfInertia divisor) { return (Per) Measure.super.div(divisor); } @@ -520,23 +529,23 @@ public interface Resistance extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(MomentOfInertia divisor) { + public Per divide(MomentOfInertia divisor) { return div(divisor); } @Override - default Per per(MomentOfInertiaUnit divisorUnit) { + public Per per(MomentOfInertiaUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult> times(Mult multiplier) { + public Mult> times(Mult multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Mult divisor) { + public Per> div(Mult divisor) { return (Per>) Measure.super.div(divisor); } @@ -548,23 +557,23 @@ public interface Resistance extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Mult divisor) { + public Per> divide(Mult divisor) { return div(divisor); } @Override - default Per> per(MultUnit divisorUnit) { + public Per> per(MultUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult> times(Per multiplier) { + public Mult> times(Per multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Per divisor) { + public Per> div(Per divisor) { return (Per>) Measure.super.div(divisor); } @@ -576,23 +585,23 @@ public interface Resistance extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Per divisor) { + public Per> divide(Per divisor) { return div(divisor); } @Override - default Per> per(PerUnit divisorUnit) { + public Per> per(PerUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult times(Power multiplier) { + public Mult times(Power multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Power divisor) { + public Per div(Power divisor) { return (Per) Measure.super.div(divisor); } @@ -604,23 +613,23 @@ public interface Resistance extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Power divisor) { + public Per divide(Power divisor) { return div(divisor); } @Override - default Per per(PowerUnit divisorUnit) { + public Per per(PowerUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Resistance multiplier) { + public Mult times(Resistance multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Dimensionless div(Resistance divisor) { + public Dimensionless div(Resistance divisor) { return Value.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -632,23 +641,23 @@ public interface Resistance extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Dimensionless divide(Resistance divisor) { + public Dimensionless divide(Resistance divisor) { return div(divisor); } @Override - default Dimensionless per(ResistanceUnit divisorUnit) { + public Dimensionless per(ResistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Temperature multiplier) { + public Mult times(Temperature multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Temperature divisor) { + public Per div(Temperature divisor) { return (Per) Measure.super.div(divisor); } @@ -660,23 +669,23 @@ public interface Resistance extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Temperature divisor) { + public Per divide(Temperature divisor) { return div(divisor); } @Override - default Per per(TemperatureUnit divisorUnit) { + public Per per(TemperatureUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Time multiplier) { + public Mult times(Time multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Velocity div(Time divisor) { + public Velocity div(Time divisor) { return VelocityUnit.combine(unit(), divisor.unit()).ofBaseUnits(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -688,23 +697,23 @@ public interface Resistance extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Velocity divide(Time divisor) { + public Velocity divide(Time divisor) { return div(divisor); } @Override - default Velocity per(TimeUnit divisorUnit) { + public Velocity per(TimeUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Torque multiplier) { + public Mult times(Torque multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Torque divisor) { + public Per div(Torque divisor) { return (Per) Measure.super.div(divisor); } @@ -716,23 +725,23 @@ public interface Resistance extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Torque divisor) { + public Per divide(Torque divisor) { return div(divisor); } @Override - default Per per(TorqueUnit divisorUnit) { + public Per per(TorqueUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult> times(Velocity multiplier) { + public Mult> times(Velocity multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Velocity divisor) { + public Per> div(Velocity divisor) { return (Per>) Measure.super.div(divisor); } @@ -744,23 +753,23 @@ public interface Resistance extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Velocity divisor) { + public Per> divide(Velocity divisor) { return div(divisor); } @Override - default Per> per(VelocityUnit divisorUnit) { + public Per> per(VelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Voltage multiplier) { + public Mult times(Voltage multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Voltage divisor) { + public Per div(Voltage divisor) { return (Per) Measure.super.div(divisor); } @@ -772,12 +781,12 @@ public interface Resistance extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Voltage divisor) { + public Per divide(Voltage divisor) { return div(divisor); } @Override - default Per per(VoltageUnit divisorUnit) { + public Per per(VoltageUnit divisorUnit) { return div(divisorUnit.one()); } diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Temperature.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Temperature.java index 2d7983b846..a6fc0a5c7b 100644 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Temperature.java +++ b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Temperature.java @@ -10,36 +10,45 @@ import static edu.wpi.first.units.Units.*; import edu.wpi.first.units.*; @SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public interface Temperature extends Measure { - static Temperature ofRelativeUnits(double magnitude, TemperatureUnit unit) { - return new ImmutableTemperature(magnitude, unit.toBaseUnits(magnitude), unit); +public record Temperature(double magnitude, double baseUnitMagnitude, TemperatureUnit unit) implements Measure { + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link TemperatureUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static Temperature ofRelativeUnits(double magnitude, TemperatureUnit unit) { + return new Temperature(magnitude, unit.toBaseUnits(magnitude), unit); } - static Temperature ofBaseUnits(double baseUnitMagnitude, TemperatureUnit unit) { - return new ImmutableTemperature(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link TemperatureUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit's base unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static Temperature ofBaseUnits(double baseUnitMagnitude, TemperatureUnit unit) { + return new Temperature(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); } @Override - Temperature copy(); + public TemperatureUnit baseUnit() { return (TemperatureUnit) unit().getBaseUnit(); } @Override - default MutTemperature mutableCopy() { - return new MutTemperature(magnitude(), baseUnitMagnitude(), unit()); - } - - @Override - TemperatureUnit unit(); - - @Override - default TemperatureUnit baseUnit() { return (TemperatureUnit) unit().getBaseUnit(); } - - @Override - default double in(TemperatureUnit unit) { + public double in(TemperatureUnit unit) { return unit.fromBaseUnits(baseUnitMagnitude()); } @Override - default Temperature unaryMinus() { + @SuppressWarnings("rawtypes") + public boolean equals(Object object) { + return object instanceof Temperature m && isEquivalent(m); + } + + @Override + public Temperature unaryMinus() { return (Temperature) unit().ofBaseUnits(0 - baseUnitMagnitude()); } @@ -51,27 +60,27 @@ public interface Temperature extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Temperature negate() { + public Temperature negate() { return (Temperature) unaryMinus(); } @Override - default Temperature plus(Measure other) { + public Temperature plus(Measure other) { return (Temperature) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude()); } @Override - default Temperature minus(Measure other) { + public Temperature minus(Measure other) { return (Temperature) unit().ofBaseUnits(baseUnitMagnitude() - other.baseUnitMagnitude()); } @Override - default Temperature times(double multiplier) { + public Temperature times(double multiplier) { return (Temperature) unit().ofBaseUnits(baseUnitMagnitude() * multiplier); } @Override - default Temperature div(double divisor) { + public Temperature div(double divisor) { return (Temperature) unit().ofBaseUnits(baseUnitMagnitude() / divisor); } @@ -83,18 +92,18 @@ public interface Temperature extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Temperature divide(double divisor) { + public Temperature divide(double divisor) { return (Temperature) div(divisor); } @Override - default Mult> times(Acceleration multiplier) { + public Mult> times(Acceleration multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Acceleration divisor) { + public Per> div(Acceleration divisor) { return (Per>) Measure.super.div(divisor); } @@ -106,23 +115,23 @@ public interface Temperature extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Acceleration divisor) { + public Per> divide(Acceleration divisor) { return div(divisor); } @Override - default Per> per(AccelerationUnit divisorUnit) { + public Per> per(AccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Angle multiplier) { + public Mult times(Angle multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Angle divisor) { + public Per div(Angle divisor) { return (Per) Measure.super.div(divisor); } @@ -134,23 +143,23 @@ public interface Temperature extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Angle divisor) { + public Per divide(Angle divisor) { return div(divisor); } @Override - default Per per(AngleUnit divisorUnit) { + public Per per(AngleUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularAcceleration multiplier) { + public Mult times(AngularAcceleration multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularAcceleration divisor) { + public Per div(AngularAcceleration divisor) { return (Per) Measure.super.div(divisor); } @@ -162,23 +171,23 @@ public interface Temperature extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularAcceleration divisor) { + public Per divide(AngularAcceleration divisor) { return div(divisor); } @Override - default Per per(AngularAccelerationUnit divisorUnit) { + public Per per(AngularAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularMomentum multiplier) { + public Mult times(AngularMomentum multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularMomentum divisor) { + public Per div(AngularMomentum divisor) { return (Per) Measure.super.div(divisor); } @@ -190,23 +199,23 @@ public interface Temperature extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularMomentum divisor) { + public Per divide(AngularMomentum divisor) { return div(divisor); } @Override - default Per per(AngularMomentumUnit divisorUnit) { + public Per per(AngularMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularVelocity multiplier) { + public Mult times(AngularVelocity multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularVelocity divisor) { + public Per div(AngularVelocity divisor) { return (Per) Measure.super.div(divisor); } @@ -218,23 +227,23 @@ public interface Temperature extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularVelocity divisor) { + public Per divide(AngularVelocity divisor) { return div(divisor); } @Override - default Per per(AngularVelocityUnit divisorUnit) { + public Per per(AngularVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Current multiplier) { + public Mult times(Current multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Current divisor) { + public Per div(Current divisor) { return (Per) Measure.super.div(divisor); } @@ -246,17 +255,17 @@ public interface Temperature extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Current divisor) { + public Per divide(Current divisor) { return div(divisor); } @Override - default Per per(CurrentUnit divisorUnit) { + public Per per(CurrentUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Temperature div(Dimensionless divisor) { + public Temperature div(Dimensionless divisor) { return (Temperature) Kelvin.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -268,23 +277,23 @@ public interface Temperature extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Temperature divide(Dimensionless divisor) { + public Temperature divide(Dimensionless divisor) { return (Temperature) div(divisor); } @Override - default Temperature times(Dimensionless multiplier) { + public Temperature times(Dimensionless multiplier) { return (Temperature) Kelvin.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Mult times(Distance multiplier) { + public Mult times(Distance multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Distance divisor) { + public Per div(Distance divisor) { return (Per) Measure.super.div(divisor); } @@ -296,23 +305,23 @@ public interface Temperature extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Distance divisor) { + public Per divide(Distance divisor) { return div(divisor); } @Override - default Per per(DistanceUnit divisorUnit) { + public Per per(DistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Energy multiplier) { + public Mult times(Energy multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Energy divisor) { + public Per div(Energy divisor) { return (Per) Measure.super.div(divisor); } @@ -324,23 +333,23 @@ public interface Temperature extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Energy divisor) { + public Per divide(Energy divisor) { return div(divisor); } @Override - default Per per(EnergyUnit divisorUnit) { + public Per per(EnergyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Force multiplier) { + public Mult times(Force multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Force divisor) { + public Per div(Force divisor) { return (Per) Measure.super.div(divisor); } @@ -352,23 +361,23 @@ public interface Temperature extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Force divisor) { + public Per divide(Force divisor) { return div(divisor); } @Override - default Per per(ForceUnit divisorUnit) { + public Per per(ForceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Frequency multiplier) { + public Mult times(Frequency multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Frequency divisor) { + public Per div(Frequency divisor) { return (Per) Measure.super.div(divisor); } @@ -380,23 +389,23 @@ public interface Temperature extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Frequency divisor) { + public Per divide(Frequency divisor) { return div(divisor); } @Override - default Per per(FrequencyUnit divisorUnit) { + public Per per(FrequencyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearAcceleration multiplier) { + public Mult times(LinearAcceleration multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearAcceleration divisor) { + public Per div(LinearAcceleration divisor) { return (Per) Measure.super.div(divisor); } @@ -408,23 +417,23 @@ public interface Temperature extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearAcceleration divisor) { + public Per divide(LinearAcceleration divisor) { return div(divisor); } @Override - default Per per(LinearAccelerationUnit divisorUnit) { + public Per per(LinearAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearMomentum multiplier) { + public Mult times(LinearMomentum multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearMomentum divisor) { + public Per div(LinearMomentum divisor) { return (Per) Measure.super.div(divisor); } @@ -436,23 +445,23 @@ public interface Temperature extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearMomentum divisor) { + public Per divide(LinearMomentum divisor) { return div(divisor); } @Override - default Per per(LinearMomentumUnit divisorUnit) { + public Per per(LinearMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearVelocity multiplier) { + public Mult times(LinearVelocity multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearVelocity divisor) { + public Per div(LinearVelocity divisor) { return (Per) Measure.super.div(divisor); } @@ -464,23 +473,23 @@ public interface Temperature extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearVelocity divisor) { + public Per divide(LinearVelocity divisor) { return div(divisor); } @Override - default Per per(LinearVelocityUnit divisorUnit) { + public Per per(LinearVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Mass multiplier) { + public Mult times(Mass multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Mass divisor) { + public Per div(Mass divisor) { return (Per) Measure.super.div(divisor); } @@ -492,23 +501,23 @@ public interface Temperature extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Mass divisor) { + public Per divide(Mass divisor) { return div(divisor); } @Override - default Per per(MassUnit divisorUnit) { + public Per per(MassUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(MomentOfInertia multiplier) { + public Mult times(MomentOfInertia multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(MomentOfInertia divisor) { + public Per div(MomentOfInertia divisor) { return (Per) Measure.super.div(divisor); } @@ -520,23 +529,23 @@ public interface Temperature extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(MomentOfInertia divisor) { + public Per divide(MomentOfInertia divisor) { return div(divisor); } @Override - default Per per(MomentOfInertiaUnit divisorUnit) { + public Per per(MomentOfInertiaUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult> times(Mult multiplier) { + public Mult> times(Mult multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Mult divisor) { + public Per> div(Mult divisor) { return (Per>) Measure.super.div(divisor); } @@ -548,23 +557,23 @@ public interface Temperature extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Mult divisor) { + public Per> divide(Mult divisor) { return div(divisor); } @Override - default Per> per(MultUnit divisorUnit) { + public Per> per(MultUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult> times(Per multiplier) { + public Mult> times(Per multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Per divisor) { + public Per> div(Per divisor) { return (Per>) Measure.super.div(divisor); } @@ -576,23 +585,23 @@ public interface Temperature extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Per divisor) { + public Per> divide(Per divisor) { return div(divisor); } @Override - default Per> per(PerUnit divisorUnit) { + public Per> per(PerUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult times(Power multiplier) { + public Mult times(Power multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Power divisor) { + public Per div(Power divisor) { return (Per) Measure.super.div(divisor); } @@ -604,23 +613,23 @@ public interface Temperature extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Power divisor) { + public Per divide(Power divisor) { return div(divisor); } @Override - default Per per(PowerUnit divisorUnit) { + public Per per(PowerUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Resistance multiplier) { + public Mult times(Resistance multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Resistance divisor) { + public Per div(Resistance divisor) { return (Per) Measure.super.div(divisor); } @@ -632,23 +641,23 @@ public interface Temperature extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Resistance divisor) { + public Per divide(Resistance divisor) { return div(divisor); } @Override - default Per per(ResistanceUnit divisorUnit) { + public Per per(ResistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Temperature multiplier) { + public Mult times(Temperature multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Dimensionless div(Temperature divisor) { + public Dimensionless div(Temperature divisor) { return Value.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -660,23 +669,23 @@ public interface Temperature extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Dimensionless divide(Temperature divisor) { + public Dimensionless divide(Temperature divisor) { return div(divisor); } @Override - default Dimensionless per(TemperatureUnit divisorUnit) { + public Dimensionless per(TemperatureUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Time multiplier) { + public Mult times(Time multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Velocity div(Time divisor) { + public Velocity div(Time divisor) { return VelocityUnit.combine(unit(), divisor.unit()).ofBaseUnits(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -688,23 +697,23 @@ public interface Temperature extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Velocity divide(Time divisor) { + public Velocity divide(Time divisor) { return div(divisor); } @Override - default Velocity per(TimeUnit divisorUnit) { + public Velocity per(TimeUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Torque multiplier) { + public Mult times(Torque multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Torque divisor) { + public Per div(Torque divisor) { return (Per) Measure.super.div(divisor); } @@ -716,23 +725,23 @@ public interface Temperature extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Torque divisor) { + public Per divide(Torque divisor) { return div(divisor); } @Override - default Per per(TorqueUnit divisorUnit) { + public Per per(TorqueUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult> times(Velocity multiplier) { + public Mult> times(Velocity multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Velocity divisor) { + public Per> div(Velocity divisor) { return (Per>) Measure.super.div(divisor); } @@ -744,23 +753,23 @@ public interface Temperature extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Velocity divisor) { + public Per> divide(Velocity divisor) { return div(divisor); } @Override - default Per> per(VelocityUnit divisorUnit) { + public Per> per(VelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Voltage multiplier) { + public Mult times(Voltage multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Voltage divisor) { + public Per div(Voltage divisor) { return (Per) Measure.super.div(divisor); } @@ -772,12 +781,12 @@ public interface Temperature extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Voltage divisor) { + public Per divide(Voltage divisor) { return div(divisor); } @Override - default Per per(VoltageUnit divisorUnit) { + public Per per(VoltageUnit divisorUnit) { return div(divisorUnit.one()); } diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Time.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Time.java index 4244325a26..2c95f2bf2e 100644 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Time.java +++ b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Time.java @@ -10,36 +10,45 @@ import static edu.wpi.first.units.Units.*; import edu.wpi.first.units.*; @SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public interface Time extends Measure { - static Time ofRelativeUnits(double magnitude, TimeUnit unit) { - return new ImmutableTime(magnitude, unit.toBaseUnits(magnitude), unit); +public record Time(double magnitude, double baseUnitMagnitude, TimeUnit unit) implements Measure { + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link TimeUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static Time ofRelativeUnits(double magnitude, TimeUnit unit) { + return new Time(magnitude, unit.toBaseUnits(magnitude), unit); } - static Time ofBaseUnits(double baseUnitMagnitude, TimeUnit unit) { - return new ImmutableTime(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link TimeUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit's base unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static Time ofBaseUnits(double baseUnitMagnitude, TimeUnit unit) { + return new Time(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); } @Override - Time copy(); + public TimeUnit baseUnit() { return (TimeUnit) unit().getBaseUnit(); } @Override - default MutTime mutableCopy() { - return new MutTime(magnitude(), baseUnitMagnitude(), unit()); - } - - @Override - TimeUnit unit(); - - @Override - default TimeUnit baseUnit() { return (TimeUnit) unit().getBaseUnit(); } - - @Override - default double in(TimeUnit unit) { + public double in(TimeUnit unit) { return unit.fromBaseUnits(baseUnitMagnitude()); } @Override - default Time unaryMinus() { + @SuppressWarnings("rawtypes") + public boolean equals(Object object) { + return object instanceof Time m && isEquivalent(m); + } + + @Override + public Time unaryMinus() { return (Time) unit().ofBaseUnits(0 - baseUnitMagnitude()); } @@ -51,27 +60,27 @@ public interface Time extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Time negate() { + public Time negate() { return (Time) unaryMinus(); } @Override - default Time plus(Measure other) { + public Time plus(Measure other) { return (Time) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude()); } @Override - default Time minus(Measure other) { + public Time minus(Measure other) { return (Time) unit().ofBaseUnits(baseUnitMagnitude() - other.baseUnitMagnitude()); } @Override - default Time times(double multiplier) { + public Time times(double multiplier) { return (Time) unit().ofBaseUnits(baseUnitMagnitude() * multiplier); } @Override - default Time div(double divisor) { + public Time div(double divisor) { return (Time) unit().ofBaseUnits(baseUnitMagnitude() / divisor); } @@ -83,18 +92,18 @@ public interface Time extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Time divide(double divisor) { + public Time divide(double divisor) { return (Time) div(divisor); } @Override - default Mult> times(Acceleration multiplier) { + public Mult> times(Acceleration multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Acceleration divisor) { + public Per> div(Acceleration divisor) { return (Per>) Measure.super.div(divisor); } @@ -106,23 +115,23 @@ public interface Time extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Acceleration divisor) { + public Per> divide(Acceleration divisor) { return div(divisor); } @Override - default Per> per(AccelerationUnit divisorUnit) { + public Per> per(AccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Angle multiplier) { + public Mult times(Angle multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Angle divisor) { + public Per div(Angle divisor) { return (Per) Measure.super.div(divisor); } @@ -134,23 +143,23 @@ public interface Time extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Angle divisor) { + public Per divide(Angle divisor) { return div(divisor); } @Override - default Per per(AngleUnit divisorUnit) { + public Per per(AngleUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default AngularVelocity times(AngularAcceleration multiplier) { + public AngularVelocity times(AngularAcceleration multiplier) { return RadiansPerSecond.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Per div(AngularAcceleration divisor) { + public Per div(AngularAcceleration divisor) { return (Per) Measure.super.div(divisor); } @@ -162,23 +171,23 @@ public interface Time extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularAcceleration divisor) { + public Per divide(AngularAcceleration divisor) { return div(divisor); } @Override - default Per per(AngularAccelerationUnit divisorUnit) { + public Per per(AngularAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularMomentum multiplier) { + public Mult times(AngularMomentum multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularMomentum divisor) { + public Per div(AngularMomentum divisor) { return (Per) Measure.super.div(divisor); } @@ -190,23 +199,23 @@ public interface Time extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularMomentum divisor) { + public Per divide(AngularMomentum divisor) { return div(divisor); } @Override - default Per per(AngularMomentumUnit divisorUnit) { + public Per per(AngularMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Angle times(AngularVelocity multiplier) { + public Angle times(AngularVelocity multiplier) { return Radians.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Per div(AngularVelocity divisor) { + public Per div(AngularVelocity divisor) { return (Per) Measure.super.div(divisor); } @@ -218,23 +227,23 @@ public interface Time extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularVelocity divisor) { + public Per divide(AngularVelocity divisor) { return div(divisor); } @Override - default Per per(AngularVelocityUnit divisorUnit) { + public Per per(AngularVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Current multiplier) { + public Mult times(Current multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Current divisor) { + public Per div(Current divisor) { return (Per) Measure.super.div(divisor); } @@ -246,17 +255,17 @@ public interface Time extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Current divisor) { + public Per divide(Current divisor) { return div(divisor); } @Override - default Per per(CurrentUnit divisorUnit) { + public Per per(CurrentUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Time div(Dimensionless divisor) { + public Time div(Dimensionless divisor) { return (Time) Seconds.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -268,23 +277,23 @@ public interface Time extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Time divide(Dimensionless divisor) { + public Time divide(Dimensionless divisor) { return (Time) div(divisor); } @Override - default Time times(Dimensionless multiplier) { + public Time times(Dimensionless multiplier) { return (Time) Seconds.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Mult times(Distance multiplier) { + public Mult times(Distance multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Distance divisor) { + public Per div(Distance divisor) { return (Per) Measure.super.div(divisor); } @@ -296,23 +305,23 @@ public interface Time extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Distance divisor) { + public Per divide(Distance divisor) { return div(divisor); } @Override - default Per per(DistanceUnit divisorUnit) { + public Per per(DistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Energy multiplier) { + public Mult times(Energy multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Energy divisor) { + public Per div(Energy divisor) { return (Per) Measure.super.div(divisor); } @@ -324,23 +333,23 @@ public interface Time extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Energy divisor) { + public Per divide(Energy divisor) { return div(divisor); } @Override - default Per per(EnergyUnit divisorUnit) { + public Per per(EnergyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Force multiplier) { + public Mult times(Force multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Force divisor) { + public Per div(Force divisor) { return (Per) Measure.super.div(divisor); } @@ -352,23 +361,23 @@ public interface Time extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Force divisor) { + public Per divide(Force divisor) { return div(divisor); } @Override - default Per per(ForceUnit divisorUnit) { + public Per per(ForceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Dimensionless times(Frequency multiplier) { + public Dimensionless times(Frequency multiplier) { return Value.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Per div(Frequency divisor) { + public Per div(Frequency divisor) { return (Per) Measure.super.div(divisor); } @@ -380,23 +389,23 @@ public interface Time extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Frequency divisor) { + public Per divide(Frequency divisor) { return div(divisor); } @Override - default Per per(FrequencyUnit divisorUnit) { + public Per per(FrequencyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default LinearVelocity times(LinearAcceleration multiplier) { + public LinearVelocity times(LinearAcceleration multiplier) { return MetersPerSecond.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Per div(LinearAcceleration divisor) { + public Per div(LinearAcceleration divisor) { return (Per) Measure.super.div(divisor); } @@ -408,23 +417,23 @@ public interface Time extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearAcceleration divisor) { + public Per divide(LinearAcceleration divisor) { return div(divisor); } @Override - default Per per(LinearAccelerationUnit divisorUnit) { + public Per per(LinearAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearMomentum multiplier) { + public Mult times(LinearMomentum multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearMomentum divisor) { + public Per div(LinearMomentum divisor) { return (Per) Measure.super.div(divisor); } @@ -436,23 +445,23 @@ public interface Time extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearMomentum divisor) { + public Per divide(LinearMomentum divisor) { return div(divisor); } @Override - default Per per(LinearMomentumUnit divisorUnit) { + public Per per(LinearMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Distance times(LinearVelocity multiplier) { + public Distance times(LinearVelocity multiplier) { return Meters.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Per div(LinearVelocity divisor) { + public Per div(LinearVelocity divisor) { return (Per) Measure.super.div(divisor); } @@ -464,23 +473,23 @@ public interface Time extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearVelocity divisor) { + public Per divide(LinearVelocity divisor) { return div(divisor); } @Override - default Per per(LinearVelocityUnit divisorUnit) { + public Per per(LinearVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Mass multiplier) { + public Mult times(Mass multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Mass divisor) { + public Per div(Mass divisor) { return (Per) Measure.super.div(divisor); } @@ -492,23 +501,23 @@ public interface Time extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Mass divisor) { + public Per divide(Mass divisor) { return div(divisor); } @Override - default Per per(MassUnit divisorUnit) { + public Per per(MassUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(MomentOfInertia multiplier) { + public Mult times(MomentOfInertia multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(MomentOfInertia divisor) { + public Per div(MomentOfInertia divisor) { return (Per) Measure.super.div(divisor); } @@ -520,23 +529,23 @@ public interface Time extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(MomentOfInertia divisor) { + public Per divide(MomentOfInertia divisor) { return div(divisor); } @Override - default Per per(MomentOfInertiaUnit divisorUnit) { + public Per per(MomentOfInertiaUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult> times(Mult multiplier) { + public Mult> times(Mult multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Mult divisor) { + public Per> div(Mult divisor) { return (Per>) Measure.super.div(divisor); } @@ -548,23 +557,23 @@ public interface Time extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Mult divisor) { + public Per> divide(Mult divisor) { return div(divisor); } @Override - default Per> per(MultUnit divisorUnit) { + public Per> per(MultUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult> times(Per multiplier) { + public Mult> times(Per multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Per divisor) { + public Per> div(Per divisor) { return (Per>) Measure.super.div(divisor); } @@ -576,23 +585,23 @@ public interface Time extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Per divisor) { + public Per> divide(Per divisor) { return div(divisor); } @Override - default Per> per(PerUnit divisorUnit) { + public Per> per(PerUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult times(Power multiplier) { + public Mult times(Power multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Power divisor) { + public Per div(Power divisor) { return (Per) Measure.super.div(divisor); } @@ -604,23 +613,23 @@ public interface Time extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Power divisor) { + public Per divide(Power divisor) { return div(divisor); } @Override - default Per per(PowerUnit divisorUnit) { + public Per per(PowerUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Resistance multiplier) { + public Mult times(Resistance multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Resistance divisor) { + public Per div(Resistance divisor) { return (Per) Measure.super.div(divisor); } @@ -632,23 +641,23 @@ public interface Time extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Resistance divisor) { + public Per divide(Resistance divisor) { return div(divisor); } @Override - default Per per(ResistanceUnit divisorUnit) { + public Per per(ResistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Temperature multiplier) { + public Mult times(Temperature multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Temperature divisor) { + public Per div(Temperature divisor) { return (Per) Measure.super.div(divisor); } @@ -660,23 +669,23 @@ public interface Time extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Temperature divisor) { + public Per divide(Temperature divisor) { return div(divisor); } @Override - default Per per(TemperatureUnit divisorUnit) { + public Per per(TemperatureUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Time multiplier) { + public Mult times(Time multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Dimensionless div(Time divisor) { + public Dimensionless div(Time divisor) { return Value.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -688,23 +697,23 @@ public interface Time extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Dimensionless divide(Time divisor) { + public Dimensionless divide(Time divisor) { return div(divisor); } @Override - default Dimensionless per(TimeUnit divisorUnit) { + public Dimensionless per(TimeUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Torque multiplier) { + public Mult times(Torque multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Torque divisor) { + public Per div(Torque divisor) { return (Per) Measure.super.div(divisor); } @@ -716,23 +725,23 @@ public interface Time extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Torque divisor) { + public Per divide(Torque divisor) { return div(divisor); } @Override - default Per per(TorqueUnit divisorUnit) { + public Per per(TorqueUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult> times(Velocity multiplier) { + public Mult> times(Velocity multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Velocity divisor) { + public Per> div(Velocity divisor) { return (Per>) Measure.super.div(divisor); } @@ -744,23 +753,23 @@ public interface Time extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Velocity divisor) { + public Per> divide(Velocity divisor) { return div(divisor); } @Override - default Per> per(VelocityUnit divisorUnit) { + public Per> per(VelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Voltage multiplier) { + public Mult times(Voltage multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Voltage divisor) { + public Per div(Voltage divisor) { return (Per) Measure.super.div(divisor); } @@ -772,13 +781,13 @@ public interface Time extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Voltage divisor) { + public Per divide(Voltage divisor) { return div(divisor); } @Override - default Per per(VoltageUnit divisorUnit) { + public Per per(VoltageUnit divisorUnit) { return div(divisorUnit.one()); } -default Frequency asFrequency() { return Hertz.of(1 / baseUnitMagnitude()); } +public Frequency asFrequency() { return Hertz.of(1 / baseUnitMagnitude()); } } diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Torque.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Torque.java index cc7ac69da5..4cf3afb123 100644 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Torque.java +++ b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Torque.java @@ -10,36 +10,45 @@ import static edu.wpi.first.units.Units.*; import edu.wpi.first.units.*; @SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public interface Torque extends Measure { - static Torque ofRelativeUnits(double magnitude, TorqueUnit unit) { - return new ImmutableTorque(magnitude, unit.toBaseUnits(magnitude), unit); +public record Torque(double magnitude, double baseUnitMagnitude, TorqueUnit unit) implements Measure { + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link TorqueUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static Torque ofRelativeUnits(double magnitude, TorqueUnit unit) { + return new Torque(magnitude, unit.toBaseUnits(magnitude), unit); } - static Torque ofBaseUnits(double baseUnitMagnitude, TorqueUnit unit) { - return new ImmutableTorque(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link TorqueUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit's base unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static Torque ofBaseUnits(double baseUnitMagnitude, TorqueUnit unit) { + return new Torque(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); } @Override - Torque copy(); + public TorqueUnit baseUnit() { return (TorqueUnit) unit().getBaseUnit(); } @Override - default MutTorque mutableCopy() { - return new MutTorque(magnitude(), baseUnitMagnitude(), unit()); - } - - @Override - TorqueUnit unit(); - - @Override - default TorqueUnit baseUnit() { return (TorqueUnit) unit().getBaseUnit(); } - - @Override - default double in(TorqueUnit unit) { + public double in(TorqueUnit unit) { return unit.fromBaseUnits(baseUnitMagnitude()); } @Override - default Torque unaryMinus() { + @SuppressWarnings("rawtypes") + public boolean equals(Object object) { + return object instanceof Torque m && isEquivalent(m); + } + + @Override + public Torque unaryMinus() { return (Torque) unit().ofBaseUnits(0 - baseUnitMagnitude()); } @@ -51,27 +60,27 @@ public interface Torque extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Torque negate() { + public Torque negate() { return (Torque) unaryMinus(); } @Override - default Torque plus(Measure other) { + public Torque plus(Measure other) { return (Torque) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude()); } @Override - default Torque minus(Measure other) { + public Torque minus(Measure other) { return (Torque) unit().ofBaseUnits(baseUnitMagnitude() - other.baseUnitMagnitude()); } @Override - default Torque times(double multiplier) { + public Torque times(double multiplier) { return (Torque) unit().ofBaseUnits(baseUnitMagnitude() * multiplier); } @Override - default Torque div(double divisor) { + public Torque div(double divisor) { return (Torque) unit().ofBaseUnits(baseUnitMagnitude() / divisor); } @@ -83,18 +92,18 @@ public interface Torque extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Torque divide(double divisor) { + public Torque divide(double divisor) { return (Torque) div(divisor); } @Override - default Mult> times(Acceleration multiplier) { + public Mult> times(Acceleration multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Acceleration divisor) { + public Per> div(Acceleration divisor) { return (Per>) Measure.super.div(divisor); } @@ -106,23 +115,23 @@ public interface Torque extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Acceleration divisor) { + public Per> divide(Acceleration divisor) { return div(divisor); } @Override - default Per> per(AccelerationUnit divisorUnit) { + public Per> per(AccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Angle multiplier) { + public Mult times(Angle multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Angle divisor) { + public Per div(Angle divisor) { return (Per) Measure.super.div(divisor); } @@ -134,23 +143,23 @@ public interface Torque extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Angle divisor) { + public Per divide(Angle divisor) { return div(divisor); } @Override - default Per per(AngleUnit divisorUnit) { + public Per per(AngleUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularAcceleration multiplier) { + public Mult times(AngularAcceleration multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularAcceleration divisor) { + public Per div(AngularAcceleration divisor) { return (Per) Measure.super.div(divisor); } @@ -162,23 +171,23 @@ public interface Torque extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularAcceleration divisor) { + public Per divide(AngularAcceleration divisor) { return div(divisor); } @Override - default Per per(AngularAccelerationUnit divisorUnit) { + public Per per(AngularAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularMomentum multiplier) { + public Mult times(AngularMomentum multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularMomentum divisor) { + public Per div(AngularMomentum divisor) { return (Per) Measure.super.div(divisor); } @@ -190,23 +199,23 @@ public interface Torque extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularMomentum divisor) { + public Per divide(AngularMomentum divisor) { return div(divisor); } @Override - default Per per(AngularMomentumUnit divisorUnit) { + public Per per(AngularMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularVelocity multiplier) { + public Mult times(AngularVelocity multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularVelocity divisor) { + public Per div(AngularVelocity divisor) { return (Per) Measure.super.div(divisor); } @@ -218,23 +227,23 @@ public interface Torque extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularVelocity divisor) { + public Per divide(AngularVelocity divisor) { return div(divisor); } @Override - default Per per(AngularVelocityUnit divisorUnit) { + public Per per(AngularVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Current multiplier) { + public Mult times(Current multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Current divisor) { + public Per div(Current divisor) { return (Per) Measure.super.div(divisor); } @@ -246,17 +255,17 @@ public interface Torque extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Current divisor) { + public Per divide(Current divisor) { return div(divisor); } @Override - default Per per(CurrentUnit divisorUnit) { + public Per per(CurrentUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Torque div(Dimensionless divisor) { + public Torque div(Dimensionless divisor) { return (Torque) NewtonMeters.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -268,23 +277,23 @@ public interface Torque extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Torque divide(Dimensionless divisor) { + public Torque divide(Dimensionless divisor) { return (Torque) div(divisor); } @Override - default Torque times(Dimensionless multiplier) { + public Torque times(Dimensionless multiplier) { return (Torque) NewtonMeters.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Mult times(Distance multiplier) { + public Mult times(Distance multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Force div(Distance divisor) { + public Force div(Distance divisor) { return Newtons.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -296,23 +305,23 @@ public interface Torque extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Force divide(Distance divisor) { + public Force divide(Distance divisor) { return div(divisor); } @Override - default Force per(DistanceUnit divisorUnit) { + public Force per(DistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Energy multiplier) { + public Mult times(Energy multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Energy divisor) { + public Per div(Energy divisor) { return (Per) Measure.super.div(divisor); } @@ -324,23 +333,23 @@ public interface Torque extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Energy divisor) { + public Per divide(Energy divisor) { return div(divisor); } @Override - default Per per(EnergyUnit divisorUnit) { + public Per per(EnergyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Force multiplier) { + public Mult times(Force multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Distance div(Force divisor) { + public Distance div(Force divisor) { return Meters.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -352,23 +361,23 @@ public interface Torque extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Distance divide(Force divisor) { + public Distance divide(Force divisor) { return div(divisor); } @Override - default Distance per(ForceUnit divisorUnit) { + public Distance per(ForceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Frequency multiplier) { + public Mult times(Frequency multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Frequency divisor) { + public Per div(Frequency divisor) { return (Per) Measure.super.div(divisor); } @@ -380,23 +389,23 @@ public interface Torque extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Frequency divisor) { + public Per divide(Frequency divisor) { return div(divisor); } @Override - default Per per(FrequencyUnit divisorUnit) { + public Per per(FrequencyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearAcceleration multiplier) { + public Mult times(LinearAcceleration multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearAcceleration divisor) { + public Per div(LinearAcceleration divisor) { return (Per) Measure.super.div(divisor); } @@ -408,23 +417,23 @@ public interface Torque extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearAcceleration divisor) { + public Per divide(LinearAcceleration divisor) { return div(divisor); } @Override - default Per per(LinearAccelerationUnit divisorUnit) { + public Per per(LinearAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearMomentum multiplier) { + public Mult times(LinearMomentum multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearMomentum divisor) { + public Per div(LinearMomentum divisor) { return (Per) Measure.super.div(divisor); } @@ -436,23 +445,23 @@ public interface Torque extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearMomentum divisor) { + public Per divide(LinearMomentum divisor) { return div(divisor); } @Override - default Per per(LinearMomentumUnit divisorUnit) { + public Per per(LinearMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearVelocity multiplier) { + public Mult times(LinearVelocity multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearVelocity divisor) { + public Per div(LinearVelocity divisor) { return (Per) Measure.super.div(divisor); } @@ -464,23 +473,23 @@ public interface Torque extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearVelocity divisor) { + public Per divide(LinearVelocity divisor) { return div(divisor); } @Override - default Per per(LinearVelocityUnit divisorUnit) { + public Per per(LinearVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Mass multiplier) { + public Mult times(Mass multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Mass divisor) { + public Per div(Mass divisor) { return (Per) Measure.super.div(divisor); } @@ -492,23 +501,23 @@ public interface Torque extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Mass divisor) { + public Per divide(Mass divisor) { return div(divisor); } @Override - default Per per(MassUnit divisorUnit) { + public Per per(MassUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(MomentOfInertia multiplier) { + public Mult times(MomentOfInertia multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(MomentOfInertia divisor) { + public Per div(MomentOfInertia divisor) { return (Per) Measure.super.div(divisor); } @@ -520,23 +529,23 @@ public interface Torque extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(MomentOfInertia divisor) { + public Per divide(MomentOfInertia divisor) { return div(divisor); } @Override - default Per per(MomentOfInertiaUnit divisorUnit) { + public Per per(MomentOfInertiaUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult> times(Mult multiplier) { + public Mult> times(Mult multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Mult divisor) { + public Per> div(Mult divisor) { return (Per>) Measure.super.div(divisor); } @@ -548,23 +557,23 @@ public interface Torque extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Mult divisor) { + public Per> divide(Mult divisor) { return div(divisor); } @Override - default Per> per(MultUnit divisorUnit) { + public Per> per(MultUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult> times(Per multiplier) { + public Mult> times(Per multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Per divisor) { + public Per> div(Per divisor) { return (Per>) Measure.super.div(divisor); } @@ -576,23 +585,23 @@ public interface Torque extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Per divisor) { + public Per> divide(Per divisor) { return div(divisor); } @Override - default Per> per(PerUnit divisorUnit) { + public Per> per(PerUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult times(Power multiplier) { + public Mult times(Power multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Power divisor) { + public Per div(Power divisor) { return (Per) Measure.super.div(divisor); } @@ -604,23 +613,23 @@ public interface Torque extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Power divisor) { + public Per divide(Power divisor) { return div(divisor); } @Override - default Per per(PowerUnit divisorUnit) { + public Per per(PowerUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Resistance multiplier) { + public Mult times(Resistance multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Resistance divisor) { + public Per div(Resistance divisor) { return (Per) Measure.super.div(divisor); } @@ -632,23 +641,23 @@ public interface Torque extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Resistance divisor) { + public Per divide(Resistance divisor) { return div(divisor); } @Override - default Per per(ResistanceUnit divisorUnit) { + public Per per(ResistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Temperature multiplier) { + public Mult times(Temperature multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Temperature divisor) { + public Per div(Temperature divisor) { return (Per) Measure.super.div(divisor); } @@ -660,23 +669,23 @@ public interface Torque extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Temperature divisor) { + public Per divide(Temperature divisor) { return div(divisor); } @Override - default Per per(TemperatureUnit divisorUnit) { + public Per per(TemperatureUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Time multiplier) { + public Mult times(Time multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Velocity div(Time divisor) { + public Velocity div(Time divisor) { return VelocityUnit.combine(unit(), divisor.unit()).ofBaseUnits(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -688,23 +697,23 @@ public interface Torque extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Velocity divide(Time divisor) { + public Velocity divide(Time divisor) { return div(divisor); } @Override - default Velocity per(TimeUnit divisorUnit) { + public Velocity per(TimeUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Torque multiplier) { + public Mult times(Torque multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Dimensionless div(Torque divisor) { + public Dimensionless div(Torque divisor) { return Value.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -716,23 +725,23 @@ public interface Torque extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Dimensionless divide(Torque divisor) { + public Dimensionless divide(Torque divisor) { return div(divisor); } @Override - default Dimensionless per(TorqueUnit divisorUnit) { + public Dimensionless per(TorqueUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult> times(Velocity multiplier) { + public Mult> times(Velocity multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Velocity divisor) { + public Per> div(Velocity divisor) { return (Per>) Measure.super.div(divisor); } @@ -744,23 +753,23 @@ public interface Torque extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Velocity divisor) { + public Per> divide(Velocity divisor) { return div(divisor); } @Override - default Per> per(VelocityUnit divisorUnit) { + public Per> per(VelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Voltage multiplier) { + public Mult times(Voltage multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Voltage divisor) { + public Per div(Voltage divisor) { return (Per) Measure.super.div(divisor); } @@ -772,12 +781,12 @@ public interface Torque extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Voltage divisor) { + public Per divide(Voltage divisor) { return div(divisor); } @Override - default Per per(VoltageUnit divisorUnit) { + public Per per(VoltageUnit divisorUnit) { return div(divisorUnit.one()); } diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Velocity.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Velocity.java index ac6df04e1f..f8ef481d53 100644 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Velocity.java +++ b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Velocity.java @@ -10,36 +10,45 @@ import static edu.wpi.first.units.Units.*; import edu.wpi.first.units.*; @SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public interface Velocity extends Measure> { - static Velocity ofRelativeUnits(double magnitude, VelocityUnit unit) { - return new ImmutableVelocity(magnitude, unit.toBaseUnits(magnitude), unit); +public record Velocity(double magnitude, double baseUnitMagnitude, VelocityUnit unit) implements Measure> { + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link VelocityUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static Velocity ofRelativeUnits(double magnitude, VelocityUnit unit) { + return new Velocity(magnitude, unit.toBaseUnits(magnitude), unit); } - static Velocity ofBaseUnits(double baseUnitMagnitude, VelocityUnit unit) { - return new ImmutableVelocity(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link VelocityUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit's base unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static Velocity ofBaseUnits(double baseUnitMagnitude, VelocityUnit unit) { + return new Velocity(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); } @Override - Velocity copy(); + public VelocityUnit baseUnit() { return (VelocityUnit) unit().getBaseUnit(); } @Override - default MutVelocity mutableCopy() { - return new MutVelocity(magnitude(), baseUnitMagnitude(), unit()); - } - - @Override - VelocityUnit unit(); - - @Override - default VelocityUnit baseUnit() { return (VelocityUnit) unit().getBaseUnit(); } - - @Override - default double in(VelocityUnit unit) { + public double in(VelocityUnit unit) { return unit.fromBaseUnits(baseUnitMagnitude()); } @Override - default Velocity unaryMinus() { + @SuppressWarnings("rawtypes") + public boolean equals(Object object) { + return object instanceof Velocity m && isEquivalent(m); + } + + @Override + public Velocity unaryMinus() { return (Velocity) unit().ofBaseUnits(0 - baseUnitMagnitude()); } @@ -51,27 +60,27 @@ public interface Velocity extends Measure> { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Velocity negate() { + public Velocity negate() { return (Velocity) unaryMinus(); } @Override - default Velocity plus(Measure> other) { + public Velocity plus(Measure> other) { return (Velocity) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude()); } @Override - default Velocity minus(Measure> other) { + public Velocity minus(Measure> other) { return (Velocity) unit().ofBaseUnits(baseUnitMagnitude() - other.baseUnitMagnitude()); } @Override - default Velocity times(double multiplier) { + public Velocity times(double multiplier) { return (Velocity) unit().ofBaseUnits(baseUnitMagnitude() * multiplier); } @Override - default Velocity div(double divisor) { + public Velocity div(double divisor) { return (Velocity) unit().ofBaseUnits(baseUnitMagnitude() / divisor); } @@ -83,18 +92,18 @@ public interface Velocity extends Measure> { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Velocity divide(double divisor) { + public Velocity divide(double divisor) { return (Velocity) div(divisor); } @Override - default Mult, AccelerationUnit> times(Acceleration multiplier) { + public Mult, AccelerationUnit> times(Acceleration multiplier) { return (Mult, AccelerationUnit>) Measure.super.times(multiplier); } @Override - default Per, AccelerationUnit> div(Acceleration divisor) { + public Per, AccelerationUnit> div(Acceleration divisor) { return (Per, AccelerationUnit>) Measure.super.div(divisor); } @@ -106,23 +115,23 @@ public interface Velocity extends Measure> { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per, AccelerationUnit> divide(Acceleration divisor) { + public Per, AccelerationUnit> divide(Acceleration divisor) { return div(divisor); } @Override - default Per, AccelerationUnit> per(AccelerationUnit divisorUnit) { + public Per, AccelerationUnit> per(AccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, AngleUnit> times(Angle multiplier) { + public Mult, AngleUnit> times(Angle multiplier) { return (Mult, AngleUnit>) Measure.super.times(multiplier); } @Override - default Per, AngleUnit> div(Angle divisor) { + public Per, AngleUnit> div(Angle divisor) { return (Per, AngleUnit>) Measure.super.div(divisor); } @@ -134,23 +143,23 @@ public interface Velocity extends Measure> { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per, AngleUnit> divide(Angle divisor) { + public Per, AngleUnit> divide(Angle divisor) { return div(divisor); } @Override - default Per, AngleUnit> per(AngleUnit divisorUnit) { + public Per, AngleUnit> per(AngleUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, AngularAccelerationUnit> times(AngularAcceleration multiplier) { + public Mult, AngularAccelerationUnit> times(AngularAcceleration multiplier) { return (Mult, AngularAccelerationUnit>) Measure.super.times(multiplier); } @Override - default Per, AngularAccelerationUnit> div(AngularAcceleration divisor) { + public Per, AngularAccelerationUnit> div(AngularAcceleration divisor) { return (Per, AngularAccelerationUnit>) Measure.super.div(divisor); } @@ -162,23 +171,23 @@ public interface Velocity extends Measure> { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per, AngularAccelerationUnit> divide(AngularAcceleration divisor) { + public Per, AngularAccelerationUnit> divide(AngularAcceleration divisor) { return div(divisor); } @Override - default Per, AngularAccelerationUnit> per(AngularAccelerationUnit divisorUnit) { + public Per, AngularAccelerationUnit> per(AngularAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, AngularMomentumUnit> times(AngularMomentum multiplier) { + public Mult, AngularMomentumUnit> times(AngularMomentum multiplier) { return (Mult, AngularMomentumUnit>) Measure.super.times(multiplier); } @Override - default Per, AngularMomentumUnit> div(AngularMomentum divisor) { + public Per, AngularMomentumUnit> div(AngularMomentum divisor) { return (Per, AngularMomentumUnit>) Measure.super.div(divisor); } @@ -190,23 +199,23 @@ public interface Velocity extends Measure> { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per, AngularMomentumUnit> divide(AngularMomentum divisor) { + public Per, AngularMomentumUnit> divide(AngularMomentum divisor) { return div(divisor); } @Override - default Per, AngularMomentumUnit> per(AngularMomentumUnit divisorUnit) { + public Per, AngularMomentumUnit> per(AngularMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, AngularVelocityUnit> times(AngularVelocity multiplier) { + public Mult, AngularVelocityUnit> times(AngularVelocity multiplier) { return (Mult, AngularVelocityUnit>) Measure.super.times(multiplier); } @Override - default Per, AngularVelocityUnit> div(AngularVelocity divisor) { + public Per, AngularVelocityUnit> div(AngularVelocity divisor) { return (Per, AngularVelocityUnit>) Measure.super.div(divisor); } @@ -218,23 +227,23 @@ public interface Velocity extends Measure> { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per, AngularVelocityUnit> divide(AngularVelocity divisor) { + public Per, AngularVelocityUnit> divide(AngularVelocity divisor) { return div(divisor); } @Override - default Per, AngularVelocityUnit> per(AngularVelocityUnit divisorUnit) { + public Per, AngularVelocityUnit> per(AngularVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, CurrentUnit> times(Current multiplier) { + public Mult, CurrentUnit> times(Current multiplier) { return (Mult, CurrentUnit>) Measure.super.times(multiplier); } @Override - default Per, CurrentUnit> div(Current divisor) { + public Per, CurrentUnit> div(Current divisor) { return (Per, CurrentUnit>) Measure.super.div(divisor); } @@ -246,17 +255,17 @@ public interface Velocity extends Measure> { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per, CurrentUnit> divide(Current divisor) { + public Per, CurrentUnit> divide(Current divisor) { return div(divisor); } @Override - default Per, CurrentUnit> per(CurrentUnit divisorUnit) { + public Per, CurrentUnit> per(CurrentUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Velocity div(Dimensionless divisor) { + public Velocity div(Dimensionless divisor) { return (Velocity) unit().of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -268,23 +277,23 @@ public interface Velocity extends Measure> { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Velocity divide(Dimensionless divisor) { + public Velocity divide(Dimensionless divisor) { return (Velocity) div(divisor); } @Override - default Velocity times(Dimensionless multiplier) { + public Velocity times(Dimensionless multiplier) { return (Velocity) unit().of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Mult, DistanceUnit> times(Distance multiplier) { + public Mult, DistanceUnit> times(Distance multiplier) { return (Mult, DistanceUnit>) Measure.super.times(multiplier); } @Override - default Per, DistanceUnit> div(Distance divisor) { + public Per, DistanceUnit> div(Distance divisor) { return (Per, DistanceUnit>) Measure.super.div(divisor); } @@ -296,23 +305,23 @@ public interface Velocity extends Measure> { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per, DistanceUnit> divide(Distance divisor) { + public Per, DistanceUnit> divide(Distance divisor) { return div(divisor); } @Override - default Per, DistanceUnit> per(DistanceUnit divisorUnit) { + public Per, DistanceUnit> per(DistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, EnergyUnit> times(Energy multiplier) { + public Mult, EnergyUnit> times(Energy multiplier) { return (Mult, EnergyUnit>) Measure.super.times(multiplier); } @Override - default Per, EnergyUnit> div(Energy divisor) { + public Per, EnergyUnit> div(Energy divisor) { return (Per, EnergyUnit>) Measure.super.div(divisor); } @@ -324,23 +333,23 @@ public interface Velocity extends Measure> { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per, EnergyUnit> divide(Energy divisor) { + public Per, EnergyUnit> divide(Energy divisor) { return div(divisor); } @Override - default Per, EnergyUnit> per(EnergyUnit divisorUnit) { + public Per, EnergyUnit> per(EnergyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, ForceUnit> times(Force multiplier) { + public Mult, ForceUnit> times(Force multiplier) { return (Mult, ForceUnit>) Measure.super.times(multiplier); } @Override - default Per, ForceUnit> div(Force divisor) { + public Per, ForceUnit> div(Force divisor) { return (Per, ForceUnit>) Measure.super.div(divisor); } @@ -352,23 +361,23 @@ public interface Velocity extends Measure> { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per, ForceUnit> divide(Force divisor) { + public Per, ForceUnit> divide(Force divisor) { return div(divisor); } @Override - default Per, ForceUnit> per(ForceUnit divisorUnit) { + public Per, ForceUnit> per(ForceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, FrequencyUnit> times(Frequency multiplier) { + public Mult, FrequencyUnit> times(Frequency multiplier) { return (Mult, FrequencyUnit>) Measure.super.times(multiplier); } @Override - default Per, FrequencyUnit> div(Frequency divisor) { + public Per, FrequencyUnit> div(Frequency divisor) { return (Per, FrequencyUnit>) Measure.super.div(divisor); } @@ -380,23 +389,23 @@ public interface Velocity extends Measure> { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per, FrequencyUnit> divide(Frequency divisor) { + public Per, FrequencyUnit> divide(Frequency divisor) { return div(divisor); } @Override - default Per, FrequencyUnit> per(FrequencyUnit divisorUnit) { + public Per, FrequencyUnit> per(FrequencyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, LinearAccelerationUnit> times(LinearAcceleration multiplier) { + public Mult, LinearAccelerationUnit> times(LinearAcceleration multiplier) { return (Mult, LinearAccelerationUnit>) Measure.super.times(multiplier); } @Override - default Per, LinearAccelerationUnit> div(LinearAcceleration divisor) { + public Per, LinearAccelerationUnit> div(LinearAcceleration divisor) { return (Per, LinearAccelerationUnit>) Measure.super.div(divisor); } @@ -408,23 +417,23 @@ public interface Velocity extends Measure> { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per, LinearAccelerationUnit> divide(LinearAcceleration divisor) { + public Per, LinearAccelerationUnit> divide(LinearAcceleration divisor) { return div(divisor); } @Override - default Per, LinearAccelerationUnit> per(LinearAccelerationUnit divisorUnit) { + public Per, LinearAccelerationUnit> per(LinearAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, LinearMomentumUnit> times(LinearMomentum multiplier) { + public Mult, LinearMomentumUnit> times(LinearMomentum multiplier) { return (Mult, LinearMomentumUnit>) Measure.super.times(multiplier); } @Override - default Per, LinearMomentumUnit> div(LinearMomentum divisor) { + public Per, LinearMomentumUnit> div(LinearMomentum divisor) { return (Per, LinearMomentumUnit>) Measure.super.div(divisor); } @@ -436,23 +445,23 @@ public interface Velocity extends Measure> { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per, LinearMomentumUnit> divide(LinearMomentum divisor) { + public Per, LinearMomentumUnit> divide(LinearMomentum divisor) { return div(divisor); } @Override - default Per, LinearMomentumUnit> per(LinearMomentumUnit divisorUnit) { + public Per, LinearMomentumUnit> per(LinearMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, LinearVelocityUnit> times(LinearVelocity multiplier) { + public Mult, LinearVelocityUnit> times(LinearVelocity multiplier) { return (Mult, LinearVelocityUnit>) Measure.super.times(multiplier); } @Override - default Per, LinearVelocityUnit> div(LinearVelocity divisor) { + public Per, LinearVelocityUnit> div(LinearVelocity divisor) { return (Per, LinearVelocityUnit>) Measure.super.div(divisor); } @@ -464,23 +473,23 @@ public interface Velocity extends Measure> { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per, LinearVelocityUnit> divide(LinearVelocity divisor) { + public Per, LinearVelocityUnit> divide(LinearVelocity divisor) { return div(divisor); } @Override - default Per, LinearVelocityUnit> per(LinearVelocityUnit divisorUnit) { + public Per, LinearVelocityUnit> per(LinearVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, MassUnit> times(Mass multiplier) { + public Mult, MassUnit> times(Mass multiplier) { return (Mult, MassUnit>) Measure.super.times(multiplier); } @Override - default Per, MassUnit> div(Mass divisor) { + public Per, MassUnit> div(Mass divisor) { return (Per, MassUnit>) Measure.super.div(divisor); } @@ -492,23 +501,23 @@ public interface Velocity extends Measure> { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per, MassUnit> divide(Mass divisor) { + public Per, MassUnit> divide(Mass divisor) { return div(divisor); } @Override - default Per, MassUnit> per(MassUnit divisorUnit) { + public Per, MassUnit> per(MassUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, MomentOfInertiaUnit> times(MomentOfInertia multiplier) { + public Mult, MomentOfInertiaUnit> times(MomentOfInertia multiplier) { return (Mult, MomentOfInertiaUnit>) Measure.super.times(multiplier); } @Override - default Per, MomentOfInertiaUnit> div(MomentOfInertia divisor) { + public Per, MomentOfInertiaUnit> div(MomentOfInertia divisor) { return (Per, MomentOfInertiaUnit>) Measure.super.div(divisor); } @@ -520,23 +529,23 @@ public interface Velocity extends Measure> { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per, MomentOfInertiaUnit> divide(MomentOfInertia divisor) { + public Per, MomentOfInertiaUnit> divide(MomentOfInertia divisor) { return div(divisor); } @Override - default Per, MomentOfInertiaUnit> per(MomentOfInertiaUnit divisorUnit) { + public Per, MomentOfInertiaUnit> per(MomentOfInertiaUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, MultUnit> times(Mult multiplier) { + public Mult, MultUnit> times(Mult multiplier) { return (Mult, MultUnit>) Measure.super.times(multiplier); } @Override - default Per, MultUnit> div(Mult divisor) { + public Per, MultUnit> div(Mult divisor) { return (Per, MultUnit>) Measure.super.div(divisor); } @@ -548,23 +557,23 @@ public interface Velocity extends Measure> { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per, MultUnit> divide(Mult divisor) { + public Per, MultUnit> divide(Mult divisor) { return div(divisor); } @Override - default Per, MultUnit> per(MultUnit divisorUnit) { + public Per, MultUnit> per(MultUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult, PerUnit> times(Per multiplier) { + public Mult, PerUnit> times(Per multiplier) { return (Mult, PerUnit>) Measure.super.times(multiplier); } @Override - default Per, PerUnit> div(Per divisor) { + public Per, PerUnit> div(Per divisor) { return (Per, PerUnit>) Measure.super.div(divisor); } @@ -576,23 +585,23 @@ public interface Velocity extends Measure> { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per, PerUnit> divide(Per divisor) { + public Per, PerUnit> divide(Per divisor) { return div(divisor); } @Override - default Per, PerUnit> per(PerUnit divisorUnit) { + public Per, PerUnit> per(PerUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult, PowerUnit> times(Power multiplier) { + public Mult, PowerUnit> times(Power multiplier) { return (Mult, PowerUnit>) Measure.super.times(multiplier); } @Override - default Per, PowerUnit> div(Power divisor) { + public Per, PowerUnit> div(Power divisor) { return (Per, PowerUnit>) Measure.super.div(divisor); } @@ -604,23 +613,23 @@ public interface Velocity extends Measure> { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per, PowerUnit> divide(Power divisor) { + public Per, PowerUnit> divide(Power divisor) { return div(divisor); } @Override - default Per, PowerUnit> per(PowerUnit divisorUnit) { + public Per, PowerUnit> per(PowerUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, ResistanceUnit> times(Resistance multiplier) { + public Mult, ResistanceUnit> times(Resistance multiplier) { return (Mult, ResistanceUnit>) Measure.super.times(multiplier); } @Override - default Per, ResistanceUnit> div(Resistance divisor) { + public Per, ResistanceUnit> div(Resistance divisor) { return (Per, ResistanceUnit>) Measure.super.div(divisor); } @@ -632,23 +641,23 @@ public interface Velocity extends Measure> { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per, ResistanceUnit> divide(Resistance divisor) { + public Per, ResistanceUnit> divide(Resistance divisor) { return div(divisor); } @Override - default Per, ResistanceUnit> per(ResistanceUnit divisorUnit) { + public Per, ResistanceUnit> per(ResistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, TemperatureUnit> times(Temperature multiplier) { + public Mult, TemperatureUnit> times(Temperature multiplier) { return (Mult, TemperatureUnit>) Measure.super.times(multiplier); } @Override - default Per, TemperatureUnit> div(Temperature divisor) { + public Per, TemperatureUnit> div(Temperature divisor) { return (Per, TemperatureUnit>) Measure.super.div(divisor); } @@ -660,22 +669,22 @@ public interface Velocity extends Measure> { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per, TemperatureUnit> divide(Temperature divisor) { + public Per, TemperatureUnit> divide(Temperature divisor) { return div(divisor); } @Override - default Per, TemperatureUnit> per(TemperatureUnit divisorUnit) { + public Per, TemperatureUnit> per(TemperatureUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Measure times(Time multiplier) { + public Measure times(Time multiplier) { return (Measure) unit().numerator().ofBaseUnits(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Velocity> div(Time divisor) { + public Velocity> div(Time divisor) { return VelocityUnit.combine(unit(), divisor.unit()).ofBaseUnits(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -687,23 +696,23 @@ public interface Velocity extends Measure> { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Velocity> divide(Time divisor) { + public Velocity> divide(Time divisor) { return div(divisor); } @Override - default Velocity> per(TimeUnit divisorUnit) { + public Velocity> per(TimeUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, TorqueUnit> times(Torque multiplier) { + public Mult, TorqueUnit> times(Torque multiplier) { return (Mult, TorqueUnit>) Measure.super.times(multiplier); } @Override - default Per, TorqueUnit> div(Torque divisor) { + public Per, TorqueUnit> div(Torque divisor) { return (Per, TorqueUnit>) Measure.super.div(divisor); } @@ -715,23 +724,23 @@ public interface Velocity extends Measure> { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per, TorqueUnit> divide(Torque divisor) { + public Per, TorqueUnit> divide(Torque divisor) { return div(divisor); } @Override - default Per, TorqueUnit> per(TorqueUnit divisorUnit) { + public Per, TorqueUnit> per(TorqueUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, VelocityUnit> times(Velocity multiplier) { + public Mult, VelocityUnit> times(Velocity multiplier) { return (Mult, VelocityUnit>) Measure.super.times(multiplier); } @Override - default Per, VelocityUnit> div(Velocity divisor) { + public Per, VelocityUnit> div(Velocity divisor) { return (Per, VelocityUnit>) Measure.super.div(divisor); } @@ -743,23 +752,23 @@ public interface Velocity extends Measure> { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per, VelocityUnit> divide(Velocity divisor) { + public Per, VelocityUnit> divide(Velocity divisor) { return div(divisor); } @Override - default Per, VelocityUnit> per(VelocityUnit divisorUnit) { + public Per, VelocityUnit> per(VelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult, VoltageUnit> times(Voltage multiplier) { + public Mult, VoltageUnit> times(Voltage multiplier) { return (Mult, VoltageUnit>) Measure.super.times(multiplier); } @Override - default Per, VoltageUnit> div(Voltage divisor) { + public Per, VoltageUnit> div(Voltage divisor) { return (Per, VoltageUnit>) Measure.super.div(divisor); } @@ -771,12 +780,12 @@ public interface Velocity extends Measure> { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per, VoltageUnit> divide(Voltage divisor) { + public Per, VoltageUnit> divide(Voltage divisor) { return div(divisor); } @Override - default Per, VoltageUnit> per(VoltageUnit divisorUnit) { + public Per, VoltageUnit> per(VoltageUnit divisorUnit) { return div(divisorUnit.one()); } diff --git a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Voltage.java b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Voltage.java index 33404865fd..06ae7b4074 100644 --- a/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Voltage.java +++ b/wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Voltage.java @@ -10,36 +10,45 @@ import static edu.wpi.first.units.Units.*; import edu.wpi.first.units.*; @SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"}) -public interface Voltage extends Measure { - static Voltage ofRelativeUnits(double magnitude, VoltageUnit unit) { - return new ImmutableVoltage(magnitude, unit.toBaseUnits(magnitude), unit); +public record Voltage(double magnitude, double baseUnitMagnitude, VoltageUnit unit) implements Measure { + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link VoltageUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static Voltage ofRelativeUnits(double magnitude, VoltageUnit unit) { + return new Voltage(magnitude, unit.toBaseUnits(magnitude), unit); } - static Voltage ofBaseUnits(double baseUnitMagnitude, VoltageUnit unit) { - return new ImmutableVoltage(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); + /** + * For doing math with measures of a known dimension but an unknown unit. Most users should use + * {@link VoltageUnit#of(double)} on a known unit from {@link Units} instead of calling this method. + * @param magnitude the magnitude of the measurement in terms of the given unit's base unit + * @param unit the unit of the measurement + * @return a measurement object + */ + public static Voltage ofBaseUnits(double baseUnitMagnitude, VoltageUnit unit) { + return new Voltage(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit); } @Override - Voltage copy(); + public VoltageUnit baseUnit() { return (VoltageUnit) unit().getBaseUnit(); } @Override - default MutVoltage mutableCopy() { - return new MutVoltage(magnitude(), baseUnitMagnitude(), unit()); - } - - @Override - VoltageUnit unit(); - - @Override - default VoltageUnit baseUnit() { return (VoltageUnit) unit().getBaseUnit(); } - - @Override - default double in(VoltageUnit unit) { + public double in(VoltageUnit unit) { return unit.fromBaseUnits(baseUnitMagnitude()); } @Override - default Voltage unaryMinus() { + @SuppressWarnings("rawtypes") + public boolean equals(Object object) { + return object instanceof Voltage m && isEquivalent(m); + } + + @Override + public Voltage unaryMinus() { return (Voltage) unit().ofBaseUnits(0 - baseUnitMagnitude()); } @@ -51,27 +60,27 @@ public interface Voltage extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Voltage negate() { + public Voltage negate() { return (Voltage) unaryMinus(); } @Override - default Voltage plus(Measure other) { + public Voltage plus(Measure other) { return (Voltage) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude()); } @Override - default Voltage minus(Measure other) { + public Voltage minus(Measure other) { return (Voltage) unit().ofBaseUnits(baseUnitMagnitude() - other.baseUnitMagnitude()); } @Override - default Voltage times(double multiplier) { + public Voltage times(double multiplier) { return (Voltage) unit().ofBaseUnits(baseUnitMagnitude() * multiplier); } @Override - default Voltage div(double divisor) { + public Voltage div(double divisor) { return (Voltage) unit().ofBaseUnits(baseUnitMagnitude() / divisor); } @@ -83,18 +92,18 @@ public interface Voltage extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Voltage divide(double divisor) { + public Voltage divide(double divisor) { return (Voltage) div(divisor); } @Override - default Mult> times(Acceleration multiplier) { + public Mult> times(Acceleration multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Acceleration divisor) { + public Per> div(Acceleration divisor) { return (Per>) Measure.super.div(divisor); } @@ -106,23 +115,23 @@ public interface Voltage extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Acceleration divisor) { + public Per> divide(Acceleration divisor) { return div(divisor); } @Override - default Per> per(AccelerationUnit divisorUnit) { + public Per> per(AccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Angle multiplier) { + public Mult times(Angle multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Angle divisor) { + public Per div(Angle divisor) { return (Per) Measure.super.div(divisor); } @@ -134,23 +143,23 @@ public interface Voltage extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Angle divisor) { + public Per divide(Angle divisor) { return div(divisor); } @Override - default Per per(AngleUnit divisorUnit) { + public Per per(AngleUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularAcceleration multiplier) { + public Mult times(AngularAcceleration multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularAcceleration divisor) { + public Per div(AngularAcceleration divisor) { return (Per) Measure.super.div(divisor); } @@ -162,23 +171,23 @@ public interface Voltage extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularAcceleration divisor) { + public Per divide(AngularAcceleration divisor) { return div(divisor); } @Override - default Per per(AngularAccelerationUnit divisorUnit) { + public Per per(AngularAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularMomentum multiplier) { + public Mult times(AngularMomentum multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularMomentum divisor) { + public Per div(AngularMomentum divisor) { return (Per) Measure.super.div(divisor); } @@ -190,23 +199,23 @@ public interface Voltage extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularMomentum divisor) { + public Per divide(AngularMomentum divisor) { return div(divisor); } @Override - default Per per(AngularMomentumUnit divisorUnit) { + public Per per(AngularMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(AngularVelocity multiplier) { + public Mult times(AngularVelocity multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(AngularVelocity divisor) { + public Per div(AngularVelocity divisor) { return (Per) Measure.super.div(divisor); } @@ -218,23 +227,23 @@ public interface Voltage extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(AngularVelocity divisor) { + public Per divide(AngularVelocity divisor) { return div(divisor); } @Override - default Per per(AngularVelocityUnit divisorUnit) { + public Per per(AngularVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Power times(Current multiplier) { + public Power times(Current multiplier) { return Watts.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Resistance div(Current divisor) { + public Resistance div(Current divisor) { return Ohms.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -246,17 +255,17 @@ public interface Voltage extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Resistance divide(Current divisor) { + public Resistance divide(Current divisor) { return div(divisor); } @Override - default Resistance per(CurrentUnit divisorUnit) { + public Resistance per(CurrentUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Voltage div(Dimensionless divisor) { + public Voltage div(Dimensionless divisor) { return (Voltage) Volts.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -268,23 +277,23 @@ public interface Voltage extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Voltage divide(Dimensionless divisor) { + public Voltage divide(Dimensionless divisor) { return (Voltage) div(divisor); } @Override - default Voltage times(Dimensionless multiplier) { + public Voltage times(Dimensionless multiplier) { return (Voltage) Volts.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude()); } @Override - default Mult times(Distance multiplier) { + public Mult times(Distance multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Distance divisor) { + public Per div(Distance divisor) { return (Per) Measure.super.div(divisor); } @@ -296,23 +305,23 @@ public interface Voltage extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Distance divisor) { + public Per divide(Distance divisor) { return div(divisor); } @Override - default Per per(DistanceUnit divisorUnit) { + public Per per(DistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Energy multiplier) { + public Mult times(Energy multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Energy divisor) { + public Per div(Energy divisor) { return (Per) Measure.super.div(divisor); } @@ -324,23 +333,23 @@ public interface Voltage extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Energy divisor) { + public Per divide(Energy divisor) { return div(divisor); } @Override - default Per per(EnergyUnit divisorUnit) { + public Per per(EnergyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Force multiplier) { + public Mult times(Force multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Force divisor) { + public Per div(Force divisor) { return (Per) Measure.super.div(divisor); } @@ -352,23 +361,23 @@ public interface Voltage extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Force divisor) { + public Per divide(Force divisor) { return div(divisor); } @Override - default Per per(ForceUnit divisorUnit) { + public Per per(ForceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Frequency multiplier) { + public Mult times(Frequency multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Frequency divisor) { + public Per div(Frequency divisor) { return (Per) Measure.super.div(divisor); } @@ -380,23 +389,23 @@ public interface Voltage extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Frequency divisor) { + public Per divide(Frequency divisor) { return div(divisor); } @Override - default Per per(FrequencyUnit divisorUnit) { + public Per per(FrequencyUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearAcceleration multiplier) { + public Mult times(LinearAcceleration multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearAcceleration divisor) { + public Per div(LinearAcceleration divisor) { return (Per) Measure.super.div(divisor); } @@ -408,23 +417,23 @@ public interface Voltage extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearAcceleration divisor) { + public Per divide(LinearAcceleration divisor) { return div(divisor); } @Override - default Per per(LinearAccelerationUnit divisorUnit) { + public Per per(LinearAccelerationUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearMomentum multiplier) { + public Mult times(LinearMomentum multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearMomentum divisor) { + public Per div(LinearMomentum divisor) { return (Per) Measure.super.div(divisor); } @@ -436,23 +445,23 @@ public interface Voltage extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearMomentum divisor) { + public Per divide(LinearMomentum divisor) { return div(divisor); } @Override - default Per per(LinearMomentumUnit divisorUnit) { + public Per per(LinearMomentumUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(LinearVelocity multiplier) { + public Mult times(LinearVelocity multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(LinearVelocity divisor) { + public Per div(LinearVelocity divisor) { return (Per) Measure.super.div(divisor); } @@ -464,23 +473,23 @@ public interface Voltage extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(LinearVelocity divisor) { + public Per divide(LinearVelocity divisor) { return div(divisor); } @Override - default Per per(LinearVelocityUnit divisorUnit) { + public Per per(LinearVelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Mass multiplier) { + public Mult times(Mass multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Mass divisor) { + public Per div(Mass divisor) { return (Per) Measure.super.div(divisor); } @@ -492,23 +501,23 @@ public interface Voltage extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Mass divisor) { + public Per divide(Mass divisor) { return div(divisor); } @Override - default Per per(MassUnit divisorUnit) { + public Per per(MassUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(MomentOfInertia multiplier) { + public Mult times(MomentOfInertia multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(MomentOfInertia divisor) { + public Per div(MomentOfInertia divisor) { return (Per) Measure.super.div(divisor); } @@ -520,23 +529,23 @@ public interface Voltage extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(MomentOfInertia divisor) { + public Per divide(MomentOfInertia divisor) { return div(divisor); } @Override - default Per per(MomentOfInertiaUnit divisorUnit) { + public Per per(MomentOfInertiaUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult> times(Mult multiplier) { + public Mult> times(Mult multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Mult divisor) { + public Per> div(Mult divisor) { return (Per>) Measure.super.div(divisor); } @@ -548,23 +557,23 @@ public interface Voltage extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Mult divisor) { + public Per> divide(Mult divisor) { return div(divisor); } @Override - default Per> per(MultUnit divisorUnit) { + public Per> per(MultUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult> times(Per multiplier) { + public Mult> times(Per multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Per divisor) { + public Per> div(Per divisor) { return (Per>) Measure.super.div(divisor); } @@ -576,23 +585,23 @@ public interface Voltage extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Per divisor) { + public Per> divide(Per divisor) { return div(divisor); } @Override - default Per> per(PerUnit divisorUnit) { + public Per> per(PerUnit divisorUnit) { return div(divisorUnit.ofNative(1)); } @Override - default Mult times(Power multiplier) { + public Mult times(Power multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Power divisor) { + public Per div(Power divisor) { return (Per) Measure.super.div(divisor); } @@ -604,23 +613,23 @@ public interface Voltage extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Power divisor) { + public Per divide(Power divisor) { return div(divisor); } @Override - default Per per(PowerUnit divisorUnit) { + public Per per(PowerUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Resistance multiplier) { + public Mult times(Resistance multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Current div(Resistance divisor) { + public Current div(Resistance divisor) { return Amps.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -632,23 +641,23 @@ public interface Voltage extends Measure { @Override @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) - default Current divide(Resistance divisor) { + public Current divide(Resistance divisor) { return div(divisor); } @Override - default Current per(ResistanceUnit divisorUnit) { + public Current per(ResistanceUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Temperature multiplier) { + public Mult times(Temperature multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Temperature divisor) { + public Per div(Temperature divisor) { return (Per) Measure.super.div(divisor); } @@ -660,23 +669,23 @@ public interface Voltage extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Temperature divisor) { + public Per divide(Temperature divisor) { return div(divisor); } @Override - default Per per(TemperatureUnit divisorUnit) { + public Per per(TemperatureUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Time multiplier) { + public Mult times(Time multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Velocity div(Time divisor) { + public Velocity div(Time divisor) { return VelocityUnit.combine(unit(), divisor.unit()).ofBaseUnits(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -688,23 +697,23 @@ public interface Voltage extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Velocity divide(Time divisor) { + public Velocity divide(Time divisor) { return div(divisor); } @Override - default Velocity per(TimeUnit divisorUnit) { + public Velocity per(TimeUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Torque multiplier) { + public Mult times(Torque multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Per div(Torque divisor) { + public Per div(Torque divisor) { return (Per) Measure.super.div(divisor); } @@ -716,23 +725,23 @@ public interface Voltage extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per divide(Torque divisor) { + public Per divide(Torque divisor) { return div(divisor); } @Override - default Per per(TorqueUnit divisorUnit) { + public Per per(TorqueUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult> times(Velocity multiplier) { + public Mult> times(Velocity multiplier) { return (Mult>) Measure.super.times(multiplier); } @Override - default Per> div(Velocity divisor) { + public Per> div(Velocity divisor) { return (Per>) Measure.super.div(divisor); } @@ -744,23 +753,23 @@ public interface Voltage extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Per> divide(Velocity divisor) { + public Per> divide(Velocity divisor) { return div(divisor); } @Override - default Per> per(VelocityUnit divisorUnit) { + public Per> per(VelocityUnit divisorUnit) { return div(divisorUnit.one()); } @Override - default Mult times(Voltage multiplier) { + public Mult times(Voltage multiplier) { return (Mult) Measure.super.times(multiplier); } @Override - default Dimensionless div(Voltage divisor) { + public Dimensionless div(Voltage divisor) { return Value.of(baseUnitMagnitude() / divisor.baseUnitMagnitude()); } @@ -772,12 +781,12 @@ public interface Voltage extends Measure { @Deprecated(since = "2025", forRemoval = true) @SuppressWarnings({"deprecation", "removal"}) @Override - default Dimensionless divide(Voltage divisor) { + public Dimensionless divide(Voltage divisor) { return div(divisor); } @Override - default Dimensionless per(VoltageUnit divisorUnit) { + public Dimensionless per(VoltageUnit divisorUnit) { return div(divisorUnit.one()); } diff --git a/wpiunits/src/main/java/edu/wpi/first/units/AccelerationUnit.java b/wpiunits/src/main/java/edu/wpi/first/units/AccelerationUnit.java index 7fe2bc1dd5..dfc953b377 100644 --- a/wpiunits/src/main/java/edu/wpi/first/units/AccelerationUnit.java +++ b/wpiunits/src/main/java/edu/wpi/first/units/AccelerationUnit.java @@ -5,8 +5,6 @@ package edu.wpi.first.units; import edu.wpi.first.units.measure.Acceleration; -import edu.wpi.first.units.measure.ImmutableAcceleration; -import edu.wpi.first.units.measure.MutAcceleration; /** * A generic unit of acceleration. @@ -45,12 +43,12 @@ public final class AccelerationUnit extends PerUnit of(double magnitude) { - return new ImmutableAcceleration<>(magnitude, toBaseUnits(magnitude), this); + return new Acceleration<>(magnitude, toBaseUnits(magnitude), this); } @Override public Acceleration ofBaseUnits(double baseUnitMagnitude) { - return new ImmutableAcceleration<>(fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, this); + return new Acceleration<>(fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, this); } @Override @@ -65,11 +63,6 @@ public final class AccelerationUnit extends PerUnit) (Acceleration) super.one(); } - @Override - public MutAcceleration mutable(double initialMagnitude) { - return new MutAcceleration<>(initialMagnitude, toBaseUnits(initialMagnitude), this); - } - @Override public VelocityUnit> per(TimeUnit time) { return VelocityUnit.combine(this, time); diff --git a/wpiunits/src/main/java/edu/wpi/first/units/AngleUnit.java b/wpiunits/src/main/java/edu/wpi/first/units/AngleUnit.java index d89d6d9ad6..e00f4ce7fc 100644 --- a/wpiunits/src/main/java/edu/wpi/first/units/AngleUnit.java +++ b/wpiunits/src/main/java/edu/wpi/first/units/AngleUnit.java @@ -5,7 +5,6 @@ package edu.wpi.first.units; import edu.wpi.first.units.measure.Angle; -import edu.wpi.first.units.measure.MutAngle; /** * Unit of angular dimension. @@ -49,11 +48,6 @@ public final class AngleUnit extends Unit { return Angle.ofBaseUnits(baseUnitMagnitude, this); } - @Override - public MutAngle mutable(double initialMagnitude) { - return new MutAngle(initialMagnitude, toBaseUnits(initialMagnitude), this); - } - @Override public AngularVelocityUnit per(TimeUnit period) { return AngularVelocityUnit.combine(this, period); diff --git a/wpiunits/src/main/java/edu/wpi/first/units/AngularAccelerationUnit.java b/wpiunits/src/main/java/edu/wpi/first/units/AngularAccelerationUnit.java index c818a16662..00aae31033 100644 --- a/wpiunits/src/main/java/edu/wpi/first/units/AngularAccelerationUnit.java +++ b/wpiunits/src/main/java/edu/wpi/first/units/AngularAccelerationUnit.java @@ -5,8 +5,6 @@ package edu.wpi.first.units; import edu.wpi.first.units.measure.AngularAcceleration; -import edu.wpi.first.units.measure.ImmutableAngularAcceleration; -import edu.wpi.first.units.measure.MutAngularAcceleration; /** A unit of angular acceleration, such as {@link Units#RadiansPerSecondPerSecond}. */ public final class AngularAccelerationUnit extends PerUnit { @@ -49,13 +47,12 @@ public final class AngularAccelerationUnit extends PerUnit per(TimeUnit time) { return VelocityUnit.combine(this, time); diff --git a/wpiunits/src/main/java/edu/wpi/first/units/AngularMomentumUnit.java b/wpiunits/src/main/java/edu/wpi/first/units/AngularMomentumUnit.java index be54a13504..77f3ec6851 100644 --- a/wpiunits/src/main/java/edu/wpi/first/units/AngularMomentumUnit.java +++ b/wpiunits/src/main/java/edu/wpi/first/units/AngularMomentumUnit.java @@ -5,8 +5,6 @@ package edu.wpi.first.units; import edu.wpi.first.units.measure.AngularMomentum; -import edu.wpi.first.units.measure.ImmutableAngularMomentum; -import edu.wpi.first.units.measure.MutAngularMomentum; /** * A unit of angular momentum, modeled as linear momentum of an object rotating some distance away @@ -52,12 +50,12 @@ public final class AngularMomentumUnit extends MultUnit per(TimeUnit time) { return VelocityUnit.combine(this, time); diff --git a/wpiunits/src/main/java/edu/wpi/first/units/AngularVelocityUnit.java b/wpiunits/src/main/java/edu/wpi/first/units/AngularVelocityUnit.java index 5a2f81b761..6b087abc98 100644 --- a/wpiunits/src/main/java/edu/wpi/first/units/AngularVelocityUnit.java +++ b/wpiunits/src/main/java/edu/wpi/first/units/AngularVelocityUnit.java @@ -5,8 +5,6 @@ package edu.wpi.first.units; import edu.wpi.first.units.measure.AngularVelocity; -import edu.wpi.first.units.measure.ImmutableAngularVelocity; -import edu.wpi.first.units.measure.MutAngularVelocity; /** A unit of angular velocity like {@link Units#RadiansPerSecond}. */ public final class AngularVelocityUnit extends PerUnit { @@ -49,12 +47,12 @@ public final class AngularVelocityUnit extends PerUnit { @Override public AngularVelocity of(double magnitude) { - return new ImmutableAngularVelocity(magnitude, toBaseUnits(magnitude), this); + return new AngularVelocity(magnitude, toBaseUnits(magnitude), this); } @Override public AngularVelocity ofBaseUnits(double baseUnitMagnitude) { - return new ImmutableAngularVelocity(fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, this); + return new AngularVelocity(fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, this); } @Override @@ -67,11 +65,6 @@ public final class AngularVelocityUnit extends PerUnit { return (AngularVelocity) super.one(); } - @Override - public MutAngularVelocity mutable(double initialMagnitude) { - return new MutAngularVelocity(initialMagnitude, toBaseUnits(initialMagnitude), this); - } - @Override public AngularAccelerationUnit per(TimeUnit period) { return AngularAccelerationUnit.combine(this, period); diff --git a/wpiunits/src/main/java/edu/wpi/first/units/CurrentUnit.java b/wpiunits/src/main/java/edu/wpi/first/units/CurrentUnit.java index e22ab54525..4e51a543d7 100644 --- a/wpiunits/src/main/java/edu/wpi/first/units/CurrentUnit.java +++ b/wpiunits/src/main/java/edu/wpi/first/units/CurrentUnit.java @@ -5,8 +5,6 @@ package edu.wpi.first.units; import edu.wpi.first.units.measure.Current; -import edu.wpi.first.units.measure.ImmutableCurrent; -import edu.wpi.first.units.measure.MutCurrent; /** * Unit of electric current dimension. @@ -53,12 +51,12 @@ public final class CurrentUnit extends Unit { @Override public Current of(double magnitude) { - return new ImmutableCurrent(magnitude, toBaseUnits(magnitude), this); + return new Current(magnitude, toBaseUnits(magnitude), this); } @Override public Current ofBaseUnits(double baseUnitMagnitude) { - return new ImmutableCurrent(fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, this); + return new Current(fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, this); } @Override @@ -71,11 +69,6 @@ public final class CurrentUnit extends Unit { return (Current) super.one(); } - @Override - public MutCurrent mutable(double initialMagnitude) { - return new MutCurrent(initialMagnitude, toBaseUnits(initialMagnitude), this); - } - @Override public VelocityUnit per(TimeUnit time) { return VelocityUnit.combine(this, time); diff --git a/wpiunits/src/main/java/edu/wpi/first/units/DimensionlessUnit.java b/wpiunits/src/main/java/edu/wpi/first/units/DimensionlessUnit.java index 186476fb0b..bdf0b650c9 100644 --- a/wpiunits/src/main/java/edu/wpi/first/units/DimensionlessUnit.java +++ b/wpiunits/src/main/java/edu/wpi/first/units/DimensionlessUnit.java @@ -5,8 +5,6 @@ package edu.wpi.first.units; import edu.wpi.first.units.measure.Dimensionless; -import edu.wpi.first.units.measure.ImmutableDimensionless; -import edu.wpi.first.units.measure.MutDimensionless; /** * A type of unit that corresponds to raw values and not any physical dimension, such as percentage. @@ -40,12 +38,12 @@ public final class DimensionlessUnit extends Unit { @Override public Dimensionless of(double magnitude) { - return new ImmutableDimensionless(magnitude, toBaseUnits(magnitude), this); + return new Dimensionless(magnitude, toBaseUnits(magnitude), this); } @Override public Dimensionless ofBaseUnits(double baseUnitMagnitude) { - return new ImmutableDimensionless(fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, this); + return new Dimensionless(fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, this); } @Override @@ -58,11 +56,6 @@ public final class DimensionlessUnit extends Unit { return (Dimensionless) super.one(); } - @Override - public MutDimensionless mutable(double initialMagnitude) { - return new MutDimensionless(initialMagnitude, toBaseUnits(initialMagnitude), this); - } - /** * Converts a measurement value in terms of another dimensionless unit to this unit. * diff --git a/wpiunits/src/main/java/edu/wpi/first/units/DistanceUnit.java b/wpiunits/src/main/java/edu/wpi/first/units/DistanceUnit.java index df4c1ffee4..57bd7be1bf 100644 --- a/wpiunits/src/main/java/edu/wpi/first/units/DistanceUnit.java +++ b/wpiunits/src/main/java/edu/wpi/first/units/DistanceUnit.java @@ -5,8 +5,6 @@ package edu.wpi.first.units; import edu.wpi.first.units.measure.Distance; -import edu.wpi.first.units.measure.ImmutableDistance; -import edu.wpi.first.units.measure.MutDistance; /** * Unit of linear dimension. @@ -65,12 +63,12 @@ public final class DistanceUnit extends Unit { @Override public Distance of(double magnitude) { - return new ImmutableDistance(magnitude, toBaseUnits(magnitude), this); + return new Distance(magnitude, toBaseUnits(magnitude), this); } @Override public Distance ofBaseUnits(double baseUnitMagnitude) { - return new ImmutableDistance(fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, this); + return new Distance(fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, this); } @Override @@ -83,11 +81,6 @@ public final class DistanceUnit extends Unit { return (Distance) super.one(); } - @Override - public MutDistance mutable(double initialMagnitude) { - return new MutDistance(initialMagnitude, toBaseUnits(initialMagnitude), this); - } - /** * Multiplies this distance unit by a unit of force to create a unit of torque. * diff --git a/wpiunits/src/main/java/edu/wpi/first/units/EnergyUnit.java b/wpiunits/src/main/java/edu/wpi/first/units/EnergyUnit.java index 90a0be81ef..d31bc3cbbf 100644 --- a/wpiunits/src/main/java/edu/wpi/first/units/EnergyUnit.java +++ b/wpiunits/src/main/java/edu/wpi/first/units/EnergyUnit.java @@ -5,8 +5,6 @@ package edu.wpi.first.units; import edu.wpi.first.units.measure.Energy; -import edu.wpi.first.units.measure.ImmutableEnergy; -import edu.wpi.first.units.measure.MutEnergy; /** * Unit of energy dimension. @@ -71,12 +69,12 @@ public final class EnergyUnit extends Unit { @Override public Energy of(double magnitude) { - return new ImmutableEnergy(magnitude, toBaseUnits(magnitude), this); + return new Energy(magnitude, toBaseUnits(magnitude), this); } @Override public Energy ofBaseUnits(double baseUnitMagnitude) { - return new ImmutableEnergy(fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, this); + return new Energy(fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, this); } @Override @@ -88,9 +86,4 @@ public final class EnergyUnit extends Unit { public Energy one() { return (Energy) super.one(); } - - @Override - public MutEnergy mutable(double initialMagnitude) { - return new MutEnergy(initialMagnitude, toBaseUnits(initialMagnitude), this); - } } diff --git a/wpiunits/src/main/java/edu/wpi/first/units/ForceUnit.java b/wpiunits/src/main/java/edu/wpi/first/units/ForceUnit.java index 9fead01b37..407e0301f7 100644 --- a/wpiunits/src/main/java/edu/wpi/first/units/ForceUnit.java +++ b/wpiunits/src/main/java/edu/wpi/first/units/ForceUnit.java @@ -5,8 +5,6 @@ package edu.wpi.first.units; import edu.wpi.first.units.measure.Force; -import edu.wpi.first.units.measure.ImmutableForce; -import edu.wpi.first.units.measure.MutForce; /** A unit of force like {@link Units#Newtons}. */ public final class ForceUnit extends MultUnit { @@ -61,12 +59,12 @@ public final class ForceUnit extends MultUnit @Override public Force of(double magnitude) { - return new ImmutableForce(magnitude, toBaseUnits(magnitude), this); + return new Force(magnitude, toBaseUnits(magnitude), this); } @Override public Force ofBaseUnits(double baseUnitMagnitude) { - return new ImmutableForce(toBaseUnits(baseUnitMagnitude), baseUnitMagnitude, this); + return new Force(toBaseUnits(baseUnitMagnitude), baseUnitMagnitude, this); } @Override @@ -79,11 +77,6 @@ public final class ForceUnit extends MultUnit return (Force) super.one(); } - @Override - public MutForce mutable(double initialMagnitude) { - return new MutForce(initialMagnitude, toBaseUnits(initialMagnitude), this); - } - @Override public VelocityUnit per(TimeUnit time) { return VelocityUnit.combine(this, time); diff --git a/wpiunits/src/main/java/edu/wpi/first/units/FrequencyUnit.java b/wpiunits/src/main/java/edu/wpi/first/units/FrequencyUnit.java index b2989fb883..a2f44cec60 100644 --- a/wpiunits/src/main/java/edu/wpi/first/units/FrequencyUnit.java +++ b/wpiunits/src/main/java/edu/wpi/first/units/FrequencyUnit.java @@ -7,8 +7,6 @@ package edu.wpi.first.units; import static edu.wpi.first.units.Units.Value; import edu.wpi.first.units.measure.Frequency; -import edu.wpi.first.units.measure.ImmutableFrequency; -import edu.wpi.first.units.measure.MutFrequency; /** A unit of frequency like {@link edu.wpi.first.units.Units#Hertz}. */ public final class FrequencyUnit extends PerUnit { @@ -62,12 +60,12 @@ public final class FrequencyUnit extends PerUnit { @Override public Frequency of(double magnitude) { - return new ImmutableFrequency(magnitude, toBaseUnits(magnitude), this); + return new Frequency(magnitude, toBaseUnits(magnitude), this); } @Override public Frequency ofBaseUnits(double baseUnitMagnitude) { - return new ImmutableFrequency(fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, this); + return new Frequency(fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, this); } @Override @@ -80,11 +78,6 @@ public final class FrequencyUnit extends PerUnit { return (Frequency) super.one(); } - @Override - public MutFrequency mutable(double initialMagnitude) { - return new MutFrequency(initialMagnitude, toBaseUnits(initialMagnitude), this); - } - @Override public VelocityUnit per(TimeUnit time) { return VelocityUnit.combine(this, time); diff --git a/wpiunits/src/main/java/edu/wpi/first/units/ImmutableMeasure.java b/wpiunits/src/main/java/edu/wpi/first/units/ImmutableMeasure.java index 64005b0987..6d16cdde66 100644 --- a/wpiunits/src/main/java/edu/wpi/first/units/ImmutableMeasure.java +++ b/wpiunits/src/main/java/edu/wpi/first/units/ImmutableMeasure.java @@ -5,7 +5,6 @@ package edu.wpi.first.units; import edu.wpi.first.units.measure.Dimensionless; -import edu.wpi.first.units.mutable.GenericMutableMeasureImpl; /** * A measure holds the magnitude and unit of some dimension, such as distance, time, or speed. An @@ -45,16 +44,6 @@ public record ImmutableMeasure(double magnitude, double baseUnit return new ImmutableMeasure<>(relativeMagnitude, unit.toBaseUnits(relativeMagnitude), unit); } - @Override - public Measure copy() { - return this; // already immutable, no need to allocate a new object - } - - @Override - public MutableMeasure mutableCopy() { - return new GenericMutableMeasureImpl<>(magnitude, baseUnitMagnitude, unit); - } - @Override public Measure unaryMinus() { return ofBaseUnits(0 - baseUnitMagnitude, unit); diff --git a/wpiunits/src/main/java/edu/wpi/first/units/LinearAccelerationUnit.java b/wpiunits/src/main/java/edu/wpi/first/units/LinearAccelerationUnit.java index 9756ca6084..343024a3a1 100644 --- a/wpiunits/src/main/java/edu/wpi/first/units/LinearAccelerationUnit.java +++ b/wpiunits/src/main/java/edu/wpi/first/units/LinearAccelerationUnit.java @@ -4,9 +4,7 @@ package edu.wpi.first.units; -import edu.wpi.first.units.measure.ImmutableLinearAcceleration; import edu.wpi.first.units.measure.LinearAcceleration; -import edu.wpi.first.units.measure.MutLinearAcceleration; /** * A unit of linear acceleration like {@link edu.wpi.first.units.Units#MetersPerSecondPerSecond}. @@ -51,13 +49,12 @@ public final class LinearAccelerationUnit extends PerUnit per(TimeUnit time) { return VelocityUnit.combine(this, time); diff --git a/wpiunits/src/main/java/edu/wpi/first/units/LinearMomentumUnit.java b/wpiunits/src/main/java/edu/wpi/first/units/LinearMomentumUnit.java index 489955b3a6..c323204d01 100644 --- a/wpiunits/src/main/java/edu/wpi/first/units/LinearMomentumUnit.java +++ b/wpiunits/src/main/java/edu/wpi/first/units/LinearMomentumUnit.java @@ -4,9 +4,7 @@ package edu.wpi.first.units; -import edu.wpi.first.units.measure.ImmutableLinearMomentum; import edu.wpi.first.units.measure.LinearMomentum; -import edu.wpi.first.units.measure.MutLinearMomentum; /** A unit of linear momentum like {@link edu.wpi.first.units.Units#KilogramMetersPerSecond}. */ public final class LinearMomentumUnit extends MultUnit { @@ -49,12 +47,12 @@ public final class LinearMomentumUnit extends MultUnit per(TimeUnit time) { return VelocityUnit.combine(this, time); diff --git a/wpiunits/src/main/java/edu/wpi/first/units/LinearVelocityUnit.java b/wpiunits/src/main/java/edu/wpi/first/units/LinearVelocityUnit.java index ca155ce0cd..24dd61acc2 100644 --- a/wpiunits/src/main/java/edu/wpi/first/units/LinearVelocityUnit.java +++ b/wpiunits/src/main/java/edu/wpi/first/units/LinearVelocityUnit.java @@ -4,9 +4,7 @@ package edu.wpi.first.units; -import edu.wpi.first.units.measure.ImmutableLinearVelocity; import edu.wpi.first.units.measure.LinearVelocity; -import edu.wpi.first.units.measure.MutLinearVelocity; /** A unit of linear velocity like {@link edu.wpi.first.units.Units#MetersPerSecond}. */ public final class LinearVelocityUnit extends PerUnit { @@ -49,12 +47,12 @@ public final class LinearVelocityUnit extends PerUnit { @Override public LinearVelocity of(double magnitude) { - return new ImmutableLinearVelocity(magnitude, toBaseUnits(magnitude), this); + return new LinearVelocity(magnitude, toBaseUnits(magnitude), this); } @Override public LinearVelocity ofBaseUnits(double baseUnitMagnitude) { - return new ImmutableLinearVelocity(fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, this); + return new LinearVelocity(fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, this); } @Override @@ -67,11 +65,6 @@ public final class LinearVelocityUnit extends PerUnit { return (LinearVelocity) super.one(); } - @Override - public MutLinearVelocity mutable(double value) { - return new MutLinearVelocity(value, toBaseUnits(value), this); - } - /** * Combines this velocity with a time period of change to form a unit of acceleration. * diff --git a/wpiunits/src/main/java/edu/wpi/first/units/MassUnit.java b/wpiunits/src/main/java/edu/wpi/first/units/MassUnit.java index dad3fd4148..630c4de5c8 100644 --- a/wpiunits/src/main/java/edu/wpi/first/units/MassUnit.java +++ b/wpiunits/src/main/java/edu/wpi/first/units/MassUnit.java @@ -4,9 +4,7 @@ package edu.wpi.first.units; -import edu.wpi.first.units.measure.ImmutableMass; import edu.wpi.first.units.measure.Mass; -import edu.wpi.first.units.measure.MutMass; /** * Unit of mass dimension. @@ -39,12 +37,12 @@ public final class MassUnit extends Unit { @Override public Mass of(double magnitude) { - return new ImmutableMass(magnitude, toBaseUnits(magnitude), this); + return new Mass(magnitude, toBaseUnits(magnitude), this); } @Override public Mass ofBaseUnits(double baseUnitMagnitude) { - return new ImmutableMass(fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, this); + return new Mass(fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, this); } @Override @@ -57,11 +55,6 @@ public final class MassUnit extends Unit { return (Mass) super.one(); } - @Override - public MutMass mutable(double initialMagnitude) { - return new MutMass(initialMagnitude, toBaseUnits(initialMagnitude), this); - } - @Override public VelocityUnit per(TimeUnit period) { return VelocityUnit.combine(this, period); diff --git a/wpiunits/src/main/java/edu/wpi/first/units/Measure.java b/wpiunits/src/main/java/edu/wpi/first/units/Measure.java index 6a436194b7..e805ba20f8 100644 --- a/wpiunits/src/main/java/edu/wpi/first/units/Measure.java +++ b/wpiunits/src/main/java/edu/wpi/first/units/Measure.java @@ -119,22 +119,6 @@ public interface Measure extends Comparable> { return Math.copySign(this.in(unit), other.in(unit)); } - /** - * Returns an immutable copy of this measure. The copy can be used freely and is guaranteed never - * to change. - * - * @return the copied measure - */ - Measure copy(); - - /** - * Returns a mutable copy of this measure. It will be initialized to the current state of this - * measure, but can be changed over time without needing to allocate new measurement objects. - * - * @return the copied measure - */ - MutableMeasure mutableCopy(); - /** * 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 diff --git a/wpiunits/src/main/java/edu/wpi/first/units/MomentOfInertiaUnit.java b/wpiunits/src/main/java/edu/wpi/first/units/MomentOfInertiaUnit.java index ab92427001..6279ea9a7e 100644 --- a/wpiunits/src/main/java/edu/wpi/first/units/MomentOfInertiaUnit.java +++ b/wpiunits/src/main/java/edu/wpi/first/units/MomentOfInertiaUnit.java @@ -4,9 +4,7 @@ package edu.wpi.first.units; -import edu.wpi.first.units.measure.ImmutableMomentOfInertia; import edu.wpi.first.units.measure.MomentOfInertia; -import edu.wpi.first.units.measure.MutMomentOfInertia; /** * A unit of moment of inertia, like {@link edu.wpi.first.units.Units#KilogramSquareMeters}. Moments @@ -55,12 +53,12 @@ public final class MomentOfInertiaUnit extends PerUnit per(TimeUnit time) { return VelocityUnit.combine(this, time); diff --git a/wpiunits/src/main/java/edu/wpi/first/units/MultUnit.java b/wpiunits/src/main/java/edu/wpi/first/units/MultUnit.java index 2c6906c717..1ca2f520da 100644 --- a/wpiunits/src/main/java/edu/wpi/first/units/MultUnit.java +++ b/wpiunits/src/main/java/edu/wpi/first/units/MultUnit.java @@ -4,9 +4,7 @@ package edu.wpi.first.units; -import edu.wpi.first.units.measure.ImmutableMult; import edu.wpi.first.units.measure.Mult; -import edu.wpi.first.units.measure.MutMult; import java.util.Objects; /** @@ -130,7 +128,7 @@ public class MultUnit extends Unit { * @see #of(double) */ public final Mult ofNative(double magnitude) { - return new ImmutableMult<>(magnitude, toBaseUnits(magnitude), this); + return new Mult<>(magnitude, toBaseUnits(magnitude), this); } /** @@ -142,7 +140,7 @@ public class MultUnit extends Unit { * @see #ofBaseUnits(double) */ public final Mult ofNativeBaseUnits(double baseUnitMagnitude) { - return new ImmutableMult<>(fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, this); + return new Mult<>(fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, this); } @Override @@ -157,11 +155,6 @@ public class MultUnit extends Unit { return (Measure>) super.one(); } - @Override - public MutableMeasure, ?, ?> mutable(double initialMagnitude) { - return new MutMult<>(initialMagnitude, toBaseUnits(initialMagnitude), this); - } - @Override public Unit per(TimeUnit time) { return VelocityUnit.combine(this, time); diff --git a/wpiunits/src/main/java/edu/wpi/first/units/MutableMeasure.java b/wpiunits/src/main/java/edu/wpi/first/units/MutableMeasure.java deleted file mode 100644 index 672dbe61f0..0000000000 --- a/wpiunits/src/main/java/edu/wpi/first/units/MutableMeasure.java +++ /dev/null @@ -1,180 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -package edu.wpi.first.units; - -import edu.wpi.first.units.measure.Dimensionless; - -/** - * A mutable measurement can be used to keep a single object allocation and reference whose state is - * mutated or changed as it is used. This is helpful for optimizing memory usage to keep garbage - * collection time - and its associated loop overruns - to a minimum. - * - * @param The dimension of measurement. - * @param The base measure type. - * @param The self type. This MUST inherit from the base measure type. - */ -public interface MutableMeasure< - U extends Unit, Base extends Measure, MutSelf extends MutableMeasure> - extends Measure { - /** - * Overwrites the state of this measure with new values. - * - * @param magnitude the new magnitude in terms of the new unit - * @param newUnit the new unit - * @return this measure - */ - MutSelf mut_replace(double magnitude, U newUnit); - - /** - * Overwrites the state of this measure and replaces it completely with values from the given one. - * The magnitude, base unit magnitude, and unit will all be copied. This is functionally the same - * as calling {@code other.mutableCopy()}, but copying to a pre-existing mutable measure instead - * of instantiating a new one. - * - * @param other the other measure to copy values from - * @return this measure - */ - default MutSelf mut_replace(Base other) { - return mut_replace(other.magnitude(), other.unit()); - } - - @Override - Base copy(); - - /** - * Sets the new magnitude of the measurement. The magnitude must be in terms of the {@link - * #unit()}. - * - * @param magnitude the new magnitude of the measurement - * @return this mutable measure - */ - default MutSelf mut_setMagnitude(double magnitude) { - return mut_replace(magnitude, unit()); - } - - /** - * Sets the new magnitude of the measurement. The magnitude must be in terms of the base unit of - * the current unit. - * - * @param baseUnitMagnitude the new magnitude of the measurement - * @return this mutable measure - */ - default MutSelf mut_setBaseUnitMagnitude(double baseUnitMagnitude) { - return mut_replace(unit().fromBaseUnits(baseUnitMagnitude), unit()); - } - - /** - * Increments the current magnitude of the measure by the given value. The value must be in terms - * of the current {@link #unit() unit}. - * - * @param raw the raw value to accumulate by - * @return the measure - */ - default MutSelf mut_acc(double raw) { - return mut_setBaseUnitMagnitude(magnitude() + raw); - } - - /** - * Increments the current magnitude of the measure by the amount of the given measure. - * - * @param other the measure whose value should be added to this one - * @return this measure - */ - default MutSelf mut_acc(Base other) { - return mut_setMagnitude(magnitude() + unit().fromBaseUnits(other.baseUnitMagnitude())); - } - - /** - * Adds another measurement to this one. This will mutate the object instead of generating a new - * measurement object. - * - * @param other the measurement to add - * @return this measure - */ - default MutSelf mut_plus(Base other) { - return mut_acc(other); - } - - /** - * Adds another measurement to this one. This will mutate the object instead of generating a new - * measurement object. This is a denormalized version of {@link #mut_plus(Measure)} to avoid - * having to wrap raw numbers in a {@code Measure} object and pay for an object allocation. - * - * @param magnitude the magnitude of the other measurement. - * @param otherUnit the unit of the other measurement - * @return this measure - */ - default MutSelf mut_plus(double magnitude, U otherUnit) { - return mut_setBaseUnitMagnitude(magnitude() + otherUnit.toBaseUnits(magnitude)); - } - - /** - * Subtracts another measurement to this one. This will mutate the object instead of generating a - * new measurement object. - * - * @param other the measurement to subtract from this one - * @return this measure - */ - default MutSelf mut_minus(Base other) { - return mut_setBaseUnitMagnitude(baseUnitMagnitude() - other.baseUnitMagnitude()); - } - - /** - * Subtracts another measurement from this one. This will mutate the object instead of generating - * a new measurement object. This is a denormalized version of {@link #mut_minus(Measure)} to - * avoid having to wrap raw numbers in a {@code Measure} object and pay for an object allocation. - * - * @param magnitude the magnitude of the other measurement. - * @param otherUnit the unit of the other measurement - * @return this measure - */ - default MutSelf mut_minus(double magnitude, U otherUnit) { - return mut_setBaseUnitMagnitude(baseUnitMagnitude() - otherUnit.toBaseUnits(magnitude)); - } - - /** - * Multiplies this measurement by some constant value. This will mutate the object instead of - * generating a new measurement object. - * - * @param multiplier the multiplier to scale the measurement by - * @return this measure - */ - default MutSelf mut_times(double multiplier) { - return mut_setBaseUnitMagnitude(baseUnitMagnitude() * multiplier); - } - - /** - * Multiplies this measurement by some constant value. This will mutate the object instead of - * generating a new measurement object. - * - * @param multiplier the multiplier to scale the measurement by - * @return this measure - */ - default MutSelf mut_times(Dimensionless multiplier) { - return mut_times(multiplier.baseUnitMagnitude()); - } - - /** - * Divides this measurement by some constant value. This will mutate the object instead of - * generating a new measurement object. - * - * @param divisor the divisor to scale the measurement by - * @return this measure - */ - default MutSelf mut_divide(double divisor) { - return mut_times(1 / divisor); - } - - /** - * Divides this measurement by some constant value. This will mutate the object instead of - * generating a new measurement object. - * - * @param divisor the divisor to scale the measurement by - * @return this measure - */ - default MutSelf mut_divide(Dimensionless divisor) { - return mut_divide(divisor.baseUnitMagnitude()); - } -} diff --git a/wpiunits/src/main/java/edu/wpi/first/units/PerUnit.java b/wpiunits/src/main/java/edu/wpi/first/units/PerUnit.java index 3c7de4ad3c..a52a20f010 100644 --- a/wpiunits/src/main/java/edu/wpi/first/units/PerUnit.java +++ b/wpiunits/src/main/java/edu/wpi/first/units/PerUnit.java @@ -4,8 +4,6 @@ package edu.wpi.first.units; -import edu.wpi.first.units.measure.ImmutablePer; -import edu.wpi.first.units.measure.MutPer; import edu.wpi.first.units.measure.Per; import java.util.Objects; @@ -195,7 +193,7 @@ public class PerUnit extends Unit { * @see #of(double) */ public final Per ofNative(double magnitude) { - return new ImmutablePer<>(magnitude, toBaseUnits(magnitude), this); + return new Per<>(magnitude, toBaseUnits(magnitude), this); } /** @@ -207,7 +205,7 @@ public class PerUnit extends Unit { * @see #ofBaseUnits(double) */ public final Per ofNativeBaseUnits(double baseUnitMagnitude) { - return new ImmutablePer<>(fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, this); + return new Per<>(fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, this); } @Override @@ -222,32 +220,6 @@ public class PerUnit extends Unit { return (Measure>) super.one(); } - /** - * {@inheritDoc} - * - *

Note: When called on an object of type {@code PerUnit} (and not a subclass!), this - * method will always return a {@link edu.wpi.first.units.measure.MutPer} instance. - * - * @param initialMagnitude the starting magnitude of the measure - * @return the ratio measure - */ - @Override - public MutableMeasure, ?, ?> mutable(double initialMagnitude) { - return mutableNative(initialMagnitude); - } - - /** - * Creates a new mutable measurement of the given magnitude in terms of the ratio unit. This will - * always return a {@code Per} object and cannot be overridden by subclasses. - * - * @param initialMagnitude the starting magnitude of the measure - * @return the ratio measure - * @see #mutable(double) - */ - public final MutPer mutableNative(double initialMagnitude) { - return new MutPer<>(initialMagnitude, toBaseUnits(initialMagnitude), this); - } - @Override public Unit per(TimeUnit time) { return VelocityUnit.combine(this, time); diff --git a/wpiunits/src/main/java/edu/wpi/first/units/PowerUnit.java b/wpiunits/src/main/java/edu/wpi/first/units/PowerUnit.java index 4129b22177..677e0b20a4 100644 --- a/wpiunits/src/main/java/edu/wpi/first/units/PowerUnit.java +++ b/wpiunits/src/main/java/edu/wpi/first/units/PowerUnit.java @@ -7,8 +7,6 @@ package edu.wpi.first.units; import static edu.wpi.first.units.Units.Joules; import static edu.wpi.first.units.Units.Seconds; -import edu.wpi.first.units.measure.ImmutablePower; -import edu.wpi.first.units.measure.MutPower; import edu.wpi.first.units.measure.Power; /** @@ -112,12 +110,12 @@ public final class PowerUnit extends PerUnit { @Override public Power of(double magnitude) { - return new ImmutablePower(magnitude, toBaseUnits(magnitude), this); + return new Power(magnitude, toBaseUnits(magnitude), this); } @Override public Power ofBaseUnits(double baseUnitMagnitude) { - return new ImmutablePower(fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, this); + return new Power(fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, this); } @Override @@ -130,11 +128,6 @@ public final class PowerUnit extends PerUnit { return (Power) super.one(); } - @Override - public MutPower mutable(double initialMagnitude) { - return new MutPower(initialMagnitude, toBaseUnits(initialMagnitude), this); - } - @Override public VelocityUnit per(TimeUnit time) { return VelocityUnit.combine(this, time); diff --git a/wpiunits/src/main/java/edu/wpi/first/units/ResistanceUnit.java b/wpiunits/src/main/java/edu/wpi/first/units/ResistanceUnit.java index 0fba48f38c..57ed168952 100644 --- a/wpiunits/src/main/java/edu/wpi/first/units/ResistanceUnit.java +++ b/wpiunits/src/main/java/edu/wpi/first/units/ResistanceUnit.java @@ -4,8 +4,6 @@ package edu.wpi.first.units; -import edu.wpi.first.units.measure.ImmutableResistance; -import edu.wpi.first.units.measure.MutResistance; import edu.wpi.first.units.measure.Resistance; /** @@ -57,12 +55,12 @@ public final class ResistanceUnit extends PerUnit { @Override public Resistance of(double magnitude) { - return new ImmutableResistance(magnitude, toBaseUnits(magnitude), this); + return new Resistance(magnitude, toBaseUnits(magnitude), this); } @Override public Resistance ofBaseUnits(double baseUnitMagnitude) { - return new ImmutableResistance(fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, this); + return new Resistance(fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, this); } @Override @@ -75,11 +73,6 @@ public final class ResistanceUnit extends PerUnit { return (Resistance) super.one(); } - @Override - public MutResistance mutable(double initialMagnitude) { - return new MutResistance(initialMagnitude, toBaseUnits(initialMagnitude), this); - } - /** * Creates a ratio unit between this unit and an arbitrary other unit. * diff --git a/wpiunits/src/main/java/edu/wpi/first/units/TemperatureUnit.java b/wpiunits/src/main/java/edu/wpi/first/units/TemperatureUnit.java index 479c7e847a..de3bec9fb8 100644 --- a/wpiunits/src/main/java/edu/wpi/first/units/TemperatureUnit.java +++ b/wpiunits/src/main/java/edu/wpi/first/units/TemperatureUnit.java @@ -4,8 +4,6 @@ package edu.wpi.first.units; -import edu.wpi.first.units.measure.ImmutableTemperature; -import edu.wpi.first.units.measure.MutTemperature; import edu.wpi.first.units.measure.Temperature; /** @@ -34,12 +32,12 @@ public final class TemperatureUnit extends Unit { @Override public Temperature of(double magnitude) { - return new ImmutableTemperature(magnitude, toBaseUnits(magnitude), this); + return new Temperature(magnitude, toBaseUnits(magnitude), this); } @Override public Temperature ofBaseUnits(double baseUnitMagnitude) { - return new ImmutableTemperature(fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, this); + return new Temperature(fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, this); } @Override @@ -52,11 +50,6 @@ public final class TemperatureUnit extends Unit { return (Temperature) super.one(); } - @Override - public MutTemperature mutable(double initialMagnitude) { - return new MutTemperature(initialMagnitude, toBaseUnits(initialMagnitude), this); - } - @Override public VelocityUnit per(TimeUnit period) { return VelocityUnit.combine(this, period); diff --git a/wpiunits/src/main/java/edu/wpi/first/units/TimeUnit.java b/wpiunits/src/main/java/edu/wpi/first/units/TimeUnit.java index c8afa47098..9029e35148 100644 --- a/wpiunits/src/main/java/edu/wpi/first/units/TimeUnit.java +++ b/wpiunits/src/main/java/edu/wpi/first/units/TimeUnit.java @@ -4,8 +4,6 @@ package edu.wpi.first.units; -import edu.wpi.first.units.measure.ImmutableTime; -import edu.wpi.first.units.measure.MutTime; import edu.wpi.first.units.measure.Time; /** @@ -77,12 +75,12 @@ public final class TimeUnit extends Unit { @Override public Time of(double magnitude) { - return new ImmutableTime(magnitude, toBaseUnits(magnitude), this); + return new Time(magnitude, toBaseUnits(magnitude), this); } @Override public Time ofBaseUnits(double baseUnitMagnitude) { - return new ImmutableTime(fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, this); + return new Time(fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, this); } @Override @@ -94,9 +92,4 @@ public final class TimeUnit extends Unit { public Time one() { return (Time) super.one(); } - - @Override - public MutTime mutable(double initialMagnitude) { - return new MutTime(initialMagnitude, toBaseUnits(initialMagnitude), this); - } } diff --git a/wpiunits/src/main/java/edu/wpi/first/units/TorqueUnit.java b/wpiunits/src/main/java/edu/wpi/first/units/TorqueUnit.java index 3aeef3b55d..ea7b5ab2f3 100644 --- a/wpiunits/src/main/java/edu/wpi/first/units/TorqueUnit.java +++ b/wpiunits/src/main/java/edu/wpi/first/units/TorqueUnit.java @@ -4,8 +4,6 @@ package edu.wpi.first.units; -import edu.wpi.first.units.measure.ImmutableTorque; -import edu.wpi.first.units.measure.MutTorque; import edu.wpi.first.units.measure.Torque; /** A unit of torque like {@link edu.wpi.first.units.Units#NewtonMeters}. */ @@ -49,12 +47,12 @@ public final class TorqueUnit extends MultUnit { @Override public Torque of(double magnitude) { - return new ImmutableTorque(magnitude, toBaseUnits(magnitude), this); + return new Torque(magnitude, toBaseUnits(magnitude), this); } @Override public Torque ofBaseUnits(double baseUnitMagnitude) { - return new ImmutableTorque(fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, this); + return new Torque(fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, this); } @Override @@ -67,11 +65,6 @@ public final class TorqueUnit extends MultUnit { return (Torque) super.one(); } - @Override - public MutTorque mutable(double initialMagnitude) { - return new MutTorque(initialMagnitude, toBaseUnits(initialMagnitude), this); - } - @Override public VelocityUnit per(TimeUnit time) { return VelocityUnit.combine(this, time); diff --git a/wpiunits/src/main/java/edu/wpi/first/units/Unit.java b/wpiunits/src/main/java/edu/wpi/first/units/Unit.java index 1dfc36f8eb..2b6da66432 100644 --- a/wpiunits/src/main/java/edu/wpi/first/units/Unit.java +++ b/wpiunits/src/main/java/edu/wpi/first/units/Unit.java @@ -85,16 +85,6 @@ public abstract class Unit { */ public abstract Measure ofBaseUnits(double baseUnitMagnitude); - /** - * Creates a new mutable measurement that is initialized to the given magnitude in terms of this - * unit. Implementations are strongly recommended to sharpen the return type to a - * unit-specific measurement implementation. - * - * @param initialMagnitude the initial magnitude of the mutable measurement - * @return the mutable measurement object - */ - public abstract MutableMeasure mutable(double initialMagnitude); - /** * Gets a measure of zero magnitude in terms of this unit. The returned object is guaranteed to be * of the same type returned by {@link #of(double)}. Subclasses are encouraged to override this diff --git a/wpiunits/src/main/java/edu/wpi/first/units/VelocityUnit.java b/wpiunits/src/main/java/edu/wpi/first/units/VelocityUnit.java index 45374cd39c..2792ebe842 100644 --- a/wpiunits/src/main/java/edu/wpi/first/units/VelocityUnit.java +++ b/wpiunits/src/main/java/edu/wpi/first/units/VelocityUnit.java @@ -4,8 +4,6 @@ package edu.wpi.first.units; -import edu.wpi.first.units.measure.ImmutableVelocity; -import edu.wpi.first.units.measure.MutVelocity; import edu.wpi.first.units.measure.Velocity; /** @@ -80,12 +78,12 @@ public final class VelocityUnit extends PerUnit { @Override public Velocity of(double magnitude) { - return new ImmutableVelocity<>(magnitude, toBaseUnits(magnitude), this); + return new Velocity<>(magnitude, toBaseUnits(magnitude), this); } @Override public Velocity ofBaseUnits(double baseUnitMagnitude) { - return new ImmutableVelocity<>(fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, this); + return new Velocity<>(fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, this); } @Override @@ -100,11 +98,6 @@ public final class VelocityUnit extends PerUnit { return (Velocity) super.one(); } - @Override - public MutableMeasure, ?, ?> mutable(double initialMagnitude) { - return new MutVelocity<>(initialMagnitude, toBaseUnits(initialMagnitude), this); - } - /** * Combines this velocity unit with a unit of a period of change to create an acceleration unit. * diff --git a/wpiunits/src/main/java/edu/wpi/first/units/VoltageUnit.java b/wpiunits/src/main/java/edu/wpi/first/units/VoltageUnit.java index 7506935170..ab768e450f 100644 --- a/wpiunits/src/main/java/edu/wpi/first/units/VoltageUnit.java +++ b/wpiunits/src/main/java/edu/wpi/first/units/VoltageUnit.java @@ -4,8 +4,6 @@ package edu.wpi.first.units; -import edu.wpi.first.units.measure.ImmutableVoltage; -import edu.wpi.first.units.measure.MutVoltage; import edu.wpi.first.units.measure.Voltage; /** @@ -53,12 +51,12 @@ public final class VoltageUnit extends Unit { @Override public Voltage of(double magnitude) { - return new ImmutableVoltage(magnitude, toBaseUnits(magnitude), this); + return new Voltage(magnitude, toBaseUnits(magnitude), this); } @Override public Voltage ofBaseUnits(double baseUnitMagnitude) { - return new ImmutableVoltage(fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, this); + return new Voltage(fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, this); } @Override @@ -71,11 +69,6 @@ public final class VoltageUnit extends Unit { return (Voltage) super.one(); } - @Override - public MutVoltage mutable(double magnitude) { - return new MutVoltage(magnitude, toBaseUnits(magnitude), this); - } - @Override public VelocityUnit per(TimeUnit period) { return VelocityUnit.combine(this, period); diff --git a/wpiunits/src/main/java/edu/wpi/first/units/mutable/GenericMutableMeasureImpl.java b/wpiunits/src/main/java/edu/wpi/first/units/mutable/GenericMutableMeasureImpl.java deleted file mode 100644 index c14187c000..0000000000 --- a/wpiunits/src/main/java/edu/wpi/first/units/mutable/GenericMutableMeasureImpl.java +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -package edu.wpi.first.units.mutable; - -import edu.wpi.first.units.ImmutableMeasure; -import edu.wpi.first.units.Measure; -import edu.wpi.first.units.MutableMeasure; -import edu.wpi.first.units.Unit; -import edu.wpi.first.units.measure.Dimensionless; - -/** - * A generic implementation of a mutable measure. This is used in scenarios no unit-specific mutable - * implementation can be determined. - * - * @param the unit of measure - */ -public final class GenericMutableMeasureImpl - extends MutableMeasureBase, GenericMutableMeasureImpl> { - /** - * Initializes the mutable measure with initial conditions. Both relative and base unit magnitudes - * are required to avoid unnecessary calculations. It is up to the caller to ensure they are - * correct. - * - * @param initialValue the initial magnitude of the measure, in terms of the unit - * @param baseUnitMagnitude the initial magnitude of the measure, in terms of the base unit - * @param unit the initial unit of measure - */ - public GenericMutableMeasureImpl(double initialValue, double baseUnitMagnitude, U unit) { - super(initialValue, baseUnitMagnitude, unit); - } - - @Override - public Measure copy() { - return ImmutableMeasure.ofBaseUnits(m_baseUnitMagnitude, m_unit); - } - - @Override - public MutableMeasure mutableCopy() { - return new GenericMutableMeasureImpl<>(m_magnitude, m_baseUnitMagnitude, m_unit); - } - - @Override - public Measure unaryMinus() { - return ImmutableMeasure.ofBaseUnits(0 - m_baseUnitMagnitude, m_unit); - } - - @Override - public Measure plus(Measure other) { - return ImmutableMeasure.ofBaseUnits(m_baseUnitMagnitude + other.baseUnitMagnitude(), m_unit); - } - - @Override - public Measure minus(Measure other) { - return ImmutableMeasure.ofBaseUnits(m_baseUnitMagnitude - other.baseUnitMagnitude(), m_unit); - } - - @Override - public Measure times(double multiplier) { - return ImmutableMeasure.ofBaseUnits(m_baseUnitMagnitude * multiplier, m_unit); - } - - @Override - public Measure times(Dimensionless multiplier) { - return ImmutableMeasure.ofBaseUnits( - m_baseUnitMagnitude * multiplier.baseUnitMagnitude(), m_unit); - } - - @Override - public Measure div(double divisor) { - return ImmutableMeasure.ofBaseUnits(m_baseUnitMagnitude / divisor, m_unit); - } - - @Override - public Measure div(Dimensionless divisor) { - return ImmutableMeasure.ofBaseUnits(m_baseUnitMagnitude / divisor.baseUnitMagnitude(), m_unit); - } -} diff --git a/wpiunits/src/main/java/edu/wpi/first/units/mutable/MutableMeasureBase.java b/wpiunits/src/main/java/edu/wpi/first/units/mutable/MutableMeasureBase.java deleted file mode 100644 index 3314e809b2..0000000000 --- a/wpiunits/src/main/java/edu/wpi/first/units/mutable/MutableMeasureBase.java +++ /dev/null @@ -1,86 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -package edu.wpi.first.units.mutable; - -import edu.wpi.first.units.Measure; -import edu.wpi.first.units.MutableMeasure; -import edu.wpi.first.units.Unit; -import java.util.Objects; - -/** - * A partial implementation of {@link MutableMeasure} to handle most of the state and Java object- - * related implementations. - * - * @param The dimension of measurement. - * @param The base measure type. - * @param The self type. This MUST inherit from the base measure type. - */ -public abstract class MutableMeasureBase< - U extends Unit, Base extends Measure, MutSelf extends MutableMeasure> - implements Measure, MutableMeasure { - /** The magnitude of the measurement, in terms of {@link #m_unit}. */ - protected double m_magnitude; - - /** The magnitude of the measurement, in terms of {@link #m_unit}'s base unit. */ - protected double m_baseUnitMagnitude; - - /** The unit of measurement. */ - protected U m_unit; - - /** - * Initializes the mutable measure with initial conditions. Both relative and base unit magnitudes - * are required to avoid unnecessary calculations. It is up to the caller to ensure they are - * correct. - * - * @param magnitude the initial magnitude of the measure, in terms of the unit - * @param baseUnitMagnitude the initial magnitude of the measure, in terms of the base unit - * @param unit the initial unit of measure - */ - protected MutableMeasureBase(double magnitude, double baseUnitMagnitude, U unit) { - this.m_magnitude = magnitude; - this.m_baseUnitMagnitude = baseUnitMagnitude; - this.m_unit = Objects.requireNonNull(unit, "Unit cannot be null"); - } - - @Override - public double magnitude() { - return m_magnitude; - } - - @Override - public double baseUnitMagnitude() { - return m_baseUnitMagnitude; - } - - @Override - public U unit() { - return m_unit; - } - - @Override - public String toString() { - return toShortString(); - } - - @Override - public boolean equals(Object o) { - return this == o || o instanceof Measure m && isEquivalent(m); - } - - @Override - public int hashCode() { - return Objects.hash(m_magnitude, m_baseUnitMagnitude, m_unit); - } - - @Override - @SuppressWarnings("unchecked") - public MutSelf mut_replace(double magnitude, U newUnit) { - this.m_unit = Objects.requireNonNull(newUnit, "New unit cannot be null"); - this.m_magnitude = magnitude; - this.m_baseUnitMagnitude = m_unit.toBaseUnits(magnitude); - - return (MutSelf) this; - } -} diff --git a/wpiunits/src/test/java/edu/wpi/first/units/ExampleUnit.java b/wpiunits/src/test/java/edu/wpi/first/units/ExampleUnit.java index cc4b272f88..c4e047ff41 100644 --- a/wpiunits/src/test/java/edu/wpi/first/units/ExampleUnit.java +++ b/wpiunits/src/test/java/edu/wpi/first/units/ExampleUnit.java @@ -4,8 +4,6 @@ package edu.wpi.first.units; -import edu.wpi.first.units.mutable.GenericMutableMeasureImpl; - class ExampleUnit extends Unit { ExampleUnit(double baseUnitEquivalent) { this(baseUnitEquivalent, "Example", "ex"); @@ -38,11 +36,6 @@ class ExampleUnit extends Unit { return ImmutableMeasure.ofBaseUnits(baseUnitMagnitude, this); } - @Override - public MutableMeasure mutable(double initialMagnitude) { - return new GenericMutableMeasureImpl<>(initialMagnitude, toBaseUnits(initialMagnitude), this); - } - @Override public VelocityUnit per(TimeUnit time) { return VelocityUnit.combine(this, time);