forked from mpusz/mp-units
Use variables instead of ratio members
This prepares us for a time when we won't _have_ the `ratio` members (because we'll be using `Magnitude`).
This commit is contained in:
@@ -35,21 +35,25 @@ inline constexpr basic_symbol_text base_multiplier("\u00D7 10", "x 10");
|
|||||||
template<ratio R>
|
template<ratio R>
|
||||||
constexpr auto ratio_text()
|
constexpr auto ratio_text()
|
||||||
{
|
{
|
||||||
if constexpr (R.num == 1 && R.den == 1 && R.exp != 0) {
|
constexpr auto num_value = R.num;
|
||||||
return base_multiplier + superscript<R.exp>();
|
constexpr auto den_value = R.den;
|
||||||
} else if constexpr (R.num != 1 || R.den != 1 || R.exp != 0) {
|
constexpr auto exp10 = R.exp;
|
||||||
auto txt = basic_fixed_string("[") + regular<R.num>();
|
|
||||||
if constexpr (R.den == 1) {
|
if constexpr (num_value == 1 && den_value == 1 && exp10 != 0) {
|
||||||
if constexpr (R.exp == 0) {
|
return base_multiplier + superscript<exp10>();
|
||||||
|
} else if constexpr (num_value != 1 || den_value != 1 || exp10 != 0) {
|
||||||
|
auto txt = basic_fixed_string("[") + regular<num_value>();
|
||||||
|
if constexpr (den_value == 1) {
|
||||||
|
if constexpr (exp10 == 0) {
|
||||||
return txt + basic_fixed_string("]");
|
return txt + basic_fixed_string("]");
|
||||||
} else {
|
} else {
|
||||||
return txt + " " + base_multiplier + superscript<R.exp>() + basic_fixed_string("]");
|
return txt + " " + base_multiplier + superscript<exp10>() + basic_fixed_string("]");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if constexpr (R.exp == 0) {
|
if constexpr (exp10 == 0) {
|
||||||
return txt + basic_fixed_string("/") + regular<R.den>() + basic_fixed_string("]");
|
return txt + basic_fixed_string("/") + regular<den_value>() + basic_fixed_string("]");
|
||||||
} else {
|
} else {
|
||||||
return txt + basic_fixed_string("/") + regular<R.den>() + " " + base_multiplier + superscript<R.exp>() +
|
return txt + basic_fixed_string("/") + regular<den_value>() + " " + base_multiplier + superscript<exp10>() +
|
||||||
basic_fixed_string("]");
|
basic_fixed_string("]");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user