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:
Chip Hogg
2022-07-07 16:33:51 +00:00
parent 407a13c48f
commit e1a17ab1f0

View File

@@ -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("]");
} }
} }