001// Copyright (c) FIRST and other WPILib contributors.
002// Open Source Software; you can modify and/or share it under the terms of
003// the WPILib BSD license file in the root directory of this project.
004
005// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY
006
007package org.wpilib.units.measure;
008
009import static org.wpilib.units.Units.*;
010import org.wpilib.units.*;
011
012@SuppressWarnings({"unchecked", "cast", "checkstyle"})
013public record Torque(double magnitude, double baseUnitMagnitude, TorqueUnit unit) implements Measure<TorqueUnit> {
014  /**
015   * For doing math with measures of a known dimension but an unknown unit. Most users should use
016   * {@link TorqueUnit#of(double)} on a known unit from {@link Units} instead of calling this method.
017   * @param magnitude the magnitude of the measurement in terms of the given unit
018   * @param unit the unit of the measurement
019   * @return a measurement object
020   */
021  public static  Torque ofRelativeUnits(double magnitude, TorqueUnit unit) {
022    return new Torque(magnitude, unit.toBaseUnits(magnitude), unit);
023  }
024
025  /**
026   * For doing math with measures of a known dimension but an unknown unit. Most users should use
027   * {@link TorqueUnit#of(double)} on a known unit from {@link Units} instead of calling this method.
028   * @param baseUnitMagnitude the magnitude of the measurement in terms of the given unit's base unit
029   * @param unit the unit of the measurement
030   * @return a measurement object
031   */
032  public static  Torque ofBaseUnits(double baseUnitMagnitude, TorqueUnit unit) {
033    return new Torque(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit);
034  }
035
036  @Override
037  public TorqueUnit baseUnit() { return (TorqueUnit) unit().getBaseUnit(); }
038
039  @Override
040  public double in(TorqueUnit unit) {
041    return unit.fromBaseUnits(baseUnitMagnitude());
042  }
043
044  @Override
045  @SuppressWarnings("rawtypes")
046  public boolean equals(Object object) {
047    return object instanceof Torque m && isEquivalent(m);
048  }
049
050  @Override
051  public Torque unaryMinus() {
052    return (Torque) unit().ofBaseUnits(0 - baseUnitMagnitude());
053  }
054
055  @Override
056  public Torque plus(Measure<? extends TorqueUnit> other) {
057    return (Torque) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude());
058  }
059
060  @Override
061  public Torque minus(Measure<? extends TorqueUnit> other) {
062    return (Torque) unit().ofBaseUnits(baseUnitMagnitude() - other.baseUnitMagnitude());
063  }
064
065  @Override
066  public Torque times(double multiplier) {
067    return (Torque) unit().ofBaseUnits(baseUnitMagnitude() * multiplier);
068  }
069
070  @Override
071  public Torque div(double divisor) {
072    return (Torque) unit().ofBaseUnits(baseUnitMagnitude() / divisor);
073  }
074
075
076  @Override
077  public Mult<TorqueUnit, AccelerationUnit<?>> times(Acceleration<?> multiplier) {
078    return (Mult<TorqueUnit, AccelerationUnit<?>>) Measure.super.times(multiplier);
079  }
080
081  @Override
082  public Per<TorqueUnit, AccelerationUnit<?>> div(Acceleration<?> divisor) {
083    return (Per<TorqueUnit, AccelerationUnit<?>>) Measure.super.div(divisor);
084  }
085
086  @Override
087  public Per<TorqueUnit, AccelerationUnit<?>> per(AccelerationUnit<?> divisorUnit) {
088    return div(divisorUnit.one());
089  }
090
091
092  @Override
093  public Mult<TorqueUnit, AngleUnit> times(Angle multiplier) {
094    return (Mult<TorqueUnit, AngleUnit>) Measure.super.times(multiplier);
095  }
096
097  @Override
098  public Per<TorqueUnit, AngleUnit> div(Angle divisor) {
099    return (Per<TorqueUnit, AngleUnit>) Measure.super.div(divisor);
100  }
101
102  @Override
103  public Per<TorqueUnit, AngleUnit> per(AngleUnit divisorUnit) {
104    return div(divisorUnit.one());
105  }
106
107
108  @Override
109  public Mult<TorqueUnit, AngularAccelerationUnit> times(AngularAcceleration multiplier) {
110    return (Mult<TorqueUnit, AngularAccelerationUnit>) Measure.super.times(multiplier);
111  }
112
113  @Override
114  public Per<TorqueUnit, AngularAccelerationUnit> div(AngularAcceleration divisor) {
115    return (Per<TorqueUnit, AngularAccelerationUnit>) Measure.super.div(divisor);
116  }
117
118  @Override
119  public Per<TorqueUnit, AngularAccelerationUnit> per(AngularAccelerationUnit divisorUnit) {
120    return div(divisorUnit.one());
121  }
122
123
124  @Override
125  public Mult<TorqueUnit, AngularMomentumUnit> times(AngularMomentum multiplier) {
126    return (Mult<TorqueUnit, AngularMomentumUnit>) Measure.super.times(multiplier);
127  }
128
129  @Override
130  public Per<TorqueUnit, AngularMomentumUnit> div(AngularMomentum divisor) {
131    return (Per<TorqueUnit, AngularMomentumUnit>) Measure.super.div(divisor);
132  }
133
134  @Override
135  public Per<TorqueUnit, AngularMomentumUnit> per(AngularMomentumUnit divisorUnit) {
136    return div(divisorUnit.one());
137  }
138
139
140  @Override
141  public Mult<TorqueUnit, AngularVelocityUnit> times(AngularVelocity multiplier) {
142    return (Mult<TorqueUnit, AngularVelocityUnit>) Measure.super.times(multiplier);
143  }
144
145  @Override
146  public Per<TorqueUnit, AngularVelocityUnit> div(AngularVelocity divisor) {
147    return (Per<TorqueUnit, AngularVelocityUnit>) Measure.super.div(divisor);
148  }
149
150  @Override
151  public Per<TorqueUnit, AngularVelocityUnit> per(AngularVelocityUnit divisorUnit) {
152    return div(divisorUnit.one());
153  }
154
155
156  @Override
157  public Mult<TorqueUnit, CurrentUnit> times(Current multiplier) {
158    return (Mult<TorqueUnit, CurrentUnit>) Measure.super.times(multiplier);
159  }
160
161  @Override
162  public Per<TorqueUnit, CurrentUnit> div(Current divisor) {
163    return (Per<TorqueUnit, CurrentUnit>) Measure.super.div(divisor);
164  }
165
166  @Override
167  public Per<TorqueUnit, CurrentUnit> per(CurrentUnit divisorUnit) {
168    return div(divisorUnit.one());
169  }
170
171  @Override
172  public Torque div(Dimensionless divisor) {
173    return (Torque) NewtonMeters.of(baseUnitMagnitude() / divisor.baseUnitMagnitude());
174  }
175
176  @Override
177  public Torque times(Dimensionless multiplier) {
178    return (Torque) NewtonMeters.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude());
179  }
180
181
182  @Override
183  public Mult<TorqueUnit, DistanceUnit> times(Distance multiplier) {
184    return (Mult<TorqueUnit, DistanceUnit>) Measure.super.times(multiplier);
185  }
186
187  @Override
188  public Force div(Distance divisor) {
189    return Newtons.of(baseUnitMagnitude() / divisor.baseUnitMagnitude());
190  }
191
192  @Override
193  public Force per(DistanceUnit divisorUnit) {
194    return div(divisorUnit.one());
195  }
196
197
198  @Override
199  public Mult<TorqueUnit, EnergyUnit> times(Energy multiplier) {
200    return (Mult<TorqueUnit, EnergyUnit>) Measure.super.times(multiplier);
201  }
202
203  @Override
204  public Per<TorqueUnit, EnergyUnit> div(Energy divisor) {
205    return (Per<TorqueUnit, EnergyUnit>) Measure.super.div(divisor);
206  }
207
208  @Override
209  public Per<TorqueUnit, EnergyUnit> per(EnergyUnit divisorUnit) {
210    return div(divisorUnit.one());
211  }
212
213
214  @Override
215  public Mult<TorqueUnit, ForceUnit> times(Force multiplier) {
216    return (Mult<TorqueUnit, ForceUnit>) Measure.super.times(multiplier);
217  }
218
219  @Override
220  public Distance div(Force divisor) {
221    return Meters.of(baseUnitMagnitude() / divisor.baseUnitMagnitude());
222  }
223
224  @Override
225  public Distance per(ForceUnit divisorUnit) {
226    return div(divisorUnit.one());
227  }
228
229
230  @Override
231  public Mult<TorqueUnit, FrequencyUnit> times(Frequency multiplier) {
232    return (Mult<TorqueUnit, FrequencyUnit>) Measure.super.times(multiplier);
233  }
234
235  @Override
236  public Per<TorqueUnit, FrequencyUnit> div(Frequency divisor) {
237    return (Per<TorqueUnit, FrequencyUnit>) Measure.super.div(divisor);
238  }
239
240  @Override
241  public Per<TorqueUnit, FrequencyUnit> per(FrequencyUnit divisorUnit) {
242    return div(divisorUnit.one());
243  }
244
245
246  @Override
247  public Mult<TorqueUnit, LinearAccelerationUnit> times(LinearAcceleration multiplier) {
248    return (Mult<TorqueUnit, LinearAccelerationUnit>) Measure.super.times(multiplier);
249  }
250
251  @Override
252  public Per<TorqueUnit, LinearAccelerationUnit> div(LinearAcceleration divisor) {
253    return (Per<TorqueUnit, LinearAccelerationUnit>) Measure.super.div(divisor);
254  }
255
256  @Override
257  public Per<TorqueUnit, LinearAccelerationUnit> per(LinearAccelerationUnit divisorUnit) {
258    return div(divisorUnit.one());
259  }
260
261
262  @Override
263  public Mult<TorqueUnit, LinearMomentumUnit> times(LinearMomentum multiplier) {
264    return (Mult<TorqueUnit, LinearMomentumUnit>) Measure.super.times(multiplier);
265  }
266
267  @Override
268  public Per<TorqueUnit, LinearMomentumUnit> div(LinearMomentum divisor) {
269    return (Per<TorqueUnit, LinearMomentumUnit>) Measure.super.div(divisor);
270  }
271
272  @Override
273  public Per<TorqueUnit, LinearMomentumUnit> per(LinearMomentumUnit divisorUnit) {
274    return div(divisorUnit.one());
275  }
276
277
278  @Override
279  public Mult<TorqueUnit, LinearVelocityUnit> times(LinearVelocity multiplier) {
280    return (Mult<TorqueUnit, LinearVelocityUnit>) Measure.super.times(multiplier);
281  }
282
283  @Override
284  public Per<TorqueUnit, LinearVelocityUnit> div(LinearVelocity divisor) {
285    return (Per<TorqueUnit, LinearVelocityUnit>) Measure.super.div(divisor);
286  }
287
288  @Override
289  public Per<TorqueUnit, LinearVelocityUnit> per(LinearVelocityUnit divisorUnit) {
290    return div(divisorUnit.one());
291  }
292
293
294  @Override
295  public Mult<TorqueUnit, MassUnit> times(Mass multiplier) {
296    return (Mult<TorqueUnit, MassUnit>) Measure.super.times(multiplier);
297  }
298
299  @Override
300  public Per<TorqueUnit, MassUnit> div(Mass divisor) {
301    return (Per<TorqueUnit, MassUnit>) Measure.super.div(divisor);
302  }
303
304  @Override
305  public Per<TorqueUnit, MassUnit> per(MassUnit divisorUnit) {
306    return div(divisorUnit.one());
307  }
308
309
310  @Override
311  public Mult<TorqueUnit, MomentOfInertiaUnit> times(MomentOfInertia multiplier) {
312    return (Mult<TorqueUnit, MomentOfInertiaUnit>) Measure.super.times(multiplier);
313  }
314
315  @Override
316  public Per<TorqueUnit, MomentOfInertiaUnit> div(MomentOfInertia divisor) {
317    return (Per<TorqueUnit, MomentOfInertiaUnit>) Measure.super.div(divisor);
318  }
319
320  @Override
321  public Per<TorqueUnit, MomentOfInertiaUnit> per(MomentOfInertiaUnit divisorUnit) {
322    return div(divisorUnit.one());
323  }
324
325
326  @Override
327  public Mult<TorqueUnit, MultUnit<?, ?>> times(Mult<?, ?> multiplier) {
328    return (Mult<TorqueUnit, MultUnit<?, ?>>) Measure.super.times(multiplier);
329  }
330
331  @Override
332  public Per<TorqueUnit, MultUnit<?, ?>> div(Mult<?, ?> divisor) {
333    return (Per<TorqueUnit, MultUnit<?, ?>>) Measure.super.div(divisor);
334  }
335
336  @Override
337  public Per<TorqueUnit, MultUnit<?, ?>> per(MultUnit<?, ?> divisorUnit) {
338    return div(divisorUnit.ofNative(1));
339  }
340
341
342  @Override
343  public Mult<TorqueUnit, PerUnit<?, ?>> times(Per<?, ?> multiplier) {
344    return (Mult<TorqueUnit, PerUnit<?, ?>>) Measure.super.times(multiplier);
345  }
346
347  @Override
348  public Per<TorqueUnit, PerUnit<?, ?>> div(Per<?, ?> divisor) {
349    return (Per<TorqueUnit, PerUnit<?, ?>>) Measure.super.div(divisor);
350  }
351
352  @Override
353  public Per<TorqueUnit, PerUnit<?, ?>> per(PerUnit<?, ?> divisorUnit) {
354    return div(divisorUnit.ofNative(1));
355  }
356
357
358  @Override
359  public Mult<TorqueUnit, PowerUnit> times(Power multiplier) {
360    return (Mult<TorqueUnit, PowerUnit>) Measure.super.times(multiplier);
361  }
362
363  @Override
364  public Per<TorqueUnit, PowerUnit> div(Power divisor) {
365    return (Per<TorqueUnit, PowerUnit>) Measure.super.div(divisor);
366  }
367
368  @Override
369  public Per<TorqueUnit, PowerUnit> per(PowerUnit divisorUnit) {
370    return div(divisorUnit.one());
371  }
372
373
374  @Override
375  public Mult<TorqueUnit, ResistanceUnit> times(Resistance multiplier) {
376    return (Mult<TorqueUnit, ResistanceUnit>) Measure.super.times(multiplier);
377  }
378
379  @Override
380  public Per<TorqueUnit, ResistanceUnit> div(Resistance divisor) {
381    return (Per<TorqueUnit, ResistanceUnit>) Measure.super.div(divisor);
382  }
383
384  @Override
385  public Per<TorqueUnit, ResistanceUnit> per(ResistanceUnit divisorUnit) {
386    return div(divisorUnit.one());
387  }
388
389
390  @Override
391  public Mult<TorqueUnit, TemperatureUnit> times(Temperature multiplier) {
392    return (Mult<TorqueUnit, TemperatureUnit>) Measure.super.times(multiplier);
393  }
394
395  @Override
396  public Per<TorqueUnit, TemperatureUnit> div(Temperature divisor) {
397    return (Per<TorqueUnit, TemperatureUnit>) Measure.super.div(divisor);
398  }
399
400  @Override
401  public Per<TorqueUnit, TemperatureUnit> per(TemperatureUnit divisorUnit) {
402    return div(divisorUnit.one());
403  }
404
405
406  @Override
407  public Mult<TorqueUnit, TimeUnit> times(Time multiplier) {
408    return (Mult<TorqueUnit, TimeUnit>) Measure.super.times(multiplier);
409  }
410
411  @Override
412  public Velocity<TorqueUnit> div(Time divisor) {
413    return VelocityUnit.combine(unit(), divisor.unit()).ofBaseUnits(baseUnitMagnitude() / divisor.baseUnitMagnitude());
414  }
415
416  @Override
417  public Velocity<TorqueUnit> per(TimeUnit divisorUnit) {
418    return div(divisorUnit.one());
419  }
420
421
422  @Override
423  public Mult<TorqueUnit, TorqueUnit> times(Torque multiplier) {
424    return (Mult<TorqueUnit, TorqueUnit>) Measure.super.times(multiplier);
425  }
426
427  @Override
428  public Dimensionless div(Torque divisor) {
429    return Value.of(baseUnitMagnitude() / divisor.baseUnitMagnitude());
430  }
431
432  @Override
433  public Dimensionless per(TorqueUnit divisorUnit) {
434    return div(divisorUnit.one());
435  }
436
437
438  @Override
439  public Mult<TorqueUnit, VelocityUnit<?>> times(Velocity<?> multiplier) {
440    return (Mult<TorqueUnit, VelocityUnit<?>>) Measure.super.times(multiplier);
441  }
442
443  @Override
444  public Per<TorqueUnit, VelocityUnit<?>> div(Velocity<?> divisor) {
445    return (Per<TorqueUnit, VelocityUnit<?>>) Measure.super.div(divisor);
446  }
447
448  @Override
449  public Per<TorqueUnit, VelocityUnit<?>> per(VelocityUnit<?> divisorUnit) {
450    return div(divisorUnit.one());
451  }
452
453
454  @Override
455  public Mult<TorqueUnit, VoltageUnit> times(Voltage multiplier) {
456    return (Mult<TorqueUnit, VoltageUnit>) Measure.super.times(multiplier);
457  }
458
459  @Override
460  public Per<TorqueUnit, VoltageUnit> div(Voltage divisor) {
461    return (Per<TorqueUnit, VoltageUnit>) Measure.super.div(divisor);
462  }
463
464  @Override
465  public Per<TorqueUnit, VoltageUnit> per(VoltageUnit divisorUnit) {
466    return div(divisorUnit.one());
467  }
468
469}