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}