| 82 | } |
| 83 | |
| 84 | static auto getLengthDependentUnit() |
| 85 | { |
| 86 | return overloaded{ |
| 87 | // All length-related unit types must be listed here. |
| 88 | [] <std::same_as<LengthUnit>>( LengthUnit unit ) |
| 89 | { |
| 90 | return unit; |
| 91 | }, |
| 92 | []<std::same_as<AreaUnit>>( LengthUnit unit ) |
| 93 | { |
| 94 | switch ( unit ) |
| 95 | { |
| 96 | case LengthUnit::microns: return AreaUnit::microns2; |
| 97 | case LengthUnit::millimeters: return AreaUnit::millimeters2; |
| 98 | case LengthUnit::centimeters: return AreaUnit::centimeters2; |
| 99 | case LengthUnit::meters: return AreaUnit::meters2; |
| 100 | case LengthUnit::inches: return AreaUnit::inches2; |
| 101 | case LengthUnit::feet: return AreaUnit::feet2; |
| 102 | case LengthUnit::_count:; // MSVC warns otherwise. |
| 103 | } |
| 104 | assert( false ); |
| 105 | return AreaUnit::millimeters2; |
| 106 | }, |
| 107 | []<std::same_as<VolumeUnit>>( LengthUnit unit ) |
| 108 | { |
| 109 | switch ( unit ) |
| 110 | { |
| 111 | case LengthUnit::microns: return VolumeUnit::microns3; |
| 112 | case LengthUnit::millimeters: return VolumeUnit::millimeters3; |
| 113 | case LengthUnit::centimeters: return VolumeUnit::centimeters3; |
| 114 | case LengthUnit::meters: return VolumeUnit::meters3; |
| 115 | case LengthUnit::inches: return VolumeUnit::inches3; |
| 116 | case LengthUnit::feet: return VolumeUnit::feet3; |
| 117 | case LengthUnit::_count:; // MSVC warns otherwise. |
| 118 | } |
| 119 | assert( false ); |
| 120 | return VolumeUnit::millimeters3; |
| 121 | }, |
| 122 | []<std::same_as<MovementSpeedUnit>>( LengthUnit unit ) |
| 123 | { |
| 124 | switch ( unit ) |
| 125 | { |
| 126 | case LengthUnit::microns: return MovementSpeedUnit::micronsPerSecond; |
| 127 | case LengthUnit::millimeters: return MovementSpeedUnit::millimetersPerSecond; |
| 128 | case LengthUnit::centimeters: return MovementSpeedUnit::centimetersPerSecond; |
| 129 | case LengthUnit::meters: return MovementSpeedUnit::metersPerSecond; |
| 130 | case LengthUnit::inches: return MovementSpeedUnit::inchesPerSecond; |
| 131 | case LengthUnit::feet: return MovementSpeedUnit::feetPerSecond; |
| 132 | case LengthUnit::_count:; // MSVC warns otherwise. |
| 133 | } |
| 134 | assert( false ); |
| 135 | return MovementSpeedUnit::millimetersPerSecond; |
| 136 | }, |
| 137 | []<std::same_as<InvLengthUnit>>( LengthUnit unit ) |
| 138 | { |
| 139 | switch ( unit ) |
| 140 | { |
| 141 | case LengthUnit::microns: return InvLengthUnit::inv_microns; |
no outgoing calls
no test coverage detected