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