From a6284aa2937008f16f2447db9c9c851750f98416 Mon Sep 17 00:00:00 2001 From: Mateusz Pusz Date: Wed, 13 Sep 2023 10:43:08 +0200 Subject: [PATCH] refactor: some `value_cast(q)` replaced with `q.force_in(U)` --- example/avg_speed.cpp | 10 +++++----- example/glide_computer.cpp | 4 ++-- example/total_energy.cpp | 2 +- src/utility/include/mp-units/math.h | 14 +++++++------- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/example/avg_speed.cpp b/example/avg_speed.cpp index e9ef5e01..c59bacb7 100644 --- a/example/avg_speed.cpp +++ b/example/avg_speed.cpp @@ -56,7 +56,7 @@ constexpr QuantityOf auto avg_speed(QuantityOf auto d, template D, QuantityOf T, QuantityOf V> void print_result(D distance, T duration, V speed) { - const auto result_in_kmph = value_cast / non_si::hour>(speed); + const auto result_in_kmph = speed.force_in(si::kilo / non_si::hour); std::cout << "Average speed of a car that makes " << distance << " in " << duration << " is " << result_in_kmph << ".\n"; } @@ -101,7 +101,7 @@ void example() // it is not possible to make a lossless conversion of miles to meters on an integral type // (explicit cast needed) - print_result(distance, duration, fixed_int_si_avg_speed(value_cast(distance), duration)); + print_result(distance, duration, fixed_int_si_avg_speed(distance.force_in(m), duration)); print_result(distance, duration, fixed_double_si_avg_speed(distance, duration)); print_result(distance, duration, avg_speed(distance, duration)); } @@ -119,7 +119,7 @@ void example() // also it is not possible to make a lossless conversion of miles to meters on an integral type // (explicit cast needed) print_result(distance, duration, - fixed_int_si_avg_speed(value_cast(value_cast(distance)), value_cast(duration))); + fixed_int_si_avg_speed(value_cast(distance.force_in(m)), value_cast(duration))); print_result(distance, duration, fixed_double_si_avg_speed(distance, duration)); print_result(distance, duration, avg_speed(distance, duration)); } @@ -133,7 +133,7 @@ void example() // it is not possible to make a lossless conversion of centimeters to meters on an integral type // (explicit cast needed) - print_result(distance, duration, fixed_int_si_avg_speed(value_cast(distance), duration)); + print_result(distance, duration, fixed_int_si_avg_speed(distance.force_in(m), duration)); print_result(distance, duration, fixed_double_si_avg_speed(distance, duration)); print_result(distance, duration, avg_speed(distance, duration)); } @@ -149,7 +149,7 @@ void example() // it is not possible to make a lossless conversion of centimeters to meters on an integral type // (explicit cast needed) print_result(distance, duration, - fixed_int_si_avg_speed(value_cast(value_cast(distance)), value_cast(duration))); + fixed_int_si_avg_speed(value_cast(distance.force_in(m)), value_cast(duration))); print_result(distance, duration, fixed_double_si_avg_speed(distance, duration)); print_result(distance, duration, avg_speed(distance, duration)); diff --git a/example/glide_computer.cpp b/example/glide_computer.cpp index 51486f8b..69231828 100644 --- a/example/glide_computer.cpp +++ b/example/glide_computer.cpp @@ -83,12 +83,12 @@ void print(const R& gliders) std::cout << "- Name: " << g.name << "\n"; std::cout << "- Polar:\n"; for (const auto& p : g.polar) { - const auto ratio = value_cast(glide_ratio(g.polar[0])); + const auto ratio = glide_ratio(g.polar[0]).force_in(one); std::cout << MP_UNITS_STD_FMT::format(" * {:%.4Q %q} @ {:%.1Q %q} -> {:%.1Q %q} ({:%.1Q %q})\n", p.climb, p.v, ratio, // TODO is it possible to make ADL work below (we need another set of trig // functions for strong angle in a different namespace) - value_cast(isq::asin(1 / ratio))); + isq::asin(1 / ratio).force_in(si::degree)); } std::cout << "\n"; } diff --git a/example/total_energy.cpp b/example/total_energy.cpp index 9d6a9f8b..fa83a6cd 100644 --- a/example/total_energy.cpp +++ b/example/total_energy.cpp @@ -80,7 +80,7 @@ void si_example() << "E = " << E3 << "\n"; std::cout << "\n[converted from SI units back to GeV]\n" - << "E = " << value_cast(E3) << "\n"; + << "E = " << E3.force_in(GeV) << "\n"; } void natural_example() diff --git a/src/utility/include/mp-units/math.h b/src/utility/include/mp-units/math.h index 0c7c37f6..77c8afcd 100644 --- a/src/utility/include/mp-units/math.h +++ b/src/utility/include/mp-units/math.h @@ -162,7 +162,7 @@ template requires { std::floor(q.numerical_value_ref_in(q.unit)); }) && (To == get_unit(R) || requires { - ::mp_units::value_cast(q); + q.force_in(To); quantity_values::one(); }) { @@ -183,9 +183,9 @@ template } } else { if constexpr (To == get_unit(R)) { - return value_cast(q); + return q.force_in(To); } else { - return handle_signed_results(value_cast(q)); + return handle_signed_results(q.force_in(To)); } } } @@ -202,7 +202,7 @@ template requires { std::ceil(q.numerical_value_ref_in(q.unit)); }) && (To == get_unit(R) || requires { - ::mp_units::value_cast(q); + q.force_in(To); quantity_values::one(); }) { @@ -223,9 +223,9 @@ template } } else { if constexpr (To == get_unit(R)) { - return value_cast(q); + return q.force_in(To); } else { - return handle_signed_results(value_cast(q)); + return handle_signed_results(q.force_in(To)); } } } @@ -254,7 +254,7 @@ template return make_quantity(R)>( static_cast(round(q.numerical_value_ref_in(q.unit)))); } else { - return value_cast(q); + return q.force_in(To); } } else { const auto res_low = mp_units::floor(q);